二级C语言考试机试精简版(1) - 图文(2)

2019-08-29 20:38

47.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。 8门课程平均分78.875 int i ; for(i = 0 ; i < N ; i++) a->ave = a->ave + a->s[i] ; a->ave /= N ; a[i] a[j] a[j] switch(g) case 1: case 2:return 1; 49.请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中。 低于平均分的学生数据 int i ; double ave = 0.0 ; *n = 0 ; for(i = 0 ; i < N ; i++) ave = ave + a[i].s ; ave /= N ; for(i = 0 ; i < N ; i++) if(a[i].s < ave) { b[*n]=a[i] ; (*n)++; } return ave ; *a 2 i+1 sum=0.0; if((i+1)%5==0) 51.请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。 找出学生最高分由函数值返回 double max=h->s; STREC *p; p=h->next; while(p) { if(p->s>max ) max=p->s; p=p->next; } return max; fp = = fp n=strlen(aa) ; ch=aa[i]; 53.请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。 高于等于平均分的学生数据 double t=0 ; int i ; *n = 0 ; for(i = 0 ; i < N ; i++) t = t + a[i].s ; t = t / N ; for(i = 0 ; i < N ; i++) if(a[i].s > t) b[(*n)++] = a[i] ; return t ; ->sno ->name &t double fun(double a, double x0) if( fabs(x1-x0)>0.00001 ) 55.请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。 找出成绩最低学生纪录 int i, min = a[0].s, j = 0; for(i = 1 ; i < N ; i++) if(min > a[i].s) { j = i ; min = a[i].s ; } *s = a[j] ; 0 x[i]/N j++ double fun(int m) for( i = 100;I <= m;i += 100 ) 48.请编写函数fun,该函数的功能是:找出成绩最高的学生记录。 找出成绩最高学生纪录(规定只有一个最高分) int i, max = a[0].s, j = 0; for(i = 1 ; i < N ; i++) if(max < a[i].s) { j = i ; max = a[i].s ; } *s = a[j] ; std[i].year std[i] n IsPrime ( int n ) if(!( n%i )) 50.请编写函数fun,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不只一个,函数返回分数最高的学生的人数。 把分数最高学生数据放在b所指数组中,分数最高的学生可能不只一个 int i, max = a[0].s, n=0; for(i = 1; i < N; i++) if(max < a[i].s) max = a[i].s ; for(i = 0; i < N; i++) if(max==a[i].s) b[n++] = a[i] ; return n; 1 i t float k; if(*a<*c) 52.请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。 低于平均分的人作为函数值返回 float av=0.0 ; int i, j=0 ; for(i=0; iscore[i]) below[j++]=score[i]; return j; j 0 i++ for(i=2; i<=m; i++) y-=1.0/(i*i); 54.请编写函数fun,它的功能是:把分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。 分数最低学生数据放在b所指数组 int i, j = 0, min=a[0].s ; for(i = 0 ; i < N; i++) { if(min > a[i].s) { j = 0 ; b[j++] = a[i] ; min = a[i].s ; } else if(min == a[i].s) b[j++] = a[i] ; } return j ; struct student a.name a.score[i] if(p==n) return -1; a[i]=a[i+1]; 56请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。 按分数高低排列学生纪录,高分在前 STREC tmp; int i,j; for(i = 0; i < N; i++) for(j = i+1; j < N; j++) if(a[i].s < a[j].s) {tmp = a[i]; a[i] = a[j]; a[j] = tmp; } 999 t/10 x void fun (long s, long *t) while(s>0) 6

