a[j++]=a[i];/*若不是要删除的字符'*'则留下*/ a[j]='\\0'; }
二级 C_第51套上机题
【参考答案】计算N×N矩阵的主对角线元素和反向对角线元素之和,并作
为函数值返回
(1) sum=0 (2) t[i][i] (3) 1 【参考答案】用二分法求方程
的一个根,并要求绝对误差不超过0.001。 (1)double r ;
(2)while (fabs(n-m) >0.001)
【参考答案】除了字符串前导和尾部的*号外,将串中其它的*号全部删除 。
void fun( char *a, char *h,char *p ) { int i=0; char *q=a; while(q { a[i]=*q; q++;i++;} while(q while(*q) { a[i]=*q; i++; q++;} a[i]='\\0'; } 二级 C_第52套上机题 【参考答案】将N×N矩阵主对角线元素的值与反向对角线对应位置上元素 的值进行交换。 (1) t[][N] (2) i=0;i 回其下标值;否则,返回-1。 (1)int fun(int a[],int m)或fun(int a[],int m) (2)else if(m>a[mid]) 【参考答案】除了尾部的*号之外,将字符中的其它的*号全部删除 void fun( char *a, char *p ) { char *t=a; for(;t<=p;t++) if(*t!='*') *(a++)=*t; for(;*t!='\\0';t++) *(a++)=*t; *a='\\0'; /*在字符串最后加上字符串结束标识*/ } 二级 C_第53套上机题 【参考答案】判断形参s所指字符串是否是\回文\,若是, 函数返回值为1;不是,函数返回值为0 (1)s (2)-- (3)return 0 【参考答案】若n=5,则应输出8.391667。 (1)double fun(int n) (2)s=s+(double)a/b; 【参考答案】将大于整数m且紧靠m的k个素数存入所指的数组中。 例如,若输入17,5,则应输出19、23、29、31、37。 void fun(int m,int k,int xx[]) { int i,j,n; for(i=m+1,n=0;n k个素数*/ {for(j=2;j 环,判断下一个数*/ if(i%j==0) break; if(j>=i) /*如果是素数,放入数组xx中*/ xx[n++]=i; } } 二级 C_第54套上机题 【参考答案】:找出100~999之间(含100和999)所有整数中各位上数字之 和为x(x为正整数)的整数,并输出;符合条件的整数个数作为函数值返回 。 (1) 999 (2) t/10 (3) x 【参考答案】从低位开始依次取出长整型变量s中偶数位上的数,构成一 个新数放在t中。高位仍在高位,低位仍在低位 (1)void fun(long s,long *t) (2)while(s>0) 【参考答案】按分数降序排列学生的记录,高分在前,低分在后。 void fun( STREC a[] ) { int i,j; STREC t; for(i=1;i 高分在前*/ } 二级 C_第55套上机题 【参考答案】把形参a所指数组中的最小值放在元素a[0]中,接着把a所指 数组中的最大值放在a[1]元素中 (1) a[i] (2) a[j] (3) a[j] 【参考答案】用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐 波拉契数列为:1、1、2、3、5、8、13、21、…… 例如,若给n输入7,则该项的斐波拉契数值为13。 (1)去掉分号 (2)case 1:case 2:return 1; 【参考答案】求出该学生的平均分,并放入记录的ave成员中。 void fun(STREC *a) { int i; a->ave=0.0; for(i=0;i a->ave=a->ave+a->s[i]; /*求各门成绩的总和*/ a->ave/=N;/*求平均分*/ } 二级 C_第56套上机题 【参考答案】把形参s所指字符串中最右边的n个字符复制到形参t所指字 符数组中,形成一个新串。 (1)t,s (2)s[i] (3)0或'\\0' 【参考答案】找出一个大于给定整数m且紧随m的素数,并作为函数值返回 。 (1)if(i%k==0) (2)if(k==i) 【参考答案】根据以下公式求P的值,结果由函数值带回。m与n为两个正 整数且要求m>n。 例如:m=12,n=8时,运行结果为495.000000 long jc(int m) { long s=1; int i ; for(i=1;i<=m;i++) s=s*i ; return s; } float fun(int m, int n) { float p; p=1.0*jc(m)/jc(n)/jc(m-n) ; return p; } 二级 C_第60套上机题 【参考答案】将形参s所指字符串中的数字字符转换成对应的数值,计算 出这些数值的累加和作为函数值返回 (1)48 (2)s++ (3)sum 【参考答案】计算并输出k以内最大的10个能被13或17整除的自然数之和 。k的值由主函数传入 (1)if((k==0)||(k==0)) (2)} 【参考答案】求小于形参n同时能被3与7整除的所有自然数之和的平方根 ,并作为函数值返回。 double fun( int n) { double sum=0.0; int i; for(i=21; i<=n; i++) if((i % 3==0) && (i % 7==0)) sum+=i; return sqrt(sum); } 二级 C_第61套上机题 【参考答案】 (1)*s (2)1 (3)k[n] 找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出 其出现的次数。 【参考答案】求S的值。 S=(22/(1×3))×(42/(3×5))×(62/(5×7))×…×(2k)2/((2k-1)× (2k+1)) (1)double fun(int k) (2)return s ; 【参考答案】计算并输出下列多项式的值。 S=1/(1×2)+1/(2×3)+…+1/(n×(n+1)) double fun(int n) { int i; double s=0.0; for(i=1;i<=n;i++) s=s+1.0/(i*(i+1)); /*求级数的和*/ return s; } 二级 C_第62套上机题 【参考答案】将形参a所指结构体变量中的数据赋给函数中的结构体变量b ,并修改b中的学号和姓名,最后输出修改后的数据。 (1) a (2) b.name (3) score[i] 【参考答案】删除s所指字符中所有的小写字母c 。 请改正程序中的错误,使它能得出正确的结果。 (1)s[j++]=s[i];或{s[j]=s[i];j++;} (2)s[j]= '\\0'; 【参考答案】将字符串中的前导*号全部移到字符串的尾部。 void fun( char *a ) { int i=0,n=0; char *p; p=a; while (*p=='*') /*判断*p是否是*号,并统计*号的个数*/ { n++;p++; } while(*p) /*将前导*号后的字符传递给a*/ { a[i]=*p;i++;p++; } while(n!=0) { a[i]='*';i++;n--; } a[i]='\\0';