C语言习题及答案97310.docx

上传人:b****4 文档编号:5026179 上传时间:2022-12-12 格式:DOCX 页数:14 大小:19.23KB
下载 相关 举报
C语言习题及答案97310.docx_第1页
第1页 / 共14页
C语言习题及答案97310.docx_第2页
第2页 / 共14页
C语言习题及答案97310.docx_第3页
第3页 / 共14页
C语言习题及答案97310.docx_第4页
第4页 / 共14页
C语言习题及答案97310.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C语言习题及答案97310.docx

《C语言习题及答案97310.docx》由会员分享,可在线阅读,更多相关《C语言习题及答案97310.docx(14页珍藏版)》请在冰豆网上搜索。

C语言习题及答案97310.docx

C语言习题及答案97310

上机操作题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数组,完成一位后,n除16以去掉最低位,然后循环求解更高位。

(2)使用for循环逆序str数组,变量i从0递增,变量j从m-1递减,交换str[i]与str[j]。

主函数main输入一个整数,调用dec2hex函数转换为16进制串,然后输出该字符串。

带错误原程序:

(函数dec2hex包含3个错误点,main包含1个错误点)

#include<>

voiddec2hex(intn,charstr[])

{

intm,i,j;

chart;

m=0;

do{

k=n%16;

if(k>9)

str[m]='0'+k;

else

str[m]='A'+k-10;

m++;

n=n/16;

}while(n>0);

str[m]='\0';

for(i=0,j=m-1;i

{

str[i]=t;

str[i]=str[j];

str[j]=t;

}

}

main()

{

charstr[80];

intn;

scanf("%d",&n);

str=dec2hex(n);

puts(str);

}

第2题(17分,源程序文件)

上机要求:

按程序功能要求编写程序,并将程序代码保存中。

程序功能:

从键盘输入一个大于2的正整数n,求解并输出最接近n的素数(

如输入:

17

则输出

13

再输入:

45

则输出

43

第3题(17分,源程序文件)

上机要求:

按程序功能要求编写程序,并将程序代码保存中。

程序功能:

从键盘上输入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↙

□□□2□2↙

示例说明:

输出共5行,居中对齐形状。

输入的第1个数为2,则输出的第1行有2个2,数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。

第4题(18分,源程序文件)

从键盘输入一个字符串(不多于80个字符),分别在该字符串中的所有数字字符子串(即单个或多个连续的数字字符)前加入一个字符$,然后输出处理后的该字符串,如果该字符串中不包含有数字字符子串,则报告“Therearenodigits.”。

例如,

输入:

abcd4,Efghi*123p87KKK90346xyz

输出:

abcd$4,Efghi*$123p$87KKK$9034$6xyz

又如,

输入:

abcd,Efghi*Pkkk#%xyz

输出:

Therearenodigits.

 

上机操作题A卷,4题,共70分

参考答案

第1题()

修正程序

原代码

#include<>

voiddec2hex(intn,charstr[])

{

intm,i,j,k;/***/

chart;

m=0;

do{

k=n%16;

if(k<9)/***/

str[m]='0'+k;

else

str[m]='A'+k-10;

m++;

n=n/16;

}while(n>0);

str[m]='\0';

for(i=0,j=m-1;i

{

t=str[i];/***/

str[i]=str[j];

str[j]=t;

}

}

main()

{

charstr[80];

intn;

scanf("%d",&n);

dec2hex(n,str);/***/

puts(str);

return0;

}

 

intm,i,j;

缺变量定义

 

k>9

 

str[i]=t;

赋值方向错误

 

str=dec2hex(n);

调用错误

第2题()

/*1-A-2*/

#include<>

intmain()

{inti,j,n;

scanf("%d",&n);

for(i=n-1;i>1;i--)

{for(j=2;j

if(i%j==0)break;

if(i==j)break;

}

printf("%d\n",i);

return0;

}

第3题()

#include""

intmain()

{

inti,j,a[5];

for(i=0;i<5;i++)

scanf("%d",a+i);

for(i=0;i<5;i++)

{for(j=0;j<5-a[i];j++)

printf("");

for(j=0;j

printf("%d",a[i]);

printf("\n");

}

return0;

}

第4题()

/*1-A-4

(1)*/

#include<>

#include""

Intmain()

{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.");

else

puts(b);

}

/*1-A-4

(2)*/

#include""

intmain()

{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.");

else

puts(b);

return0;

}

上机操作题B卷,4题,共70分

第1题(18分源程序文件E:

\answer\),

上机要求:

下列程序包含4个错误,请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:

\answer\中。

程序改错时不允许改变大的程序结构(如函数调用关系与循环结构等)。

程序功能:

从键盘上输入一个16进制串,转换为10进制整数并输出。

如输入:

5A

则输出:

90

再如输入:

4D2

则输出:

1234

函数说明:

函数hex2dec将16进制字符串str转换为10进制的整数并返回。

主函数main输入一个字符串,调用hex2dec函数转换16进制串,然后输出整数。

带错误原程序:

(函数hex2dec包含3个错误点,main包含1个错误点)

#include<>

inthex2dec(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;

else

returnm;

m=16*m+k;

}

returnm;

}

main()

{

charstr[80];

intn;

gets(str[80]);

n=hex2dec(str);

printf("%d\n",n);

}

第2题(7分,源程序文件)

上机要求:

按程序功能要求编写程序,并将程序代码保存到E:

\answer\中。

程序功能:

从键盘输入一个大于2的正整数n,求解并输出最接近n的素数(>n不包括n)。

例如:

输入:

17输出:

19

输入:

45输出:

47

 

第3题(10分,源程序文件E:

\answer\)

上机要求:

按程序功能要求编写程序,并将程序代码保存到E:

\answer\中。

程序功能:

从键盘上输入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\),20分

上机要求:

按程序功能要求编写程序,并将程序代码保存到E:

\answer\中。

程序功能:

从键盘输入一个字符串(不多于80个字符),分别在该字符串中的所有小写字母字符子串(即单个或多个连续的小写字母字符)前加入一个字符#,然后输出处理后的该字符串,如果该字符串中不包含有小写字母字符子串,则报告“Therearenolowercaseletters.”。

如输入:

a,Efghi*123p87KKKxyz

则输出:

#a,E#fghi*123#p87KKK#xyz

又如,

再如输入:

1234,ABCD$#*!

(100%)&KK

则输出

Therearenolowercaseletters.

 

上机操作题B卷,4题,共70分

参考答案

第1题()

修正程序

原代码

#include<>

inthex2dec(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;/***/

else

returnm;

m=16*m+k;

}

returnm;

}

main()

{

charstr[80];

intn;

gets(str);/***/

n=hex2dec(str);

printf("%d\n",n);

}

 

m=1;

初始化错误

for(i=0,str[i]!

='\0';i++)

分号错误

 

k=str[i]-a+10;

缺单引号

 

gets(str[80]);

多数组下标

第2题()

#include<>

intmain()

{inti,j,n;

scanf("%d",&n);

for(i=n+1;i>1;i++)

{for(j=2;j

if(i%j==0)break;

if(i==j)break;

}

printf("%d\n",i);

return0;

}

第3题()

#include<>

intmain()

{

inti,j,a[5];

for(i=0;i<5;i++)

scanf("%d",a+i);

for(i=0;i<5;i++)

{for(j=0;j<5-a[i];j++)

printf("");

for(j=0;j

printf("%d",a[i]);

printf("\n");

}

return0;

}

第4题()

/*1-A-4

(1)*/

#include""

main()

{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.");

else

puts(b);

}

/*1-A-4

(2)*/

#include""

main()

{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.");

else

puts(b);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1