计算机二级C语言考试试题与答案解析5

考试难度:
6人已考
  • 卷面总分:100
  • 试卷类型:模拟试题
  • 测试费用: 免费
  • 关注人数:158
  • 作答时间:120分钟
  • 解析:
关闭
试卷简介:
计算机二级C语言考试试题与答案解析5
试题类型:
  • 程序填空题
  • 程序修改题
  • 程序设计题
试卷预览
  • 程序填空题
  • 程序修改题
  • 程序设计题
1
使用VC ++2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是把形参a所指数组元素中的最大值放在a[0]中,接着把a所指数组元素中的最小值放在a[1]中,再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中,依此类推。例如,若a所指数组中的元素最初排列为1、4、2、3、9、6、5、8、7,按规则移动后,元素排列为9、1、8、2、7、3、6、4、5。形参n中存放a所指数组中元素的个数。请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include <stdio.h>#define N 9/********* found *********/void fun(int 【1】, int n){int i, j, max, min, px, pn, t;/********* found *********/for (i=0; ia[j]){ min=a[j]; pn=j; }}if (px!=i){t=a[i]; a[i]=max;a[px]=t;if (pn==i) pn=px;}if (pn!=i +1){ t=a[i+1]; a[i +1]=min;a[pn]=t; }}}main (){int b[N]={1,4,2,3,9,6,5,8,7}, i;printf (“\nThe original data: \n”);for (i=0; i
2
使用VC ++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是在形参s所指宇符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。例如,若s所指字符串为“baacda”,c中的字符为a,执行后s所指字符串为“baaaacdaa”。请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include <stdio.h>void fun (char * s, char c){int i, j , n;/ ********* found ********* /for (i=0; s[i]!=【1】; i++)if (s[i]==c){/********* found ********* /n=【2】;while (s[i +1 +n] !=‘\0’)n++;for(j=i+ n+ l; j >i;j--)s[j+1]=s[j];/********* found *********/s[j+1]=【3】;i=i+1;}}main (){char s[ 80 ]=’’baacda’、c;printf (“\nThe string: %s\n'Vs);printf (M\nlnput a character:”);scanf(“% c”,&c);fun (s, c);printf (n\nThe result is: %s\ n”,s);}
3
使用VC ++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是将形参指针所指结构体数组中的3个元素按num成员进行升序排列。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include <stdio.h>typedef struct{int num;char name [10];}PERSON;/******** found *********/void fun (PERSON【1】{/******** found *********/【2】temp;if (std[0].num >std[1].num){temp=std[0];std[0]=std[1];std[1]=temp; }if (std[0].num >std[2].num){terrp=std[0];std[0]=std[2];std[2]=temp; }if (std[1] .num >std[2] .num){temp=std[1];std[1]=std[2];std[2]=temp; }}main (){PERSON std[ ]={ 5,“ZhangHu”,2,“WangLi”,6,“LinMin”};int i;/******** *found *********/fun 【3】;printf (“The result is”:);for (i=0; i<3; i++)printf (“%d, %s”, std[i].num,std[i].name);}
4
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。例如,有10个正数:46、30、32、40、6、17、45、15、48、26,平均值为30.500000。移动后的输出为46、32、40、45、48、30、6、17、15、26。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序在文件blank1.c中。不得增行或删行,也不得更改程序的结构!试题程序:1 1 #include < stdlib.h >2 #include < stdio.h >3 #define N104 double fun(double * x)5 { int i, j; double s, av, y[N];6 s = 0;7 for(i=0; i <N; i++) s=s+x[i];8 /********* found ********* /9 av = [ 1];10 for (i=j=0; i<N; i++)11 if ( x[ i] > av ) {12 /********* found *********/13 y[【2】]=x[ i];14 x[i] = -1;}15 for(i =0; i <N; i++)16 /********* found ********* /17 if ( x[i]! = [3j) y[ j ++] =x[i];18 for(i=0; i <N; i++)x[i] = y[i];19 return av;20 }21 main ()22 { int i; double x[n];23 for(i=0; i<N; i++)24 { x[i] =rand()% 50;25 printf ("% 4.0f",x[i]);}26 printf ("\n");27 printf ("\nThe average is: % f\n", fun (x));28 printf ("\nThe result :\n", fun (x));29 for(i=0; i <N; i++)30  printf("%5.0f",x[i]);31 printf ("\n");32 }
5
1
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是比较两个字符串,将长的字符串的首地址作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件modi1.c中,不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:
2
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是根据整型参数m,计算如下公式的值。y=1/(100×100)+1/(200×200)+1/(300×300)+…+1/(m×m)若m=2000,则应输出0.000160。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件modi1.c中,不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:1 #include2 #include3 #include4 /*********found*********/5 fun(intm)6 {doubley=0,d;7 inti;8 /*********found*********/9 for(i=100,i<=m,i+=100)10 {d=(double)i*(double)i;11 y+=1.0/d;12 }13 return(y);14 }15 voidmain()16 {intn=2000;17 system("CLS");18 printf("\nTheresultis%1f\n",fun(n));19 }
3
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是读入一个字符串(长度<20),将该字符串中的所有字符按ascⅱ值升序排列后输出。例如,若输入“edcba”,则应输出“abcde”。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件modi1.c中,不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:
4
使用VC ++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是计算s所指字符串中含有t所指字符串的数目,并将其作为函数值返回。请改正程序中的错误或在下划线处填上正确的内容并把下划线删除,使它能得出正确的结果。注意:不要改动main ()函数,不得增行或删行, 也不得更改程序的结构!试题程序:#include <stdlib.h>#include <conio.h>#include <string.h>#include <stdio.h>#define N 80int fun (char *s,char *t){int n;char * p, * r;n=0 ;/******** found ******** /*r=t ;while ( *s ){p=s;while ( * r ){if ( *r==*p ){r + + ;p ++;}elsebreak;if ( *r==‘\0’)n++ ;}/******** found ********/____1____;s++;}return n;}void main (){char a[N],b[N]; int m;printf (“\nPlease enter string a:”);gets(a);printf (“\ nPlease enter substring b:”);gets(b);m=fun (a,b);printf (“\nThe result is:m=%d\n”,m);}
5
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,fun()函数的功能是在任意给定的N个正整数中,从左到右依次取3个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原3个数中中间位置的数。处理后原数列中首尾2个数不变。处理后的数列在主函数中输出。例如,有10个正整数如下。初始数列为657231858214538。第1组数为657冲值为6;替换后的数列为667231858214538。第2组数为5723;中值为7;替换后的数列为667231858214538。第3组数为72318;中值为18;替换后的数列为667181858214538。第4组数为23185;中值为18;替换后的数列为667181858214538。第5组数为1858;中值为8;替换后的数列为667181888214538。第6组数为5821;中值为8;替换后的数列为667181888214538。第7组数为82145;中值为21;替换后的数列为667181888214538。第8组数为214538;中值为38;替换后的数列为667181888213838。最终结果为667181888213838。请改正程序中指定部位的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:
6
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是将n个无序整数从小到大排列。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <conio.h>#include <stdio.h>#include <stdlib.h>fun (int n,int *a){int i,j,p,t;for(j=0; ja[ i])/********* found *********/t=i;if (p!=j){t=a[j];a[j]=a[p];a[p]=t;}}}putarr ( int n, int * z){int i;for (i=1; i<=n; i++,z++){printf (“%4d”, * z);if (!(i%10)) printf (“\n”);}printf (“\n”);}void main (){int aa[20]={9,3,0,4,1,2, 5,6,8,10,7},n=11;system(“CLS”);printf (“\nBefore sorting %d numbers:\n”,n);putarr(n,aa);fun(n,aa);printf(“\nAfter sorting %d numbers:\n”,n);putarr(n,aa);}
1
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是将形参s所指字符串放入形参a所指的字符数组中,使a中存放同样的字符串。说明:不得使用系统提供的字符串函数。注意:部分源程序存放在文件prog1.c中,请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()指定的部位填入所编写的若干语句。试题程序:
2
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是将一个数字字符串转换成与其面值相同的长整型整数。可调用strlen函数求字符串的长度。例如,在键盘输入字符串2345210,函数返回长整型整数2345210。注意:部分源程序存放在文件prog1.c中,请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()指定的部位填入所编写的若干语句。试题程序:
3
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),该函数的功能是判断字符串是否为回文,若是,则函数返回1,在主函数中输出“YES”,否则返回0,在主函数中输出“NO”。回文字符串是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件prog1.c中。第3部分无纸化考武题庠请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include2#defineN803intfun(char*str)4{56}7main()8{9chars[n];10FILE*out;11char*test[]={"1234321","123421","123321","abcdCBA"};12inti;13printf("Enterastring:");14gets(s);15printf("\n\n");16puts(s);17if(fun(s))18printf("YES\n");19else20printf("NO\n");21/******************/22out=fopen("out.dat","w");23for(i=0;i<4/i++)24if(fun(test[i]))25fprintf(out,"YES\n");26else27fprintf(out,"NO\n");28fclose(out);29/******************/30}
4
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#define M 4#include <stdio.h>int fun (int a[ ] [m]){}void main (){int arr[2][M]={5, 8, 3, 45,76,-4,12,82};printf (“max=%d\n”, fun(arr));}