首页IT科技计算机二级c语言怎么答题(计算机等级考试二级C语言上机题集(第11~15套))

计算机二级c语言怎么答题(计算机等级考试二级C语言上机题集(第11~15套))

时间2025-06-19 12:33:22分类IT科技浏览4275
导读:第11套 1.程序填空题...

第11套

1.程序填空题

给定程序中          ,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移                  ,其他字符顺序后移      ,处理后新字符串的首地址作为函数值返回            。

例如       ,s所指字符串为:asd123fgh543df,处理后新字符串为:asdfghdf123543                。

请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果      。

注意:不得增行或删行                 ,也不得更改程序的结构!

2.程序修改题

给定程序中         ,函数fun的功能是:求出以下分数序列的前n项之和         。

2/1     ,3/2                ,5/3            ,8/5   ,13/8                ,21/13               ,……

例如,若n=5             ,则应输出:8.391667                。

请改正函数fun中指定部位的错误                  ,使它能得出正确的结果        。

注意:不要改动main函数   ,不得增行或删行          ,也不得更改程序的结构      。

#include <stdio.h> /**************found**************/ fun( n ) { int a = 2, b = 1, c, k ; double s=0.0 ; for ( k = 1; k <= n; k++ ) { s = s + 1.0 * a / b ; /**************found**************/ c = a; a += b; b += c; } return(s) ; } int main( ) { int n = 5 ; printf("\nThe value of function is: %f\n", fun(n)); return 0; }

3.程序设计题

编写函数fun                  ,其功能是:求Fibonacci数列中大于s的最小的一个数      ,结果由函数返回                 。其中Fibonacci数列F(n)的定义为:

F(0)=0 F(1)=1

F(n)=F(n-1)+F(n-2)

例如       ,当s=1000时                 ,函数值为1597          。

注意:请勿改动主函数main和其他函数中的任何内容         ,仅在函数fun的花括号中填入你编写的若干语句   。

