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

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

时间2025-04-28 05:09:17分类IT科技浏览3562
导读:第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
网站自动秒收录免审核(网站只收录首页不收录文章怎么办) 智能文章生成器 危害(ai文章生成器-文章生成器的优势)