完整版C教材习题答案18章.docx

上传人:b****5 文档编号:6375083 上传时间:2023-01-05 格式:DOCX 页数:26 大小:71.43KB
下载 相关 举报
完整版C教材习题答案18章.docx_第1页
第1页 / 共26页
完整版C教材习题答案18章.docx_第2页
第2页 / 共26页
完整版C教材习题答案18章.docx_第3页
第3页 / 共26页
完整版C教材习题答案18章.docx_第4页
第4页 / 共26页
完整版C教材习题答案18章.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

完整版C教材习题答案18章.docx

《完整版C教材习题答案18章.docx》由会员分享,可在线阅读,更多相关《完整版C教材习题答案18章.docx(26页珍藏版)》请在冰豆网上搜索。

完整版C教材习题答案18章.docx

完整版C教材习题答案18章

第一章C语言概述

二、运行程序写结果

1

2

3

x=50

m=100,n=50,p=5000

************************************

 

第二章数据类型、表达式及运算

一、简答题

1、2、3、4

5

6

7

0892

3.8e-3.14

1)charc1;inta1;

2)inta,b;floatx,y;

3)chara,b;

4)chari;(不能与关键字同)

5)inta,b;

6)inta,b,c;

7)inta;floatx,y;(变量不能同名)

1)56

2)910

3)1112

二、运行程序写结果

1

2

3

4

5

6

7

14,14

a=20,b=10

*p1=20,*p2=10

c=4

girl

x1=11

x2=1

x3=-8

0

49,1

58,:

72

三、改错题

1、

main()

{

inta=6,b=8;//变量间逗号分隔

intc;

c=a*b;

printf("%d",c);

}

2、

main()

