《C语言习题及答案.docx》由会员分享,可在线阅读,更多相关《C语言习题及答案.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、上机操作题 A 卷,4 题,共 70 分第 1 题18 分 源程序文件 上机要求:以下程序包含 4 个错误,请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/*/”注释,将修改后的源程序保存 中。程序改错时不允许转变大的程序构造如函数调用关系与循环构造等。程序功能:从键盘上输入一个整数,转换为 16 进制串并输出。如输入:90则输出:5A再如输入:1234则输出:4D2函数说明:函数 dec2hex 将整数 n 转换为 16 进制的字符串并存贮于 str 数组。(1) 依次计算 n 的 16 进制最低位变量k,转换为 16 进制码字符0至9或A至F存贮于 str 数组,完成一位后,
2、n 除 16 以去掉最低位,然后循环求解更高位。(2) 使用 for 循环逆序 str 数组,变量 i 从 0 递增,变量 j 从 m-1 递减,交换 stri与 strj。主函数 main 输入一个整数,调用 dec2hex 函数转换为 16 进制串,然后输出该字符串。带错误原程序:函数 dec2hex 包含 3 个错误点,main 包含 1 个错误点#include void dec2hex(int n, char str)intm,i,j; char t; m=0;do k = n % 16;if(k9)strm=”0”+k;elsestrm=”A”+k-10;m+;n = n / 16
3、; while (n0);strm = ”0”;for (i=0,j=m-1;iint n;scanf(“%d“,&n); str=dec2hex(n); puts(str);第 2 题17 分,源程序文件 上机要求:按程序功能要求编写程序,并将程序代码保存 中。程序功能:从键盘输入一个大于 2 的正整数 n,求解并输出最接近 n 的素数n 不包括 n。如输入:17则输出13再输入:45则输出43第 3 题17 分,源程序文件 上机要求:按程序功能要求编写程序,并将程序代码保存 中。程序功能:从键盘上输入 5 个整数设每个整数取值 1 至 5,按例如格式输出 5 行数字图形,每行的数字及数字个
4、数与输入数相对应。:如输入:54321则输出表示空格,表示回车: 例如说明:输出共 5 行,居中对齐外形。输入的第 1 个数为 5,则输出的第 1 行有 5 个5,数字之间含有1 个空格,第1 个 5 之前有 5-5=0 个空格;输入的第2 个数为 4,则输出的第 2 行有 4 个 4,数字之间含有 1 个空格,第 1 个 4 之前有 5-4=1 个空格;以此类推。再如输入:23212则输出表示空格,表示回车:例如说明:输出共 5 行,居中对齐外形。输入的第 1 个数为 2,则输出的第 1 行有 2 个2,数字之间含有 1 个空格,第 1 个 2 之前有 5-2=3 个空格;以此类推。第 4
5、题18 分,源程序文件 :从键盘输入一个字符串不多于80 个字符,分别在该字符串中的全部数字字符子串即单个或多个连续的数字字符前参与一个字符$,然后输出处理后的该字符串, 假设该字符串中不包含有数字字符子串,则报告“There are no digits.”。例如,输入:abcd4,Efghi*123p87KKK90346 xyz输出:abcd$4,Efghi*$123p$87KKK$9034$6 xyz又如,输入:abcd,Efghi*Pkkk#%xyz输出:There are no digits.:上机操作题 A 卷,4 题,共 70 分修正程序原代码第 1 题、参考答案#include
6、void dec2hex(int n, char str)intm,i,j,k; /*/intm,i,j;char t;m=0;do k=n%16;if(k9strm=”A”+k-10;m+;n = n / 16; while (n0);strm = ”0”;for (i=0,j=m-1;ij;i+,j-)t=stri; /*/ stri=strj; strj=t;;stri=t;赋值方向错误mainchar str80;int n;scanf(“%d“,&n); dec2hex(n,str); puts(str); return 0;/*/str=dec2hex(n);调用错误第 2 题/*
7、 1-A-2 */ #include int main1;i-) for(j=2;ji;j+)if(i%j=0)break; if(i=j)break;printf(“%dn“,i); return 0;第 3 题 #include “ int mainint i,j,a5;for(i=0;i5;i+) scanf(“%d“,a+i);for(i=0;i5;i+) for(j=0;j5-ai;j+)printf(“ “);for(j=0;jai;j+)printf(“%d “,ai); printf(“n“);return 0;第 4 题/* 1-A-4(1) */#include ,#inc
8、lude “Int mainchar a81=0,b81=0;int i,j,d=0; gets(a); for(j=i=0;ai;i+)if(ai”9”)d=0;else if(d=0) d=1;bj+=”$”; $if(i=j)bj+=ai;puts(“There are no digits.“); elseputs(b);/* 1-A-4(2) */#include “ int mainchar a81=0,b81=0;int i,j; gets(a);for(j=i=0;ai;i+)if(ai”9”) bj+=ai; continue; for(bj+=”$”; ai=”0”&ai=”
9、9”;i+)bj+=ai;i-;if(i=j)puts(“There are no digits.“); elseputs(b); return 0;上机操作题 B 卷,4 题,共 70 分第 1 题18 分 源程序文件 E:answer ,上机要求:以下程序包含 4 个错误,请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/*/”注释,将修改后的源程序保存到 E:answer 中。程序改错时不允许转变大的程序构造如函数调用关系与循环构造等。程序功能:从键盘上输入一个 16 进制串,转换为 10 进制整数并输出。-如输入:5A则输出:90再如输入: 4D2则输出:1234函数说明:
10、函数 hex2dec 将 16 进制字符串 str 转换为 10 进制的整数并返回。主函数 main 输入一个字符串,调用 hex2dec 函数转换 16 进制串,然后输出整数。带错误原程序:函数 hex2dec 包含 3 个错误点,main 包含 1 个错误点#include int hex2dec(char *str)|intm,i,k; m=1;for (i=0,stri!=”0”;i+)if (stri=”0” & stri=”A” & stri=”a” & strin 不包括 n。例如:输入:17输出:19输入:45输出:47¥第 3 题10 分,源程序文件 E:answer 上机要
11、求:按程序功能要求编写程序,并将程序代码保存到 E:answer 中。程序功能:从键盘上输入 5 个整数设每个整数取值 1 至 5,按例如格式输出 5 行数字图形,每行的数字及数字个数与输入数相对应。如输入:54321则输出表示空格,表示回车: 例如说明:输出共 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则输出表示空
12、格,表示回车:例如说明:输出共 5 行,右对齐外形。输入的第1 个数为 2,则输出的第1 行有 2 个 2, 数字之间含有 1 个空格,第 1 个 2 之前有 2*(5-2)=6 个空格;以此类推。第 4 题源程序文件 E:answer ,20 分上机要求:按程序功能要求编写程序,并将程序代码保存到 E:answer 中。程序功能:从键盘输入一个字符串不多于80 个字符,分别在该字符串中的全部小写字母字符子串即单个或多个连续的小写字母字符前参与一个字符#,然后输出处理后的该字符串,假设该字符串中不包含有小写字母字符子串,则报告“ There are no lowercase letters.”
13、。如输入: a,Efghi*123p87KKKxyz 则输出:”#a,E#fghi*123#p87KKK#xyz又如,再如输入:1234,ABCD$#*!(100%)&KK则输出There are no lowercase letters.上机操作题 B 卷,4 题,共 70 分参考答案,第 1 题修正程序#include int hex2dec(char *str)原代码【intm,i,k;m=0;/*/for (i=0;stri!=”0”;i+)/*/m=1;初始化错误for(i=0,stri!=”0”;i+)分号错误if (stri=”0” & stri=”A” & stri=”a” &
14、 stri=”f”)k=stri-”a”+10;/*/elsek=stri-a+10;缺单引号return m;m=16*m+k;return m;mainchar str80; int n; gets(str);n=hex2dec(str); printf(“%dn“,n);“/*/gets(str80);多数组下标第 2 题 #include int main int i,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(“%dn“,i); return 0;第 3
15、题#include int mainint i,j,a5;for(i=0;i5;i+) scanf(“%d“,a+i);for(i=0; i5; i+) for(j=0; j5-ai; j+)printf(“);for(j=0; jai; j+)printf(“%d “, ai); printf(“n“);return 0;第 4 题/* 1-A-4(1) */ #include “ mainchar a81=0,b81=0;int i,j,d=0; gets(a); for(j=i=0;ai;i+)if(ai”9”)d=0;else if(d=0) d=1;bj+=”$”; bj+=ai;if(i=j)puts(“There are no digits.“); elseputs(b);/* 1-A-4(2) */ #include “ mainchar a81=0,b81=0;int i,j; gets(a);for(j=i=0;ai;i+)if(ai”9”) bj+=ai; continue; for(bj+=”$”; ai=”0”&ai=”9”;i+)bj+=ai;i-;if(i=j)puts(“There are no digits.“); elseputs(b);