首页IT科技全国计算机二级c语言真题及答案(计算机等级考试二级C语言上机题集(第51~55套))

全国计算机二级c语言真题及答案(计算机等级考试二级C语言上机题集(第51~55套))

时间2025-04-29 00:15:01分类IT科技浏览3522
导读:第51套 1.程序填空题...

第51套

1.程序填空题

给定程序中            ,函数fun的功能是将不带头结点的单向链表逆置           。即若原链表从头至尾结点数据域依次为:2            、4                 、6      、8         、10                 ,逆置后      ,从头至尾结点数据域依次为:10                 、8         、6      、4                 、2                  。

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

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

2.程序修改题

给定程序中                 ,函数fun的功能是将字符串s中位于奇数位置的字符或ASCII码为偶数的字符放入字符串t中(规定第1个字符放在第0位中)        。

例如         ,字符串中的数据为:AABBCCDDEEFF      ,则输出应为:ABBCDDEFF                  。

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

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

#include <stdio.h> #include <string.h> #define N 80 void fun(char *s, char t[]) { int i, j=0; for(i=0; i<strlen(s); i++) /***********found**********/ if(i%2 && s[i]%2==0) t[j++]=s[i]; /***********found**********/ t[i]=\0; } int main() { char s[N], t[N]; printf("\nPlease enter string s : "); gets(s); fun(s, t); printf("\nThe result is : %s\n",t); return 0; }

3.程序设计题

编写函数fun                  ,其功能是将M行N列的二维数组中的按列的顺序依次存放到一维数组中                 。

例如              ,二维数组中的数据为

33 33 33 33

44 44 44 44

55 55 55 55

则一维数组中的内容应为:

33 44 55 33 44 55 33 44 55 33 44 55            。

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

#include <stdio.h> void NONO(void); void fun(int (*s)[10], int *b, int *n, int mm, int nn) { } int main() { int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j; int a[100]={0}, n=0; printf("The matrix:\n"); for(i=0; i<3; i++) { for(j=0;j<4; j++) printf("%3d",w[i][j]); printf("\n"); } fun(w,a,&n,3,4); printf("The A array:\n"); for(i=0;i<n;i++) printf("%3d",a[i]); printf("\n\n"); NONO(); return 0; } void NONO(void) {/* 请在此函数内打开文件               ,输入测试数据                 ,调用 fun 函数   ,输出数据            ,关闭文件                 。 */ FILE *rf, *wf ; int i, j, k ; int w[10][10], a[100], n = 0, mm, nn ; rf = fopen("in.dat", "r") ; wf = fopen("out.dat", "w") ; for(k = 0 ; k < 5 ; k++) { fscanf(rf, "%d %d", &mm, &nn) ; for(i = 0 ; i < mm ; i++) for(j = 0 ; j < nn ; j++) fscanf(rf, "%d", &w[i][j]) ; fun(w, a, &n, mm, nn) ; for(i = 0 ; i < n ; i++) fprintf(wf, "%3d", a[i]); fprintf(wf, "\n") ; } fclose(rf) ; fclose(wf) ; }
1.(1)NODE * (2)q!=NULL3)r 2if(i%2 || s[i]%2==0) t[j]=\0; 3void fun(int (*s)[10], int *b, int *n, int mm, int nn) { int i,j,k=0; for (j=0;j<nn;j++) for (i=0;i<mm;i++) b[k++]=s[i][j]; *n=k; }

第51套参考答案

第52套

1.程序填空题

给定程序中                 ,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为非负数)      ,将所指数组中大于平均值的数据移至数组的前部         ,小于等于平均值的数据移至数组的后部                 ,平均值作为函数值返回         ,在主函数中输出平均值和移动后的数据               。

例如      ,有10个非负数:41 17 34 0 19 24 28 8 12 14                 ,平均值为:19.700000

移动后的输出为:41 34 24 28 17 0 19 8 12 14。

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

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

