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

考试难度:
1人已考
  • 卷面总分:100
  • 试卷类型:模拟试题
  • 测试费用: 免费
  • 关注人数:48
  • 作答时间:120分钟
  • 解析:
关闭
试卷简介:
计算机二级C语言考试试题与答案解析3
试题类型:
  • 程序填空题
  • 程序修改题
  • 程序设计题
试卷预览
  • 程序填空题
  • 程序修改题
  • 程序设计题
1
使用VC ++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名及3门课的成绩。函数fun()的功能是将该学生的各科成绩都乘以一个系数a。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include <stdio.h>typedef struct{int num;char name[9];float score[3];}STU;void show(STU tt){int i;printf (“%d %s: ”, tt.num, tt.name);for (i=0; i<3; i++)printf(“%5.1f”,tt.score[i]);printf (“\n”);}/********* found *********/void modify (【1】*ss, float a){int i;for(i=0; i<3; i++)/********* found *********/ss ->【2】*=a;}main (){STU std={1,“Zhanghua”,76.5,78.0,82.0 };float a;printf(“\nThe original number and name and scores:\n”);show(std);printf (“\nlnput a number :”);scanf(“%f”,&a);/********* found *********/modify(【3】,a);printf(“\nA result of modifying:\n”);show (std);}
2
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是把形参a所指数组中的奇数元素按原顺序 依次存放到a[0]、a[1]、a[2]……中,把偶数元素从数组中删除,奇数元素个数通过函数值返回。例如,若a所指数组中的元素最初排列为9,1,4,2,3,6,5,8,7,删除偶数元素后,a所指数组中的元素为9,1,3,5,7,返回值为5。请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include <stdio.h>#define N 9int fun (int a[ ], int n){int i, j;j=0;for (i=0; i
3
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是统计整型变量m中各数字出现的次数,并将其存放到数组a中。其中:a[0]存放0出现的次数,a[1]存放1出现的次数,……,a[9]存放9出现的次数。例如,若m为14579233,则输出结果应为0,1,1,2,1,1,0,1,0,1,。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的文件blank1.c中。不得增行或删行,也不得更改程序的结构!试题程序:
4
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数列,并将中间数作为函数值返回。例如有9个正整数:1572387582145按升序排列时的中间数:8处理后主函数中输出的数列882387882145请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。.注意:源程序存放在考生文件夹下的文件blank1.c中。不得增行或删行,也不得更改程序的结构!试题程序:
5
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是将a和b所指的两个字符串分别转换成值相同的整数并相加,将结果作为函数值返回,规定字符串中只含9个以下数字字符。例如,主函数中输入字符串“32486”和“12345”,在主函数中输出的函数值为44831。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序在文件blank1.c中。不得增行或删行,也不得更改程序的结构!试题程序:1 #include < stdio.h >2 #include < string.h >3 #include < ctype.h >4  #define N 95 long ctod ( char * s )6  { long d = 0 ;7  while ( * s)8   if (isdigit ( * s) ) {9  /********* found ********* /10d = d*10+*s -【1】;11 /********* found ********* /12   【2】13    }14   return d;15 }16 long fun ( char * a, char *b )17 {18 /********* found ********* /19 return【3】;20 }21 main ()22 { char s1[N],s2[N];23 do24 { printf ("Input string s1; ");25 gets (s1); }26 while ( strlen (s1) >N );27 do28 {printf ("Input string s2 ; ");29 gets (s2); }30 while ( strlen (s2 ) >N );31 printf ("The result is: %1d\n", fun(s1,s2 ));32 }
6
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是将形参s所指字符串中所有ASCⅡ值小于97的字符存入形参t所指字符数组中,形成一个新字符串,统计出符合条件的字符个数并作为函数值返回。例如,形参s所指的字符串为Abc@1x56*,程序执行后t所指字符数组中的字符串应为A@156*。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序在文件blank1.c中。不得增行或删行,也不得更改程序的结构!试题程序:
1
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是输出M×M整数方阵,然后求两条对角线上元素之和,并将其作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <stdlib.h>#include <conio.h>#include <stdio.h>#define M 5/********* found ********* /int fun (int n, int xx[ ][ ]){int i, j, sum=0;printf (“\nThe %d x %d matrix:\n”, M,M);for (i=0; i
2
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是根据形参m的值(2≤m≤9),在m行m列的二维数组中存放具有如下规律的数据,由main()函数输出。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件modi1.c中,不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:
3
使用VC ++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是将s所指字符串中的字母转换为字母序列 的后续字母(如“Z”转换为“A”,“z”转换为“a”),其他字符不变。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <stdlib.h>#include <stdio.h>#include <ctype.h>#include <conio.h>void fun (char * s){/********* found *********/while (*s !=‘@’){if(*s>=‘A’&&*s<=‘Z’ ||*s >=‘a’&&*s<=‘z’){if ( *s==‘Z’) *s=‘A’;else if (*s==‘z’) *s=‘a’;else *s+=1 ;}/********* found *********/(*s) ++;}}void main(){char s[80];system (“CLS”);printf (“\n Enter a string with length<80: \n\n”);gets (s);printf (“\n The string:\n\n”);puts (s);fun (s);printf (“\n\n The Cords :\n\n”);puts (s);}
4
使用VC ++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是将s所指字符串中位于奇数位置的字符或 ASCII值为偶数的字符依次放入t所指数组中。例如,字符串中的数据为“AABBCCDDEEFF”,则输出应当是“ABBCDDEFF”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <conio.h>#include <stdio.h>#include <string.h>#define N 80void fun (char *s, char t[ ]){int i, j=0 ;for (i=0;i<(int) strlen (s);i++)/********* found *********/if (i%2&&s[i]%2==0)t[ j ++ ]=s[ i];/********* found *********/t[i]=‘\0’;}main (){char s[N], t[N];printf (“\nPlease enter string s:”);gets (s);fun(s,t);printf (“\nThe result is:% s\n”,t);}
5
使用VC ++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序的主函数中,从键盘输入若干个数并存入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun()的功能是计算数组元素中所有值为正的平均值(不包括0)。例如,数组中元素的值依次为39、-47、21、2、-8、15、0,则程序的运行结果为19.250000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <conio.h>#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;}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 (“%lf\n”, fun(x));}
6
使用VC++打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是求出s所指字符串中最后一次出现的t所指字符串的地址,并将此地址通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如,当字符串中的内容为“abcdabfabcdx”,t中内容为“ab”时,输出结果应是“abcdx”。当字符串中的内容为“abcdabfabcdx”,t中内容为“ abd”时,则程序输出未找到信息“Not found!”。 请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <stdlib.h>#include <stdio.h>#include <conio.h>#include <string.h>char * fun (char *s, char *t){char * p, * r, * a;/********* found *********/a=Null;while(*s){p=s; r=t ;while ( * r)/********* found *********/if (r==p){ r++; p++; }else break;if ( * r=='\0') a=s;s ++; }return a;}void main (){char s[l00],t[100], *p;system(“CLS”);printf (“\nPlease enter string s:”);scanf(“%s”,s);printf(“\nPlease enter substring t:”);scanf (“%s”,t);p=fun (s, t);if(p)printf (“\nThe result is: %s\n”, p);elseprintf (“\nNot found!\n”);}
1
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun(),该函数的功能是找出成绩最低的学生记录,通过形参将其返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1 #include < stdio.h >2 #include < string.h >3 #include < conio.h >4 #include < stdlib.h >5 #define N 106 typedef struct ss7 { char num[ 10 ];8 int s;9 } STU;10 fun (STU a[ ] , STU * s)11 {1213 }14 void main ()15 {16 FILE * wf ;17 STUa[N]={{"A01",81},{"A02", 89},{ "A03",66},{ "A04",87},{" A05",77},{ "A06",90},{ "A07",79},{ "A08",61}, { "A09",80}, { "A10",71}},m18  int i;19 system ("CLS");20 printf ( " ***** The original data ***** \n");21 for (i=0;i<N;i++)22   printf ( "No = % s Mark =% d\n", a[i],num,a[i].s);23 fun(a,&m);24 printf ("**** The Result ****\n");25 printf("The lowest :%s, %d\n", m.num,m.s);26 /*************************/27 wf = fopen ("out. dat'*, "w");28 fprintf (wf ,"%s, %d",m.num,m.s);29 fclose(wf);30 /*************************/
2
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写一个函数fun(),用来求出数组中值最大的元素在数组中的下标并将其存放在k所指向的存储单元中。例如,输入如下整数:876 675 896 101 301 401 980 431 451 777则输出结果为6,980。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:
3
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写一个函数,其功能是从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该字符串的地址(用****作为结束输入的标识)。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1 #include < conio.h >2 #include < stdio.h >3 #include < string.h >4 #include < stdlib.h >5 char * fun (char ( * a) [81], int num, char * max)6 {78 }9   void main ()10 {11  FILE * wf;12 char ss[ 10 ] [ 81 ], * ps =NULL;13 char s [ 3 ] [ 81 ] = { " abed", "deg","diegns"}, *p=NULL;14 int i = 0 , n;15 system("CLS");16 printf ("输入若干个字符串:");17 gets(ss[i]);18 puts (ss[i]);19 while (! stremp (ss[ i] ,"**** ")==0)/*用4个星号作为结束输入的标志* /20 {21  i++;22  gets (ss[i]);24  puts (ss[i]);25 }26 n = i;27 ps=fun(ss,n,ps);28 printf ("\nmax = %s\n",ps);29 /********************/30   wf = fopen ("out .dat", "w");31   p = fun (s,3,p);32   fprintf (wf,"% s",p);33   fclose (wf);34  /********************/
4
使用VC ++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将s所指字符串中ASCII值为奇数的字符删除,将剩余字符形成的新字符串放在t所指数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符A的ASCII值为奇数,字符1的ASCII值也为奇数,都应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF24”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include <conio.h>#include <stdio.h>#include <string.h>void fun (char * s, char t[ ]){}main (){char s[100], t[100 ], Msg[ ]=“Please enter string s:”;printf(Msg);scanf(“%s”, s);fun(s,t);printf(“\nThe resuit is:%s\n”,t);}