#include <stdio.h> void NONO(void); int fun(int s) { } int main() { int n; n=1000; printf("n=%d,f=%d\n",n,fun(n)); NONO(); return 0; } void NONO(void) {/* 本函数用于打开文件     ,输入数据                ,调用函数            ,输出数据   ,关闭文件                  。 */ FILE *fp, *wf ; int i, n, s ; fp = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for (i = 0 ; i < 10 ; i++) { fscanf(fp, "%d", &n) ; s = fun(n) ; fprintf(wf, "%d\n", s) ; } fclose(fp) ; fclose(wf) ; }
1.(1)s[i] (2)k (3\0 2. double fun(int n) c = a+b; b=a; a=c; 3. int fun(int s) { if (s<0) return 0; int a=0,b=1,c; c=a+b; while (c<=s) { a=b; b=c; c=a+b; } return c; }

第11套参考答案

第12套

1.程序填空题

函数fun的功能是:计算

的前n项             。

例如                ,若x=2.5               ,n=12,函数值为:12.182340。

请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果               。

注意:不得增行或删行             ,也不得更改程序的结构!

#include <stdio.h> double fun(double x, int n) { double f, t; int i; f = 1.0; /**********found**********/ t = ___1___; /**********found**********/ for (i=___2___; i<n; i++) { /**********found**********/ t *= x/___3___; f += t; } return f; } int main() { double x, y; x=2.5; y = fun(x, 12); printf("\nThe result is :\n"); printf("x=%-12.6f y=%-12.6f\n", x, y); return 0; }

2.程序修改题

假定整数数列中的数不重复                  ,并存放在数组中                。给定程序中函数fun的功能是:删除数列中值为x的元素   。N中存放的是数列中元素的个数            。

请改正函数fun中指定部位的错误   ,使它能得出正确的结果                。

注意:不要改动main函数          ,不得增行或删行                  ,也不得更改程序的结构      。

#include <stdio.h> #define N 20 int fun(int *a,int n,int x) { int p=0,i; a[n]=x; while(x!=a[p]) p=p+1; /************found************/ if (p=n) return -1; else { for(i=p;i<n;i++) /************found************/ a[i+1]=a[i]; return n-1; } } int main() { int w[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i; n=10; printf("The original data :\n"); for (i=0;i<n;i++) printf("%5d",w[i]); printf("\nInput x (to delete):"); scanf("%d",&x); printf("Delete : %d\n",x); n=fun(w,n,x); if (n==-1) printf("***Not be found!***\n\n"); else { printf("The data after deleted:\n"); for(i=0;i<n;i++) printf("%5d",w[i]); printf("\n"); } return 0; }

3.程序设计题

编写函数fun      ,其功能是:计算下列多项式的值         。

例如       ,若n=50                 ,函数值为:1.718282                。

注意:请勿改动主函数main和其他函数中的任何内容         ,仅在函数fun的花括号中填入你编写的若干语句        。

#include <stdio.h> void NONO( ); double fun(int n) { } int main() { int n; double s; printf("\nInput n: "); scanf("%d",&n); s=fun(n); printf("\n\ns=%f\n\n",s); NONO(); return 0; } void NONO() {/* 请在此函数内打开文件     ,输入测试数据                ,调用 fun 函数            ,输出数据   ,关闭文件      。 */ FILE *rf, *wf ; int n, i ; double s ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d", &n) ; s = fun(n) ; fprintf(wf, "%lf\n", s) ; } fclose(rf) ; fclose(wf) ; }
1.(11.0213)i 2if (p==n) return -1; a[i]=a[i+1]; 3. double fun(int n) { double s=0.0,t=1.0; int i; for (i=1;i<=n;i++) { t=t/i; s+=t; } return s; }

第12套参考答案

第13套

1.程序填空题

给定程序中                ,函数fun的功能是:求出形参ss所指字符串中最长字符串的长度               ,将其余字符串右边用字符“*            ”补齐,使其与最长的字符串等长                 。ss所指字符串数组中共有M个字符串             ,且串长<N          。

请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果   。

注意:不得增行或删行                  ,也不得更改程序的结构!

#include <stdio.h> #include <string.h> #define M 5 #define N 20 void fun(char (*ss)[N]) { int i, j, n, len=0; for(i=0; i<M; i++) { len=strlen(ss[i]); if(i==0) n=len; if(len>n)n=len; } len=n; for(i=0; i<M; i++) { /**********found**********/ n=strlen(___1___); for(j=0; j<len-n; j++) /**********found**********/ ss[i][ ___2___]=*; /**********found**********/ ss[i][ ___3___]=\0; } } int main() { char ss[M][N]={"shanghai","guangzhou", "beijing","tianjing","cchongqing"}; int i; printf("The original strings are :\n"); for(i=0; i<M; i++) printf("%s\n",ss[i]); printf("\n"); fun(ss); printf("The result is :\n"); for(i=0; i<M; i++) printf("%s\n",ss[i]); return 0; }

2.程序修改题

给定程序中   ,函数fun的功能是:把主函数中输入的3个数          ,最大的放在a中                  ,最小的放在c中                  。

例如      ,输入:55 12 34       ,输出结果为:a=55.0,b=34.0,c=12.0             。

请改正函数fun中指定部位的错误                 ,使它能得出正确的结果。

注意:不要改动main函数         ,不得增行或删行     ,也不得更改程序的结构               。

#include <stdio.h> void fun(float *p,float *q,float *s) { /**********found**********/ float *k; if( *p<*q ) { k=*p; *p=*q; *q=k; } /**********found**********/ if( *p>*s ) { k=*s; *s=*p; *p=k; } if( *q<*s ) { k=*q; *q=*s; *s=k; } } int main() { float a,b,c; printf("Input a b c: "); scanf("%f%f%f",&a,&b,&c); printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c); fun(&a,&b,&c); printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c); return 0; }

3.程序设计题

学生的记录由学号和成绩组成                ,N名学生的数据已在主函数中放入结构体数组s中                。编写函数fun            ,它的功能是:把分数最高的学生数据放在b所指的数组中   ,注意:分数最高的学生可能不止一个                ,函数返回分数最高的学生的人数   。

注意:请勿改动主函数main和其他函数中的任何内容               ,仅在函数fun的花括号中填入你编写的若干语句            。

#include <stdio.h> #define N 16 typedef struct { char num[10]; int s; }STREC; int fun(STREC *a,STREC *b) { } int main() { STREC s[N]={{"GA05",85},{"GA03",76}, {"GA02",69},{"GA04",85},{"GA01",91}, {"GA07",72},{"GA08",64},{"GA06",87}, {"GA015",85},{"GA013",91},{"GA012",64}, {"GA014",91},{"GA011",91},{"GA017",64}, {"GA018",64},{"GA016",72}}; STREC h[N]; int i,n;FILE *out; n=fun(s,h); printf("The %d highest score:\n",n); for(i=0;i<n;i++) printf("%s %4d\n",h[i].num,h[i].s); printf("\n"); out=fopen("out.dat","w"); fprintf(out,"%d\n",n); for (i=0;i<n;i++) fprintf(out,"%s %4d\n",h[i].num,h[i].s); fclose(out); }
1.(1)ss[i] (2)n+j (3)n+j 2float k; if( *p<*s ) 3int fun(STREC *a,STREC *b) { int i,n=0,max; max=a[0].s; 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; }

第13套参考答案

第14套

1.程序填空题

用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始             ,将所有2的倍数的数从数表中删除(把数表中相应位置的值置为0);接着从数表中找到下一个非0数                  ,并从数表中删除该数的所有倍数   ,以此类推          ,直到所找的下一个数等于n为止                。这样会得到一个序列:2,3,5,7,11,13,17,19,23                  ,…      。

函数fun用筛选法找出所有小于等于n的素数      ,并统计素数的个数作为函数值返回         。

请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果                。

注意:不得增行或删行       ,也不得更改程序的结构!

#include <stdio.h> int fun(int n) { int a[10000], i,j, count=0; for (i=2; i<=n; i++) a[i] = i; i = 2; while (i<n) { /**********found**********/ for (j=a[i]*2; j<=n; j+=___1___) a[j] = 0; i++; /**********found**********/ while (___2___==0) i++; } printf("\nThe prime number between 2 to %d\n", n); for (i=2; i<=n; i++) /**********found**********/ if (a[i]!=___3___) { count++; printf( count%15?"%5d":"\n%5d",a[i]); } return count; } int main() { int n=20, r; r = fun(n); printf("\nThe number of prime is : %d\n", r); return 0; }

2.程序修改题

给定程序中                 ,函数fun的功能是:比较两个字符串         ,将长的字符串的首地址作为函数值返回        。

请改正函数fun中指定部位的错误     ,使它能得出正确的结果      。

注意:不要改动main函数                ,不得增行或删行            ,也不得更改程序的结构                 。

#include <stdio.h> /**********found**********/ char fun(char *s, char *t) { int sl=0,tl=0; char *ss, *tt; ss=s; tt=t; while(*ss) { sl++; /**********found**********/ (*ss)++; } while(*tt) { tl++; /**********found**********/ (*tt)++; } if(tl>sl) return t; else return s; } int main() { char a[80],b[80]; int i; printf("\nEnter a string : "); gets(a); printf("\nEnter a string again : "); gets(b); printf("\nThe longer is :\n\n\"%s\"\n",fun(a,b)); return 0; }

3.程序设计题

编写函数fun   ,它的功能是:求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s                ,并作为函数值返回          。

例如               ,n=1000时,函数值应为:s=153.909064   。

注意:请勿改动主函数main和其他函数中的任何内容             ,仅在函数fun的花括号中填入你编写的若干语句                  。

#include <stdio.h> #include <math.h> double fun(int n) { } int main() { printf("s=%f\n",fun(1000)); void NONO(void); NONO(); return 0; } void NONO(void) {/* 请在此函数内打开文件                  ,输入测试数据   ,调用 fun 函数          , 输出数据                  ,关闭文件             。 */ FILE *wf; wf = fopen("a28.out", "w") ; fprintf(wf,"s=%f\n",fun(1000)); fclose(wf) ; }
1.(1)a[i] (2)a[i] (30 2. char *fun(char *s, char *t) ss++; tt++; 3. double fun(int n) { double s=0; int i; for (i=1;i<n;i++) if (i%3==0 && i%7==0) s+=i; s=sqrt(s); return s; }

第14套参考答案

第15套

1.程序填空题

人员的记录由编号和出生年          、月                  、日组成      ,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员       ,将其数据放在形参k所指的数组中                 ,由主函数输出         ,同时由函数值返回满足指定条件的人数               。

请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果                。

注意:不得增行或删行     ,也不得更改程序的结构!

#include <stdio.h> #define N 8 typedef struct { int num; int year,month,day ; }STU; int fun(STU *std, STU *k, int year) { int i,n=0; for (i=0; i<N; i++) /**********found**********/ if( ___1___==year) /**********found**********/ k[n++]= ___2___; /**********found**********/ return (___3___); } int main() { STU std[N]={ {1,1984,2,15},{2,1983,9,21}, {3,1984,9,1},{4,1983,7,15}, {5,1985,9,28},{6,1982,11,15}, {7,1982,6,22},{8,1984,8,19}}; STU k[N]; int i,n,year; printf("Enter a year : "); scanf("%d",&year); n=fun(std,k,year); if(n==0) printf("\nNo person was born in %d \n",year); else { printf("\nThese persons were born in %d \n",year); for(i=0; i<n; i++) printf("%d %d-%d-%d\n",k[i].num,k[i].year, k[i].month,k[i].day); } return 0; }

2.程序修改题

给定程序中                ,函数fun的功能是:通过某种方式实现两个变量值得交换            ,规定不允许增加语句和表达式   。例如   ,a=3,b=8                ,程序运行后a=8,b=3            。

请改正函数fun中指定部位的错误               ,使它能得出正确的结果                。

注意:不要改动main函数,不得增行或删行             ,也不得更改程序的结构      。

#include <stdio.h> int fun(int *x,int y) { int t ; /**************found**************/ t = x ; x = y ; /**************found**************/ return(y) ; } int main() { int a = 3, b = 8 ; printf("%d %d\n", a, b) ; b = fun(&a, b) ; printf("%d %d\n", a, b) ; return 0; }

3.程序设计题

编写函数fun                  ,它的功能是:求出1~1000之内能被7或11整除   ,但不能同时被7和11整除的所有整数并将它们放在a所指的数组中          ,通过n返回这些数的个数         。

注意:请勿改动主函数main和其他函数中的任何内容                  ,仅在函数fun的花括号中填入你编写的若干语句                。

#include <stdio.h> void NONO(void); void fun (int *a, int *n) { } int main() { int aa[1000], n, k ; fun(aa, &n); for ( k = 0 ; k < n ; k++ ) if ((k+1)%10==0) printf("\n") ; else printf("%5d", aa[k]) ; NONO( ); return 0; } void NONO(void) {/* 本函数用于打开文件      ,输入测试数据       ,调用fun函数                 ,输出数据         ,关闭文件        。*/ int aa[1000], n, k ; FILE *fp ; fp = fopen("out.dat","w") ; fun ( aa, &n ) ; for ( k = 0 ; k < n ; k++ ) if ((k+1)%10==0) fprintf(fp, "\n") ; else fprintf(fp, "%5d", aa[k]) ; fclose(fp) ; }
1.(1)std[i].year (2)std[i] (3)n 2. t = *x ; *x = y ; return (t) ; 3. void fun (int *a, int *n) { int i,j; j=0; for (i=1;i<=1000;i++) if ((i%7==0 || i%11==0)&& (i%77!=0)) a[j++]=i; *n=j; }

第15套参考答案

声明:本站所有文章     ,如无特殊说明或标注                ,均为本站原创发布      。任何个人或组织            ,在未征得本站同意时   ,禁止复制      、盗用       、采集                 、发布本站内容到任何网站         、书籍等各类媒体平台                 。如若本站内容侵犯了原著者的合法权益                ,可联系我们进行处理          。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
win11不支持vt(不能升级win11的TPM是什么? win10启用TMP的技巧)