#include <stdlib.h> #include <stdio.h> #define N 10 double fun(double *x) { int i, j; double s, av, y[N]; s=0; for (i=0; i<N; i++) s=s+x[i]; /**********found**********/ av=__1__; for(i=j=0; i<N; i++) if( x[i]>av ) { /**********found**********/ y[__2__]=x[i]; x[i]=-1; } for(i=0; i<N; i++) /**********found**********/ if( x[i]!= __3__) y[j++]=x[i]; for(i=0; i<N; i++)x[i] = y[i]; return av; } int main() { int i; double x[N]; for(i=0; i<N; i++) { x[i]=rand()%50; printf("%4.0f ",x[i]); } printf("\n"); printf("\nThe average is: %f\n",fun(x)); printf("\nThe result :\n",fun(x)); for(i=0; i<N; i++) printf("%5.0f ",x[i]); printf("\n"); return 0; }

2.程序修改题

在主函数中从键盘输入若干个数放入数组中   ,用0结束输入并放在最后一个元素中                  。给定程序中                  ,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)   。

例如              ,数组中元素值依次为:39,-47,21,2               ,-8,15,0                 ,则程序的运行结果为:19.250000           。

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

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

#include <stdio.h> double fun ( int x[]) { /************found************/ int sum = 0.0; int c=0, i=0; while (x[i] != 0) { if (x[i] > 0) { sum += x[i]; c++; } i++; } /************found************/ sum \= c; return sum; } int main( ) { int x[1000]; int i=0; printf( "\nPlease enter some data (end with 0): " ); do { scanf("%d", &x[i]); } while (x[i++] != 0); printf("%f\n", fun(x)); return 0; }

3.程序设计题

编写函数fun      ,其功能是:根据以下公式计算S         ,计算结果作为函数值返回                 ,n通过形参传入        。

例如         ,若n=11      ,函数返回值为1.833333                  。

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