57.请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。 返回指定学号学生数据 STREC c ; int i ; c.num[0] = '\\0' ; c.s = -1 ; for(i = 0 ; i < N ; i++) if(strcmp(a[i].num, b)==0) { strcpy(c.num, a[i].num) ; c.s=a[i].s; break ; } return c ; n/2 i a[n-i-1] n= *p-'0'; n=n*8+*p-'0'; 58.请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 指定分数范围内的数据 int i,j = 0 ; for(i = 0 ; i < N ; i++) if(a[i].s >= l && a[i].s <= h) b[j++] = a[i] ; return j ; struct student n-1 a[i].name,a[j].name q=p+i; while(q>p) 类型六:字符和字符串操作 程序题59.请编写一个函数fun,它的功能是:比较两个字符串60.编写函数fun,该函数的功能是:从字符串中删除指定的字的长度,返回较长的字符串。若两个字符串长度相同,则返回第符。同一字母的大、小写按不同字符处理。 一个字符串。 删除给定的字符 char *p = s ; int i = 0 ; 返回较长字符串 while(*p) 编程题答案 { if(*p != c) s[i++] = *p ; int i; char *p=s, *q=t; p++ ; } for(i=0;*p && *q; i++) { p++; q++; } s[i] = 0 ; if(*p == 0 && *q == 0) return s ; if(*p) return s ; k len ss[i][j] else return t ; 填空题答案 next t->data t result *=n--; 改错题答案 result fun (char *a) printf(\,*a) ; 61.请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。 求ss指定字符个数 int cnt = 0 ; char *p = ss ; while(*p) { if(*p == c) cnt++ ; p++ ; } return cnt ; j++ s[i]=t1[i] j for (j = i + 1;j < 6;j++) *(pstr+i)=*(pstr+j); 63.请编写一个函数void fun(char a[],char b[],int n),其功能是:删除一个字符串中指定下标的字符。 删除指定下标字符 strncpy(b, a, n) ; b[n] = 0 ; strcat(b, a + n + 1) ; t=i i '\\0' while(fabs(t)>=num) t=s/n; 65.请编写函数fun,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。 M个字符串合并成新串 int i; *b=0; for(i = 0 ; i < M ; i++) strcat(b, a[i]) ; next 0 r r=t; if(*r==0) 62.请编写一个函数void fun(char *tt,int pp[]),统计在字符串中'a'到'z'26个字母各自出现的次数,并依次放在pp所指数组中。 统计26个字母出现次数 char *p = tt ; int i ; for(i = 0 ; i < 26 ; i++) pp[i] = 0 ; while(*p) { if(*p >= 'a' && *p <= 'z') pp[*p - 'a'] += 1 ; p++ ; } 1 s[k] c long s = 0, t = 0 ; t=t/10; 64.请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。 统计一行串中单词个数 int k = 1 ; while(*s) { if(*s == ' ') k++ ; s++ ; } return k ; filename fp fp p=(NODE *)malloc(sizeof(NODE)); return h; 66.请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出N0。回文 int i, j = strlen(str) ; for(i = 0 ; i < j / 2 ; i++) if(str[i] != str[j - i - 1]) return 0 ; return 1 ; double f1 f2 p=h->next; p=p->next; 7

67.编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。 实现两个字符串连接 char *p=p1; while(*p)p++; while(*p2) *p++=*p2++; *p=0; 0 10*x n/10 *t=0; if(d%2!=0) 69.请编一个函数fun(char *s),该函数的功能是把字符串中的内容逆置。 字符串逆置 strrev(s); i+1 k=j t void fun(char *str, char ch) if(*str!=ch) str[1] = 0; 71功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。 1第m个字符移到串后 int i,j; char t; for(i=1;i<=m;i++) {t=w[0]; for(j=1;w[j]!='\\0';j++) w[j-1]= w[j] ; w[j-1] =t; } double f1 f2 char *fun(char *s,char *t) ss++; tt++; 补充题2:请编写函数fun,其功能是:统计s所指字符串中的数字字符个数,并作为函数值返回。 例如,s所指字符串中的内容是:2def35adh25 3kjsdf7/kj8655x 统计数字字符个数 int n=0; char *p; for(p=s;*p!='\\0';p++) if((*p>='0')&&(*p<='9')) n++; return n; 填空题答案 (1)b[k] (2)4或N/2 (3)< 改错 (1)int t[N] ,i, num=0; (2)t[num++]=b[i];或{t[num]=b[i]; num++;} (3)for(i=0; idata (3)p->next 改错题答案 (1)int i, one=0, zero=0; (2)switch( s[i] ) (3)case 0: zero++; break;

8

类型七:套用公式计算型 程序题73.编写函数fun,函数的功能是:根据以下公式计算74.编写函数fun,它的功能是:利用以下所示的简单迭代方法s,计算结果作为函数值返回;n通过形参传入。求方程cos(x)-x=0的一个实根。Xn+1=cos(Xn) s=1+1/(1+2)+1/(1+2+3)+.......+1/(1+2+3+4+......+n), cos(x)-x=0的一个实根 0.739085 若n的值为11时,函数的值为1.833333。 int i,j,t; float s=0; float x0, x1=0.0; for(i=1;i<=n;i++) do { x0=x1; x1=cos(x0); { t=0; for(j=1;j<=i;j++) t+=j; s=s+1./t; } } while(fabs(x0-x1)>0.000001); return s; return x1; 填空题答案 : (1)'\\0' (2) 0 (3)c i++ m m 改错题答案 while ((high >= 2) && (n < 10) ) (1)double sum=0.0; yes=0; break; (2)sum /= c; 76.请编写函数fun,其功能是:计算并输出下列多项式值: 75. Sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n! 若m的值为20,则fun函数值为6.506583。 若主函数从键盘给n输入15,则输出为s=2.718282。 double s = 0.0 ; int i ; double s=1 ; long t=1; int i; for(i = 1 ; i <= m ; i++) s += log(1.0 * i) ; for(i=1; i<=n; i++) s = sqrt(s) ; { t=t*i; s+=1./t; } return s; return s ; 1 -1 t 0 j-- j for(i=1; i<=3; i++) double f( double x) if(k>=0 && k<=6) return s; 77.请编写函数fun,其功能是:计算并输出当x<0.97时下列多78.请编写函数fun,其功能是:计算并输出下列多项式值: Sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n) 项式的值,直到|Sn-S(n-1)|<0.000001为止。若输入8后,则输出为S=0.662872。 Sn=1+0.5x+0.5(0.5-1)/2!x(2)+...+ 0.5(0.5-1)(0.5-2) .....(0.5-n+1)/n!x(n) int i; double sum=0.0; 输入0.21后,则输出为s=1.100000。 if (n>1 && n<=100) double s1=1.0,p=1.0,sum=0.0,s0,t=1.0; int n=1; { for(i=1; i<=n; i++) do{s0=s1;sum+=s0; t*=n;p*=(0.5-n+1)*x; s1=p/t; sum+=1.0/(2*i-1)-1.0/(2*i); } n++;}while(fabs(s1-s0)>1e-6); return sum; return sum; j=2 i j x n fabs(t) sum=j=0; for(i=1; i<=y; i++) if(sum%4==2) t=t00; 79.请编写函数fun,其功能是:计算并输出 80.编写函数fun,它的功能是:根据以下公式求P的值,结果由S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+……+ 函数值带回。m与n为两个正整数且要求m>n。(1+2^0.5+3^0.5+……+n^0.5) p=m!/n!(m-n)!。 输入20后,则输出为s=534.188884。 m=12,n=8,运行结果为495.000000。 int i; double fac=1.0; double sum=1.0; float p; for(i=2;i<=n;i++) p=1.0*jc(m)/jc(n)/jc(m-n) ; { fac+=sqrt(i); sum+=fac; } return p; return sum; *s a s++ a n b int j, c=0; float xa=0.; c=c+32; if (x[j] )>=xa) c=c+5; 81.编写函数fun,它的功能是:计算并输出下列级数82.请编写函数fun,它的功能是计算下列级数和,和值由函数和:S=1/1*2+1/2*3+...+1/n(n+1) 值返回。 23nn=10时,函数值为0.909091。 xxx double s = 0.0 ; S=1+x+2!+3!+……+n! int i ; 当n=10,x=0.3时,函数值为1.349859。 for(i = 1 ; i <= n ; i++) s = s + 1.0 / (i * (i + 1)) ; double s = 1.0, y = x ; int i ; return s ; for(i = 1 ; i <= n ; i++) { s += y / (double)jc(i) ; y *= x ; } *s 1 k[n] return s ; double fun(int k) i ps[j] tp return s; double fun(int n) return sum;

