1、二级C语言上机题库100题及其答案第1题填空题给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入一个数:27638496,新的数:为739。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1。C中。不得增行或删行,也不得更改程序的结构!答案: /*found*/ t=*n % 10;/*found*/ if(t%2!= 0) x=x+t*i; i=i*10; *n =*n /10; /*found*/ *n=x;改错题
2、给定程序MODI1。C中函数fun的功能是:计算n!。 例如,给n输入5,则输出120。000000。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程答案: /*found*/ if (n = 0) return 1.0 ; while( n 1 & n next=NULL; for(i=1; idata=rand()%m; s-next=p-next; p-next=s; p=p-next; /*found*/ return h;程序编写请编写函数fun,函数的功能是:统计一行字符创中单词的个数,作为函数值返回。一行字符串在主函数中输入
3、,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。int fun( char *s) int k = 1 ; while(*s) if(*s = ) k+ ; s+ ; return k ;第4题填空题程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据以二进制方式输出的文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变
4、。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1。C中。不得增行或删行,也不得更改程序的结构!/*found*/ fp = fopen(filename, rb); fread(s, sizeof(STU), N, fp); fclose(fp); for (i=0; iN-1; i+) for (j=i+1; jsj.sno) t = si; si = sj; sj = t; fp = fopen(filename, wb);/*found*/ fwrite(s, sizeof(STU), N, fp);改错题 给定程序MO
5、DI1。C中函数fun的功能是:在字符串繁荣最前端加入n个*号,形成新串。并覆盖原串。 注意:字符串的长度最长允许为79。 请改正函数fun中指定部位的错误,使它能得出正确的结果。/*found*/ p=s; for(i=0; in; i+) ai=*; do ai=*p; i+; /*found*/ while(*p+);程序编写请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d2中,其余依次类推,把100岁(含100)以上年龄的人数都放在d1中。结果在主函数中输出。注意:部分源程序存在文件PRO
6、G1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。void fun( int *a, int *b) int i, j ; for(i = 0 ; i M ; i+) bi = 0 ; for(i = 0 ; i 10) bM - 1+ ; else bj+ ; 第5题填空题给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个的读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正
7、确的结果。 注意源程序存放在考生文件夹下的BLANK1。C中。 不得增行或删行,也不得更改程序的结构!/*found*/ FILE * fp; char str100, str1100, str2100; int a1; double f1; fp = fopen(file1.txt, w); fprintf(fp, %s %d %fn, s, a, f);/*found*/ fclose(fp) ; fp = fopen(file1.txt, r);/*found*/ fscanf(fp,%s%s%s, str, str1, str2);改错题给定程序MODI1。C中函数fun的功能是:对N
8、名学生的学习成绩,按从高到低的顺序找出前m(m=10名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构 int i,j,k;/*found*/ t=(STU *)calloc(sizeof(STU),m); for(i=0; iN; i+) bi=ai; for(k=0; km; k+) for(i=j=0; i bj.s) j=i;/*found*/ tk=bj;程序编写请编写函数fun,函数的功能是:删除一维数组中所有相同的数
9、,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,一维数组中的数据是;2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。 注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。int fun(int a, int n) int i, j = 1, k = a0 ; for(i = 1 ; i n ; i+) if(k != ai) aj+=ai ; k = ai ; aj =
10、 0 ; return j ;第6题填空题给顶程序中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时,程序输出:x1=5.000000,x2=3.000000, x1*x1+x1*x2=4.000000请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存在考生文件夹下的BLANK1。C中。不得增行或删行,也不得更改程序的结构!/*found*/double fun(int i, double x, double y) if (i=1)/*found*/ return f1(x); else/*found*/ return f2(x, y);改错题
11、给定程序MODI1。C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构 sl+;/*found*/ ss+; while(*tt) tl+;/*found*/ tt+;程序编写 请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移动到字符串的前部。 例如,字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:DEFGHIJKABC
12、。 注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语 int i; char t; t=w0; for(i=0;istrlen(w)-1;i+) wi=wi+1; wstrlen(w)-1=t;第7题填空题 程序通过定义并赋值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是输出这位学生的信息。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存在考生文件夹下的BLANK1。C中。 不得增行或删行,也不得更改程序的结构!/*found*/void show(STU
13、 tt) int i; printf(n%d %s %c %d-%d-%d, tt.num, tt.name, tt.sex, tt.birthday.year, tt.birthday.month, tt.birthday.day); for(i=0; i3; i+)/*found*/ printf(%5.1f, tt.scorei); printf(n);main( ) STU std= 1,Zhanghua,M,1961,10,8,76.5,78.0,82.0 ; printf(nA student data:n);/*found*/ show(std);改错题 给定程序MODI1。C中
14、函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a0中的数对调、次最大数和a1中的数对调。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! for(i=0;i2;i+) /*found*/ m=i; for(k=i+1;kam) m=k;程序编写 请编写一个函数 unsigned fun (unsigned w),w是一个大于10的无符号整数,若w是n (n=2)位的整数,函数求出w的低n-1位的数作为函数值返回。 例如:w值为5923,则函数返回923;w值为923则返回23。 注意:部分源程序存在文件PROG1.C
15、文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 if(w10000) w %= 10000 ; else if(w1000) w %= 1000 ; else if(w100) w %= 100 ; else if(w10) w %=10 ; return w ; 第8题填空题 给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存在考生文件夹下的BLANK1.C中。
16、 不得增行或删行,也不得更改程序的结构!/*found*/void modify(STU *ss,float a) int i; for(i=0; iscorei *=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(nInput a number : ); scanf(%f,&a);/*found*/ modify(&std,a);改错题long fun ( int k)/*found*/
17、if (k 0) return (k*fun(k-1);/*found*/ else if ( k=0 )程序编写程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(int aN,int n),函数的功能是:使数组左下三角元素中的值乘以n。例如:若n的值为3,a数组中的值为 则返回主程序后a数组中的值应为 。 注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 int i, j; for(i = 0 ; i N ; i+) for(j = 0 ; j next ;/*found*/ whil
18、e (q) if (p-data q-data) t = p-data; p-data = q-data; q-data = t; q = q-next; /*found*/ p = p-next ;改错题 给定程序MODI1。C中函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。 请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!/*found*/ while(*s) if(*s=A & *s=a & *s=z) if(*s=Z) *s=A; else if(
19、*s=z) *s=a; else *s += 1; /*found*/ s+;程序编写标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。 例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;p的值为3。移动后,一维数组中的内容应为:5,6,7,8,9,10,1,2,3,4。注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 int i, j = 0, bN ; for(i = p + 1 ; i n ; i+) bj+ = wi ; for(i = 0 ; i = p ;
20、i+) bj+ = wi ; for(i = 0 ; i n ; i+) wi= bi ; 第10题填空题给定程序中,函数fun的功能是:判定形参的NXN(规定N为奇数)的矩阵是否是幻方,若是,函数返回值为1;不是,函数返回值为0。幻方的判定条件是:矩阵每行、每列、主对角线及反对角线上的元素之和都相等。例如,以下3X3的矩阵就是一个幻方: 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 源程序存在考生文件夹下的BLANK1。C中。 不得增行或删行,也不得更改程序的结构!/*found*/ row=colum= 0; for(j=0; jN; j+) row+=aij;
21、colum+=aji; /*found*/ if( (row!=colum) | (row!=m1) ) return 0; /*found*/ return 1;改错题给定程序MODI1。C中函数fun的功能是:根据整数形参m,计算如下公式的值。 例如,若主函数中输入5,则应输出-0.283333。 请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! for( i = 2; i = m; i+ )/*found*/ t = t-1.0/i;/*found*/ return t;程序编写请编
22、写一个函数,函数的功能是删除字符串中的所有空格。 例如,主函数中输入asd af aa z67,则输出为asdafaaz67。 注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 char *p = str ; int i = 0 ; while(*p) if(*p != ) stri+ = *p ; p+ ; stri = 0 ;第11题填空题 给定程序中,函数fun的功能是将带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2; 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1。C中, 不得增行或删行,也不得更改程