C语言习题及答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

(101操作题)1/10上机操作题A卷,4题,共70分第1题(18分源程序文件1-A-1.C)上机要求:下列程序包含4个错误,请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存1-A-1.C中。程序改错时不允许改变大的程序结构(如函数调用关系与循环结构等)。程序功能:从键盘上输入一个整数,转换为16进制串并输出。如输入:90则输出:5A再如输入:1234则输出:4D2函数说明:函数dec2hex将整数n转换为16进制的字符串并存贮于str数组。(1)依次计算n的16进制最低位(变量k),转换为16进制码(字符’0’至’9’或’A’至’F’)存贮于str数组,完成一位后,n除16以去掉最低位,然后循环求解更高位。(2)使用for循环逆序str数组,变量i从0递增,变量j从m-1递减,交换str[i]与str[j]。主函数main输入一个整数,调用dec2hex函数转换为16进制串,然后输出该字符串。带错误原程序:(函数dec2hex包含3个错误点,main包含1个错误点)#includestdio.hvoiddec2hex(intn,charstr[]){intm,i,j;chart;m=0;do{k=n%16;if(k9)str[m]='0'+k;elsestr[m]='A'+k-10;m++;n=n/16;}while(n0);str[m]='\0';for(i=0,j=m-1;ij;i++,j--){str[i]=t;str[i]=str[j];str[j]=t;}}main()(101操作题)2/10{charstr[80];intn;scanf(%d,&n);str=dec2hex(n);puts(str);}第2题(17分,源程序文件1-A-2.C)上机要求:按程序功能要求编写程序,并将程序代码保存1-A-2.C中。程序功能:从键盘输入一个大于2的正整数n,求解并输出最接近n的素数(n不包括n)。如输入:17则输出13再输入:45则输出43第3题(17分,源程序文件1-A-3.C)上机要求:按程序功能要求编写程序,并将程序代码保存1-A-3.C中。程序功能:从键盘上输入5个整数(设每个整数取值1至5),按示例格式输出5行数字图形,每行的数字及数字个数与输入数相对应。如输入:54321则输出(□表示空格,↙表示回车):5□5□5□5□5↙□4□4□4□4↙□□3□3□3↙□□□2□2↙□□□□1↙示例说明:输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个5,数字之间含有1个空格,第1个5之前有5-5=0个空格;输入的第2个数为4,则输出的第2行有4个4,数字之间含有1个空格,第1个4之前有5-4=1个空格;以此类推。再如输入:23212则输出(□表示空格,↙表示回车):□□□2□2↙□□3□3□3↙□□□2□2↙□□□□1↙(101操作题)3/10□□□2□2↙示例说明:输出共5行,居中对齐形状。输入的第1个数为2,则输出的第1行有2个2,数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。第4题(18分,源程序文件1-A-4.C)从键盘输入一个字符串(不多于80个字符),分别在该字符串中的所有数字字符子串(即单个或多个连续的数字字符)前加入一个字符$,然后输出处理后的该字符串,如果该字符串中不包含有数字字符子串,则报告“Therearenodigits.”。例如,输入:abcd4,Efghi*123p87KKK90346xyz输出:abcd$4,Efghi*$123p$87KKK$9034$6xyz又如,输入:abcd,Efghi*Pkkk#%xyz输出:Therearenodigits.上机操作题A卷,4题,共70分参考答案第1题(1-A-1.c)修正程序原代码#includestdio.hvoiddec2hex(intn,charstr[]){intm,i,j,k;/***/chart;m=0;do{k=n%16;if(k9)/***/intm,i,j;缺变量定义k9(101操作题)4/10str[m]='0'+k;elsestr[m]='A'+k-10;m++;n=n/16;}while(n0);str[m]='\0';for(i=0,j=m-1;ij;i++,j--){t=str[i];/***/str[i]=str[j];str[j]=t;}}main(){charstr[80];intn;scanf(%d,&n);dec2hex(n,str);/***/puts(str);return0;}str[i]=t;赋值方向错误str=dec2hex(n);调用错误第2题(1-A-2.c)/*1-A-2*/#includestdio.hintmain(){inti,j,n;scanf(%d,&n);for(i=n-1;i1;i--){for(j=2;ji;j++)if(i%j==0)break;if(i==j)break;}printf(%d\n,i);return0;}第3题(1-A-3.c)#includestdio.hintmain(){inti,j,a[5];for(i=0;i5;i++)scanf(%d,a+i);(101操作题)5/10for(i=0;i5;i++){for(j=0;j5-a[i];j++)printf();for(j=0;ja[i];j++)printf(%d,a[i]);printf(\n);}return0;}第4题(1-A-4.c)/*1-A-4(1)*/#includestdio.h#includestdio.hIntmain(){chara[81]={0},b[81]={0};inti,j,d=0;gets(a);for(j=i=0;a[i];i++){if(a[i]'0'||a[i]'9')d=0;elseif(d==0){d=1;b[j++]='$';}b[j++]=a[i];}if(i==j)puts(Therearenodigits.);elseputs(b);}/*1-A-4(2)*/#includestdio.hintmain(){chara[81]={0},b[81]={0};inti,j;gets(a);for(j=i=0;a[i];i++){if(a[i]'0'||a[i]'9'){b[j++]=a[i];continue;}for(b[j++]='$';a[i]='0'&&a[i]='9';i++)b[j++]=a[i];i--;}if(i==j)puts(Therearenodigits.);elseputs(b);(101操作题)6/10return0;}上机操作题B卷,4题,共70分第1题(18分源程序文件E:\answer\1-B-1.C),上机要求:下列程序包含4个错误,请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序改错时不允许改变大的程序结构(如函数调用关系与循环结构等)。程序功能:从键盘上输入一个16进制串,转换为10进制整数并输出。如输入:5A则输出:90再如输入:4D2则输出:1234函数说明:函数hex2dec将16进制字符串str转换为10进制的整数并返回。主函数main输入一个字符串,调用hex2dec函数转换16进制串,然后输出整数。带错误原程序:(函数hex2dec包含3个错误点,main包含1个错误点)#includestdio.hinthex2dec(char*str){intm,i,k;m=1;for(i=0,str[i]!='\0';i++){if(str[i]='0'&&str[i]='9')k=str[i]-'0';elseif(str[i]='A'&&str[i]='F')k=str[i]-'A'+10;elseif(str[i]='a'&&str[i]='f')k=str[i]-a+10;elsereturnm;m=16*m+k;}returnm;}main(){charstr[80];intn;gets(str[80]);n=hex2dec(str);printf(%d\n,n);(101操作题)7/10}第2题(7分,源程序文件1-B-2.C)上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:从键盘输入一个大于2的正整数n,求解并输出最接近n的素数(n不包括n)。例如:输入:17输出:19输入:45输出:47第3题(10分,源程序文件E:\answer\1-B-3.C)上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上输入5个整数(设每个整数取值1至5),按示例格式输出5行数字图形,每行的数字及数字个数与输入数相对应。如输入:54321则输出(□表示空格,↙表示回车):5□5□5□5□5↙□□4□4□4□4↙□□□□3□3□3↙□□□□□□2□2↙□□□□□□□□1↙示例说明:输出共5行,右对齐形状。输入的第1个数为5,则输出的第1行有5个5,数字之间含有1个空格,第1个5之前有2*(5-5)=0个空格;输入的第2个数为4,则输出的第2行有4个4,数字之间含有1个空格,第1个4之前有2*(5-4)=2个空格;以此类推。再如输入:23432则输出(□表示空格,↙表示回车):□□□□□□2□2↙□□□□3□3□3↙□□4□4□4□4↙□□□□3□3□3↙□□□□□□2□2↙示例说明:输出共5行,右对齐形状。输入的第1个数为2,则输出的第1行有2个2,数字之间含有1个空格,第1个2之前有2*(5-2)=6个空格;以此类推。第4题(源程序文件E:\answer\1-B-4.C),20分上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:从键盘输入一个字符串(不多于80个字符),分别在该字符串中的所有小写字母字符子串(即单个或多个连续的小写字母字符)前加入一个字符#,然后输出处理后的该字符串,如果该字符串中不包含有小写字母字符子串,则报告“Therearenolowercaseletters.”。如输入:a,Efghi*123p87KKKxyz(101操作题)8/10则输出:#a,E#fghi*123#p87KKK#xyz又如,再如输入:1234,ABCD$#*!(100%)&KK则输出Therearenolowercaseletters.上机操作题B卷,4题,共70分参考答案第1题(1-B-1.c)修正程序原代码#includestdio.hinthex2dec(char*str){intm,i,k;m=0;/***/for(i=0;str[i]!='\0';i++)/***/{if(str[i]='0'&&str[i]='9')k=str[i]-'0';elseif(str[i]='A'&&str[i]='F')k=str[i]-'A'+10;elseif(str[i]='a'&&str[i]='f')k=str[i]-'a'+10;/***/elsereturnm;m=16*m+k;}m=1;初始化错误for(i=0,str[i]!='\0';i++)分号错误k=str[i]-a+10;缺单引号(101操作题)9/10returnm;}main(){charstr[80];intn;gets(str);/***/n=hex2dec(str);printf(%d\n,n);}gets(str[80]);多数组下标第2题(1-B-2.c)#includestdio.hintmain(){inti,j,n;scanf(%d,&n);for(i=n+1;i1;i++){for(j=2

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功