{

floatf=7.12;

charc='c';//字符常量为字符变量赋值

printf("%d\n",(int)f%3);//强制转换f,是被除数为整数

printf("%c",c);

第三章顺序结构程序设计

一、选择题

1

2

3

4

5

6

7

8

9

10

D

A

B

A

D

C

二、运行程序写结果

1

2

3

4

5

6

7

109

2,03,0

4213,14

10

40

4

4

65Da

10

40

20

30

10

40

20

30

三、编程题

1.编写程序,实现输入任意一个小字符,输出对应的大写字母。

2.编写程序,从键盘上获取任意圆半径,输出该圆的面积和对应的球体体积,要求保留两位小数。

第四章选择结构程序设计

一、选择题

1

2

3

4

B

C

C

B

二、运行程序写结果

1

2

3

4

5

6

211

75

2

1,0,0

55

170

7

8

9

10

2,03,-1

2

OK!

NO!

ERROR!

31

三、编程题

1.输入圆的半径r和一个整型数k,当k=1时,计算圆的面积;但k=2时,计算圆的周长;当k=3时,既要求求圆面积也要求出圆的面积。

编程实现以上功能。

2.编写程序代码实现分段函数的计算。

3编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。

设:

90分以上为‘A’;80~89分为‘B’;70~79分为‘C’;60~69分为‘D’;60分以下为‘E’。

方法一:

采用if多分支语句实现

#include

main()

{

intscore;

charch;

printf("请输入一个百分制分数:

");

scanf("%d",&score);

if(score>100||score<0){

printf("非法输入!

\n");

return0;

}

if(score>=90)ch='A';

elseif(score>=80)

ch='B';

elseif(score>=70)

ch='C';

elseif(score>=60)

ch='D';

elsech='E';

printf("五分制成绩为%c。

\n",ch);

}

方法二:

采用switch语句实现

#include

main()

{

intscore;

charch;

printf("请输入一个百分制分数:

");

scanf("%d",&score);

if(score>100||score<0){

printf("非法输入!

\n");

return0;

}

switch(score/10){

case10:

case9:

ch='A';break;

case8:

ch='B';break;

case7:

ch='C';break;

case6:

ch='D';break;

default:

ch='E';break;

}

printf("五分制成绩为%c。

\n",ch);

}

4.输入三角形的三条边长度,判断是否能够构成合理的三角形,如果可以则输出三角形的面积,否则给出相应的提示。

#include

main(){

floata,b,c,l,s;

printf("请输入三角形三条边:

");

scanf("%f,%f,%f",&a,&b,&c);

if(a+b>c&&b+c>a&&c+a>b){

l=(a+b+c)/2;

s=sqrt(l*(l-a)*(l-b)*(l-c));

printf("三角形面积为:

%.2f\n",s);

}

else

printf("您输入的三条边无法构成一个合法的三角形。

\n");

}

第五章循环结构程序设计

一、选择题

1

2

3

4

C

D

A

B

二、运行程序写结果

1

2

3

4

5

6

8

#*#*#MYM

1

31

3

8712

7

8

9

10

s=6

6

17

三、编程题

1.编写程序实现计算1+1/2!

+1/3!

+……+1/n!

#include

main(){

floats=0;

inti,j,n,t;

printf("请输入n的值:

");

scanf("%d",&n);

for(i=1;i<=n;i++){

t=1;

for(j=1;j<=i;j++)

t*=j;

s+=1.0/t;

}

printf("%.2f\n",s);

}

2.输出100以内所有能被13和17整除的数。

#include

main(){

inti;

for(i=1;i<=100;i++)

if(i%13==0||i%17==0)

printf("%4d",i);

}

3整元换零钱问题。

把5元兑换成1角,2角,5角的硬币,一共有多少种换法,编写求解此问题。

#include

main(){

inti,j,k,n=0;//i,j,k分别代表5角,2角,1角硬币的个数,n用于统计兑换硬币的种数

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

for(j=0;j<=50;j++)

for(k=0;k<=100;k++)

if(i*5+j*2+k*1==50){

printf("5角:

%d个\t2角:

%d个\t1角:

%d个\n",i,j,k);

n++;

}

printf("5元换成1角,2角,5角硬币的方法共%d种。

\n",n);

}

4.计算

#include

main(){

intk;

floatrel1=0,rel2=0,rel3=0;

for(k=1;k<=50;k++)

rel1+=1.0/(k+3);

for(k=1;k<=20;k++)

rel2+=1.0/(k*k);

for(k=5;k<=10;k++)

rel3+=1.0/(k*k*k);

printf("计算结果是:

%.2f",rel1+rel2+rel3);

}

5.编写程序实现对输入的10个整数进行降序排序输出。

#include

#defineN10

main(){

inti,j,t,a[N];

printf("请输入%d个整数:

\n",N);

for(i=0;i

scanf("%d",&a[i]);

for(i=0;i

for(j=i+1;j

if(a[i]>a[j]){

t=a[i];a[i]=a[j];a[j]=t;}

for(i=0;i

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

}

6.编写程序实现功能:

从键盘上输入若干个学生的成绩,统计并输出最高成绩、最低成绩和平均成绩,当输入-1号是结束输入。

#include

main(){

inti=0;

floatscore,sum=0,max=0,min=0;

printf("请输入第%d个整数:

",i+1);

scanf("%d",&score);

if(score>0){

max=score;

min=score;

i++;

}

else

{

max=0;

min=0;

printf("最高成绩为:

%.2f,最低成绩为:

%.2f,平均成绩为:

%.2f\n",0,0,0);

return;

}

while(score>0)

{

sum+=score;

if(score>max)max=score;

if(score

printf("请输入第%d个整数:

",i+1);

scanf("%d",&score);

i++

}

printf("最高成绩为:

%.2f,最低成绩为:

%.2f,平均成绩为:

%.2f\n",max,min,sum/(i-1);

}19820926

第六章数组和指针

一、选择题

1

2

3

4

5

6

7

8

9

10

11

B

C

B

C

C

D

A

D(C?

B

C

B

二、运行程序写结果

1

2

3

4

5

k=2a=3b=2

19

8

71

6385

三、编写程序代码

1.编写程序,将输入的任意字符串中包含的所有数字字符删除,并输出。

#include

#defineN80

main()

{

chars1[N],s2[N],i=0,j=0;

printf("请输入一个字符串:

\n",s1);

scanf("%s",s1);

while(s1[i]!

='\0'){

if(s1[i]>='9'||s1[i]<='0')

{

s2[j]=s1[i];

j++;

}

i++;

}

s2[j]='\0';

printf("该字符串删除数字字符后结果值为:

%s\n",s2);

}

 

2.编写程序,对输入的字符串中字母,数字,及其它字符统计个数。

#include

#defineN80

main()

{

chars[N],i=0,k1=0,k2=0,k3=0;

//k1表示数字个数,k2表示字母个数,k3表示其他字符个数

printf("请输入一个字符串:

\n",s);

scanf("%s",s);

while(s[i]!

='\0'){

if(s[i]>='0'&&s[i]<='9')

k1++;

else

if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')

k2++;

elsek3++;

i++;

}

printf("数字字符个数:

%d,字母个数:

%d,其他字符个数:

%d\n",k1,k2,k3);

}

3.编写程序,实现矩阵的转置。

#include

#defineN3

#defineM4

main()

{

inta[N][M],b[M][N],i,j;

printf("请输入一个%d行%d列矩阵:

\n",N,M);

for(i=0;i

for(j=0;j

scanf("%d",&a[i][j]);

for(i=0;i

for(j=0;j

b[j][i]=a[i][j];

printf("该矩阵转置后的结果为:

\n");

for(i=0;i

for(j=0;j

printf("%5d",b[i][j]);

printf("\n");

}

}

4.使用指针数组,编写一个程序实现输入的月份号,输出月份号对应的英文名。

借用数组存储月份的英文单词。

#include

main()

{

inti;

printf("请输入1~12之间的一个整数:

");

scanf("%d",&i);

switch(i){

case1:

printf("%d月对应的英文单词是:

%s\n",i,"January");break;

case2:

printf("%d月对应的英文单词是:

%s\n",i,"February");break;

case3:

printf("%d月对应的英文单词是:

%s\n",i,"March");break;

case4:

printf("%d月对应的英文单词是:

%s\n",i,"April");break;

case5:

printf("%d月对应的英文单词是:

%s\n",i,"May");break;

case6:

printf("%d月对应的英文单词是:

%s\n",i,"June");break;

case7:

printf("%d月对应的英文单词是:

%s\n",i,"July");break;

case8:

printf("%d月对应的英文单词是:

%s\n",i,"August");break;

case9:

printf("%d月对应的英文单词是:

%s\n",i,"September");break;

case10:

printf("%d月对应的英文单词是:

%s\n",i,"October");break;

case11:

printf("%d月对应的英文单词是:

%s\n",i,"November");break;

case12:

printf("%d月对应的英文单词是:

%s\n",i,"December");break;

default:

printf("输入错误!

\n");

}

}

5.请编写程序,将M行N列的二维数组中的数据,按先行后列的顺序依次存放到一维数组中并对一维数组中内容输出。

#include

#defineM2

#defineN3

main()

{

inta[M][N],b[M*N],i,j;

printf("请输入一个%d行%d列矩阵:

\n",M,N);

for(i=0;i

for(j=0;j

scanf("%d",&a[i][j]);

for(i=0;i

for(j=0;j

b[i*N+j]=a[i][j];

printf("转为一维数组后的结果为:

\n");

for(i=0;i

printf("%5d",b[i]);

printf("\n");

}

 

6.假定输入的字符串中只包含字母和*号。

请编程序代码,实现以下功能:

删除字符串中前导和尾部的*号,串中字母之间的*号都不删除,再将结果串输出。

#include

#defineN80

main()

{

chars[N],s1[N],i=0,j=0,k=0;

printf("请输入一个字符串:

\n",s);

gets(s);

while(s[i]!

='\0')i++;

i--;

while(s[i]=='*')i--;

while(s[j]=='*')j++;

while(j<=i){

s1[k]=s[j];

k++;

j++;

}

s1[k]='\0';

printf("该字符串删除前导和后导字符后结果值为:

\n");

puts(s1);

}

第七章函数与指针

一、运行程序写结果

1

2

3

4

5

6

10,20,40,40

5,25

-735710

21

35

35

53

k=13

二、编程题

1.已知圆的半径为R,求它的面积。

#include

#definePI3.14

floatarea(floatr)

{

floats;

s=PI*r*r;

returns;

}

main()

{

floatr;

scanf("%f",&r);

printf("%.2f\n",area(r));

}

2.编写一个函数,输出三个数中的最大值。

#include

#defineN3

//该程序可以扩展,求三个数中最大值,则N定义为3,求5个数中最大值则N定义为5......以此类推,只把定义处的数更改即可

intmax(inta[])

{

inti,j,itmp;

for(i=0;i

for(j=i+1;j

if(a[i]

returnitmp;

}

main()

{

inta[N],i;

for(i=0;i

scanf("%d",&a[i]);

printf("%d",max(a));

}

3.编写一个函数,将一个任意三位数n逆序输出,即若n=456,则输出654。

#include

voidinvert(intn2)

{

intn1;

while(n2!

=0)

{n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

main()

{

intn;

scanf("%d",&n);

invert(n);

}

4.编写比较两个字符串是否相等的函数。

#include

intcompare(chars1[],chars2[])

{

inti;

for(i=0;;)

{

if(s1[i]>s2[i])

return1;

elseif(s1[i]

return-1;

else

{

if(s1[i]=='\0'||s2[i]=='\0')return0;

i++;

}

}

}

main()

{

charstr1[60],str2[60];

intn;

printf("第一个字符串长度:

");

scanf("%s",str1);

printf("第二个字符串长度:

");

scanf("%s",str2);

n=compare(str1,str2);

if(n==0)printf("字符串长度相等");

elseif(n>0)printf("第一个字符串长");

elseprintf("第二个字符串长");

}

5.编写求字符串长的函数。

#include

intstrlength(charstr[])

{

intlen=0;

char*p=str;

while('\0'!

=*p++)

{

len++;

}

returnlen;

}

main()

{

charstr[20];

gets(str);

printf("Thelengthis%d\n",strlength(str));

}

6.编写一个函数判定一个数是否是素数,在主函数中调用该函数,输入一个整数,输出是否是素数的信息。

#include

voidisprime(intm)

{

inti;

for(i=2;i<=m-1;i++)

if(m%i==0)break;

if(i>=m)printf("yes!

");

elseprintf("no!

");

}

main()

{

intn;

scanf("%d",&n);

isprime(n);

}

7.用指针写一个删除字符串中空格的函数。

#include

#include

voiddelspace(charstr[])

{

char*p;

for(p=str;*p;p++)//将testmac数组首地址附给p,当p所指字符为‘\0’时,停止循环

if(*p=='')//若字符变量是空格,则以p+1所指地址后面的字符串拷贝到p所指地址

strcpy(p,p+1);

}

main()

{charstr[20];

gets(str);//从键盘输入一个字符串

delspace(str);

puts(str);}

8.用指针写合并连个字符串的函数。

#include

voidfun(char*dest,char*s1,char*s2)

{

while(*dest++=*s1++);

dest--;

while(*dest++=*s2++);

}

main()

{

charstr1[80],str2[80],dest[255];

gets(str1);

gets(str2);

fun(dest,str1,str2);

printf("%s\n",dest);

}

9.输入15个正整数,放在a数组中,要求:

奇数放在a数组前部,偶数放在a数组后部。

再分别对奇数和偶数排序。

#include

voidsort(int*p,intn)

{intt;

inti,j,k;

for(i=0;i

{k=i;

for(j=i+1;j

if(*(p+k)>*(

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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