#include <stdio.h> void NONO(void) float fun(int n) { } int main() { int n; float s; printf("\nPlease enter N:"); scanf("%d", &n); s = fun(n); printf("the result is: %f\n", s); NONO(); return 0; } void NONO(void) {/* 本函数用于打开文件           ,输入数据   ,调用函数                  ,输出数据              ,关闭文件     。 */ FILE *fp, *wf ; int i, n ; float 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, "%f\n", s) ; } fclose(fp) ; fclose(wf) ; }
1.(1)s/N (2)j++ (3-1 2double sum = 0.0; sum /= c; 3float fun(int n) { int i; float s=0,t=0; for (i=1;i<=n;i++) { t=t+i; s=s+1/t; } return s; }

第52套参考答案

第53套

1.程序填空题

给定程序中,函数fun的功能是:把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中               ,形成一个新串                 。若s所指字符串的长度小于n                 ,则将整个字符串复制到形参t所指字符数组中            。

例如   ,形参s所指字符串为:abcdefgh            ,n的值为5                 ,程序执行后t所指字符数组中的字符串应为:defgh   。

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

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

#include <stdio.h> #include <string.h> #define N 80 void fun(char *s, int n, char *t) { int len,i,j=0; len=strlen(s); /**********found**********/ if(n>=len) strcpy(__1__); else { /**********found**********/ for(i=len-n; i<=len-1; i++) t[j++]= __2__ ; /**********found**********/ t[j]= __3__ ; } } int main() { char s[N],t[N]; int n; printf("Enter a string: "); gets(s); printf( "Enter n:"); scanf("%d",&n); fun(s,n,t); printf("The string t : "); puts(t); return 0; }

2.程序修改题

给定程序中         ,函数fun的功能是:统计一个无符号整数中各位数字值为零的个数                 ,通过形参传回主函数         ,并把该整数中各位上最大的数字值作为函数值返回               。

例如      ,若输入无符号整数30800                 ,则数字值为零的个数为3           ,各位上数字值最大的是8。

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

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

#include <stdio.h> int fun(unsigned n, int *zero) { int count=0,max=0,t; do { t=n%10; /**************found**************/ if(t=0) count++; if(max<t) max=t; n=n/10; }while(n); /**************found**************/ zero=count; return max; } int main() { unsigned n; int zero,max; printf("\nInput n(unsigned): "); scanf("%d",&n); max = fun( n,&zero ); printf("\nThe result: max=%d zero=%d\n",max,zero); return 0; }

3.程序设计题

编写函数fun,其功能是:判断字符串是否为回文   。若是               ,函数返回1                 ,否则返回0           。回文是指顺读和倒读都一样的字符串                  。

例如   ,字符串LEVEL是回文            ,则字符串12312就不是回文      。

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

#include <stdio.h> #define N 80 void NONO(void); int fun(char *str) { } int main() { char s[N] ; printf("Enter a string: ") ; gets(s) ; printf("\n\n") ; puts(s) ; if(fun(s)) printf(" YES\n") ; else printf(" NO\n") ; NONO() ; return 0; } void NONO(void) {/* 请在此函数内打开文件      ,输入测试数据         ,调用 fun 函数                 ,输出数据         ,关闭文件                  。 */ FILE *rf, *wf ; int i ; char s[N] ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%s", s) ; if(fun(s)) fprintf(wf, "%s YES\n", s) ; else fprintf(wf, "%s NO\n", s) ; } fclose(rf) ; fclose(wf) ; }
1.(1)t,s (2)s[i] (3\0 2if(t==0) *zero=count; 3. int fun(char *str) { int i,j; for (j=0;str[j]!=\0;j++); j--; for (i=0;i<=j;i++,j--) if (str[i]!=str[j]) return 0; return 1; }

第53套参考答案

第54套

1.程序填空题

给定程序中      ,函数fun的功能是:计算下列多项式的值

例如                 ,当n=10时           ,输出结果为:-0.204491         。

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

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

#include <stdio.h> double fun(int n) { int i, k; double s, t; s=0; /**********found**********/ k=__1__; for(i=1; i<=n; i++) { /**********found**********/ t=__2__; s=s+k*(2*i-1)*(2*i+1)/(t*t); /**********found**********/ k=k*__3__; } return s; } int main() { int n=-1; while(n<0) { printf("Please input(n>0): "); scanf("%d",&n); } printf("\nThe result is: %f\n",fun(n)); return 0; }

2.程序修改题

给定程序中                  ,函数fun的功能是:根据形参m的值(2<=m<=9)              ,在m行m列的二维数组中存放如下所示规律的数据,由main函数输出                 。

例如               ,若输入2                 ,则输出

1 2

2 4

若输入4   ,则输出

1 2 3 4

2 4 6 8

3 6 9 12

4 8 12 16

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

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

#include <stdio.h> #define M 10 int a[M][M] = {0} ; /**************found**************/ fun(int **a, int m) { int j, k ; for (j = 0 ; j < m ; j++ ) for (k = 0 ; k < m ; k++ ) /**************found**************/ a[j][k] = k * j ; } int main ( ) { int i, j, n ; printf ( " Enter n : " ) ; scanf ("%d", &n ) ; fun ( a, n ) ; for ( i = 0 ; i < n ; i++) { for (j = 0 ; j < n ; j++) printf ("%4d", a[i][j]) ; printf ( "\n" ) ; } return 0; }

3.程序设计题

程序定义了N*N的二维数组         ,并在主函数中自动赋值                 。编写函数fun                 ,其功能是:使数组左下三角元素中的值乘以n               。

例如         ,若n的值为3      ,a数组中的值为

1 9 7

2 3 8

4 5 6

则返回主函数后a数组中的值应为

3 9 7

6 9 8

12 15 18

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

#include <stdio.h> #include <stdlib.h> #define N 5 void NONO(void); void fun ( int a[][N], int n) { } int main ( ) { int a[N][N], n, i, j; printf("***** The array *****\n"); for ( i =0; i<N; i++ ) { for ( j =0; j<N; j++ ) { a[i][j] = rand()%10; printf( "%4d", a[i][j] ); } printf("\n"); } do n = rand()%10 ; while ( n >=3 ); printf("n = %4d\n",n); fun ( a, n ); printf ("***** THE RESULT *****\n"); for ( i =0; i<N; i++ ) { for ( j =0; j<N; j++ ) printf("%4d", a[i][j]); printf("\n"); } NONO(); return 0; } void NONO(void) {/* 本函数用于打开文件           ,输入数据   ,调用函数                  ,输出数据              ,关闭文件              。 */ FILE *rf, *wf ; int i, j, n, a[5][5] ; rf = fopen("in.dat", "r") ; wf = fopen("out.dat", "w") ; for(i = 0 ; i < 5 ; i++) for(j = 0 ; j < 5 ; j++) fscanf(rf, "%d ", &a[i][j]) ; fscanf(rf, "%d", &n) ; fun(a, n) ; for ( i = 0; i < 5; i++ ) { for ( j = 0; j < 5; j++ ) fprintf(wf, "%4d", a[i][j]); fprintf(wf, "\n"); } fclose(rf) ; fclose(wf) ; }
1.(1122*i (3)(-1) 2. void fun(int a[][M], int m) a[j][k] = (k+1) * (j+1) ; 3. void fun ( int a[][N], int n) { int i,j; for (i=0;i<N;i++) for (j=0;j<=i;j++) a[i][j]=a[i][j]*n; }

第54套参考答案

第55套

1.程序填空题

给定程序中,函数fun的功能是:将a所指3*5矩阵中第k列的元素左移到第0列               ,第k列以后的每列元素依次左移                 ,原来左边的各列依次绕到右边                  。

例如   ,有下列矩阵

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

若k为2            ,程序执行结果为

3 4 5 1 2

3 4 5 1 2

3 4 5 1 2

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

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

#include <stdio.h> #define M 3 #define N 5 void fun(int (*a)[N],int k) { int i,j,p,temp; /**********found**********/ for(p=1; p<= __1__; p++) for(i=0; i<M; i++) { temp=a[i][0]; /**********found**********/ for(j=0; j< __2__ ; j++) a[i][j]=a[i][j+1]; /**********found**********/ a[i][N-1]= __3__; } } int main( ) { int x[M][N]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}},i,j; printf("The array before moving:\n\n"); for(i=0; i<M; i++) { for(j=0; j<N; j++) printf("%3d",x[i][j]); printf("\n"); } fun(x,2); printf("The array after moving:\n\n"); for(i=0; i<M; i++) { for(j=0; j<N; j++) printf("%3d",x[i][j]); printf("\n"); } return 0; }

2.程序修改题

给定程序中      ,函数fun的功能是:从s所指字符串中         ,找出t所指子串的个数作为函数值返回           。

例如                 ,当s所指字符串中的内容为:abcdabfab         ,t所指字符串的内容为:ab      ,则函数返回值为3                  。

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

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

#include <stdio.h> #include <string.h> int fun(char *s,char *t) { int n; char *p,*r; n=0; while (*s) { p=s;r=t; while (*r) /************found************/ if(*r==*p) {r++;p++} else break; /************found************/ if(r==\0) n++; s++; } return n; } int main() { char s[100],t[100]; int m; printf("\nPlease enter string S:"); scanf("%s",s); printf("\nPlease enter substring t:"); scanf("%s",t); m=fun(s,t); printf("\nThe result is: m=%d\n",m); return 0; }

3.程序设计题

编写函数fun                  ,它的功能是:实现两个字符串的连接(不使用库函数strcat)              ,即把p2所指的字符串连接到p1所指的字符串后                  。

例如,分别输入两个字符串:FirstString- 和 SecondString               ,程序输出:FirstString-SecondString         。

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

#include <stdio.h> void NONO(void); void fun(char p1[], char p2[]) { } int main() { char s1[80], s2[40] ; printf("Enter s1 and s2:\n") ; scanf("%s%s", s1, s2) ; printf("s1=%s\n", s1) ; printf("s2=%s\n", s2) ; printf("Invoke fun(s1,s2):\n") ; fun(s1, s2) ; printf("After invoking:\n") ; printf("%s\n", s1) ; NONO() ; return 0; } void NONO(void) {/* 本函数用于打开文件   ,输入测试数据            ,调用fun函数                 ,输出数据      ,关闭文件                 。*/ int i ; FILE *rf, *wf ; char s1[80], s2[40] ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%s", s1) ; fscanf(rf, "%s", s2) ; fun(s1, s2) ; fprintf(wf, "%s\n", s1) ; } fclose(rf) ; fclose(wf) ; }
1.(1)k (2)N (3)temp 2if(*r==*p) {r++;p++;} if(*r==\0) 3void fun(char p1[], char p2[]) { int i,j; for (i=0;p1[i]!=\0;i++); for (j=0;p2[j]!=\0;j++) p1[i++]=p2[j]; p1[i]=\0; }

第55套参考答案

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

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

展开全文READ MORE
python如何读取字符串长度(python strftime获取当前时间) 提升关键词排名方法(哪些关键词能提高搜索结果)