9

83.请编写一个函数fun,它的功能是:根据以下公式求π的值 求π的值 编程题答案:double s=1.0; float n=1.0,t=1,pi=0; while((fabs(s))>=eps) { pi+=s; t=n/(2*n+1); s*=t; n++;} pi=pi*2; return pi; 填空题答案: 0 n t*t 改错题答案: for(i = 0;str[i];i++) if (substr[k+1]=='\\0') 84. 请编写函数fun,其功能是:计算并输出下列多项式值:s=1+1/(1*2)+1/(1*2*3)+..1/(1*2*3...*50) 例如,若主函数从键盘给n输入50后,则输出为S=1.718282。 编程题答案: double t,sn=1.0; int i,j; for(i=1;i

92.请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。sum=148.874270。 3到n之间所有素数平方根之和 int i,j=0; double s=0; for (i=3; i<=n; i++) { for (j=2; j=p) xx[j++]=p; p++;} while(j 10) b[M - 1]++ ; else b[j]++ ; } 填空题答案: “rb” > fwrite 改错题答案: p=s; while(*p++); 93.编写函数int fun(int lim,int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中 小于或等于lim所有素数 int i,j,k=0; for(i=2;i<=lim;i++) { for(j = 2 ; j <= (i/2) ; j++) if(i % j == 0) break; if(j > (i/2)) aa[k++] = i; } return k; a[0][i] < x,y int fun(int *x,int *y) t=*x;*x=*y;*y=t; 95.请编写一个函数 unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w的后n-1位的数作为函数值返回 5923=〉923 if(w>10000) w %= 10000 ; else if(w>1000) w %= 1000 ; else if(w>100) w %= 100 ; else if(w>10) w %=10 ; return w ; tt tt.score[i] std m=i; if(a[k]>a[m]) m=k; 97.请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。s=35.951014 相邻两元素平均值平方根之和 int i ; double avg=0.0,sum=0.0; for (i=0;i<8;i++) { avg=(x[i]+x[i+1])/2; sum+=sqrt(avg); } return sum; x n t d=1; s=0; d=d/10; 99.请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。sum=763 整数n的所有因子 int s = 0, i ; for(i = 2 ; i < n ; i++) if(n % i == 0) s +=i ; return s ; && 32 ch void fun(int *a) a[j]=a[j-1]; 补充题5:请编写函数fun,其功能是:将一组得分中,去掉一个最高分和一个最低分,然后求平均值,并通过函数返回。函数形参a指向存放得分的数组,形参n中存放得分个数(n>2)。例如,若输入9.9 8.5 7.6 8.5 9.3 9.5 8.9 7.8 8.6 8.4十个得分,则输出结果为:8.687500 得分求平均值 double sum=0,max,min;int i; max=min=a[0]; for(i=0;i a[i][j] )

11


二级C语言考试机试精简版(1) - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:滤波补偿设备技术条件书最终版

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: