1、12套C语言上机试题及参考答案第一套C语言上机试卷一、改错题【题目】本程序计算并输出二维数组a的每一列最小元素的值及其行号、列号,整个数组a中最小元素的值及其行号、列号。含有错误的源程序为:#includestdio.h#define n 4#define m 3int anm,sm;p(int j)int k,i,x;Sj=x=a0j;i=0;for(k=1;kn;k+)if(akjx)i=k;sj=x=akj;return i;main()int indexm,i,j,k; for(i=0;in;i+) for(j=0;jm;j+) scanf(%d,&aij); for(j=0;jm;j
2、+) indexj=pj; printf(a%d%d=%dn,indexj,j,sj); i=s0;k=0; for(j=1;jm;j+) if(sj=d i+1,i=0,1,k-2,则m就是一个降序数,如21、433是两个降序数。含有错误的源程序如下:#includevoid main()int num,k,di,n,isdec; long m; char digit10;scanf(num=%d,&num); for(;num0;num-) n=0;isdec=1;k=0; scanf(%ld,&m); while(m!=0) di=m%10; digitn+=m%10+0; *数字字符与
3、相应数字的转换* m=m/10; if(k=0;n-) putchar(digitn); putchar( );*使用putchar要加#include* if(isdec)printf( is decrea order numbern); else printf(is not decrea order numbern); 【要求】1将上述程序录入到文件myf1.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。2改错时,可以修改语句中的一部分内容,调整语句的次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。3改正后的源程序myf1.c
4、保存在考试盘的根目录下,供阅卷用,否则不予评分。二、编程题【题目】程序功能:将一字符串做压缩处理。编程要求:1编写一个函数int compress (char s ),将s中连续出现的多个相同字符压缩成一个字符,统计被删除的字符个数,并返回被删除的字符个数。2编写主函数main。从键盘上读入一行字符数据放入一个字符型数组中,调用compress函数对该字符数组中的字符做压缩处理,将压缩后的字符串写入结果文件myf2.out中。3用以下数据测试程序: I wwillll successful & and you too ! #【要求】1将源程序文件取名为myf2.c,输出结果文件取名为myf2.
5、out。2数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。3源程序文件和运行结果文件均需保存在考试盘的根目录下,供阅卷用。4不要复制扩展名为OBJ和EXE的文件到考试盘上。第三套C语言上机试卷一、改错题【题目】下面的程序能够从键盘上接受一个含有空格的字符串(scsnf遇到空格就停止输入,应用gets),然后按照字典序对所有字符排序,再删除重复出现的字符。含有错误的源程序如下:#include#include stdio.hvoid main()char str100,*p,*q,*r,c; printf(Input a string:);gets(str); for
6、(p=str;*p;p+) for(q=r=p;*q;q+) if(*r*q)r=q; if(r!=p)c=*r;*r=*p;*p=c; for(p=str;*p;p+) for(q=p;*p=*q;q+); strcpy(p+1,q);*用strcmp要加#include* printf(result:%sn,str);【要求】1将上述程序录入到文件myf1.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。2改错时,可以修改语句中的一部分内容,调整语句的次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。3改正后的源程序myf1.c保
7、存在考试盘的根目录下,供阅卷用,否则不予评分。二、编程题【题目】程序功能:将一个44二维数组中全部元素逆时针旋转90。编程要求如下:1编写函数int rotate (int a44, int b44),将数组a中元素逆时针旋转90后的元素保存在数组b中,计算b数组主对角线上全部元素之和作为函数的返回值。2编写主函数main,从键盘上读入16个数据放入一个二维数组中,调用rotate函数,将旋转后的二维数组全部元素按行写入到结果文件myf2.out中,最后将旋转后数组中主对角线上全部元素之和写入到结果文件myf2.out中。3使用以下测试数据: 旋转前: 旋转后:1 5 9 13 13 14 1
8、5 162 6 10 14 9 10 11 123 7 11 15 5 6 7 84 8 12 16 1 2 3 4【要求】1将源程序文件取名为myf2.c,输出结果文件取名为myf2.out。2数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。3源程序文件和运行结果文件均需保存在考试盘的根目录下,供阅卷用。4不要复制扩展名为OBJ和EXE的文件到考试盘上。第四套C语言上机试卷一、 改错题【题目】使用Windows搜索工具在磁盘中查找文件时,在被查找的文件名文本框内允许出现含有通配符“*”和“?”的字符串,以达到搜索多个文件的目的,称这样一个字符串为模板。搜索的过程就
9、是在已知的若干文件名字符串中查找与模板匹配的文件名。以下程序实现模板与字符串的匹配判断功能。给出一个模板pat及一个字符串str,模板中可能含有通配符“*”和“?”,其中“*”表示在该位置上有0个或多个任意字符,“?”表示在该位置上有一个任意字符。函数match对它们作匹配判断后,返回1表示匹配,返回0表示不匹配。例如,模板为“e*p?e”,若字符串为“example”,则两者是匹配的;若字符串为“europe”,则两者是不匹配的。程序正确时,当输入的模板为“e*p?e”,若输入字符串为“example”时,则输出“e*p?e match example”;若输入字符串为“europe”时,则
10、输出“e*p?e unmatch europe”。含有错误的源程序如下:void match(char *pat,char str)char *p=pat,*q=str; int i=0; while(*p!=NULL)&(*q!=NULL) if(*p= =*q|*p= =?)p+,q+; else if(*p= =*) p+; while(*q!=*p&*q!=NULL)q+; else i=0;break; if(*p!=NULL|*q!=NULL)i=0; return i;main()char a10,b10; int yesno; gets(a);gets(b); yesno=ma
11、tch(a,b); printf(%s %s %sn,a,yesno?match:unmatch,b);【要求】1 将上述程序录入到文件myf1.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。2 改错时,可以修改语句中的一部分内容,调整语句的次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。3 改正后的源程序myf1.c保存在考试盘的根目录下,供阅卷用,否则不予评分。二、 编程题【题目】有一些十进制整数对ab和cd具有如下特性:abcd=badc,其中,a、b是不同的数字且c、d也是不同的数字。例如:1242=2124,1263=2
12、136,1284=2148请按如下要求编程:1 编写函数int inv(int x),完成将两位数x的个位与十位对换,返回对换后新的两位数。2 主函数中找出m、n取值在3050之间,且满足等式:m*n=inv(m)*inv(n)的所有m、n值,并按上述等式的格式写入到文件myf2.out中(每个等式一行,可用*表示)。【要求】1 将源程序文件取名为myf2.c,输出结果文件取名为myf2.out。2 数据文件的打开、使用和关闭等操作均用C语言标准库中缓冲文件系统的文件操作函数实现。3 源程序文件和运行结果文件均需保存在考试盘的根目录下,供阅卷用。4 不要将myf2.obj和myf2.exe保存到考试盘上。第五套C语言上机试卷一、改错题【题目】某数列的前两项是3和2,其后续项根据前
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1