完整版C教材习题答案18章Word文件下载.docx

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

完整版C教材习题答案18章Word文件下载.docx

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

完整版C教材习题答案18章Word文件下载.docx

%d"

c);

}

2、

floatf=7.12;

charc='

c'

;

//字符常量为字符变量赋值

%d\n"

(int)f%3);

//强制转换f,是被除数为整数

%c"

第三章顺序结构程序设计

一、选择题

8

9

10

D

A

B

C

109

2,03,0

4213,14

40

65Da

20

30

三、编程题

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

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

第四章选择结构程序设计

211

75

1,0,0

55

170

2,03,-1

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<

stdio.h>

{

intscore;

charch;

请输入一个百分制分数:

"

);

scanf("

&

score);

if(score>

100||score<

0){

printf("

非法输入!

\n"

return0;

}

=90)ch='

A'

elseif(score>

=80)

ch='

B'

=70)

ch='

C'

elseif(score>

=60)

ch='

D'

elsech='

E'

五分制成绩为%c。

ch);

方法二:

采用switch语句实现

switch(score/10){

case10:

case9:

ch='

break;

case8:

case7:

case6:

default:

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

#include<

math.h>

main(){

floata,b,c,l,s;

请输入三角形三条边:

%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));

三角形面积为:

%.2f\n"

s);

else

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

第五章循环结构程序设计

#*#*#MYM

8712

s=6

17

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

+1/3!

+……+1/n!

floats=0;

inti,j,n,t;

请输入n的值:

n);

for(i=1;

i<

=n;

i++){

t=1;

for(j=1;

j<

=i;

j++)

t*=j;

s+=1.0/t;

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

inti;

=100;

i++)

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

printf("

%4d"

i);

3整元换零钱问题。

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

inti,j,k,n=0;

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

for(i=0;

=20;

for(j=0;

=50;

for(k=0;

k<

k++)

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

printf("

5角:

%d个\t2角:

%d个\t1角:

%d个\n"

i,j,k);

n++;

}

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

n);

4.计算

intk;

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

for(k=1;

rel1+=1.0/(k+3);

rel2+=1.0/(k*k);

for(k=5;

=10;

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

计算结果是:

%.2f"

rel1+rel2+rel3);

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

#defineN10

inti,j,t,a[N];

请输入%d个整数:

N);

N;

scanf("

a[i]);

N-1;

for(j=i+1;

if(a[i]>

a[j]){

t=a[i];

a[i]=a[j];

a[j]=t;

%5d"

a[i]);

6.编写程序实现功能:

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

inti=0;

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

请输入第%d个整数:

i+1);

max=score;

min=score;

i++;

{

max=0;

min=0;

最高成绩为:

%.2f,最低成绩为:

%.2f,平均成绩为:

0,0,0);

return;

while(score>

0)

sum+=score;

if(score>

max)max=score;

if(score<

min)min=score;

i++

max,min,sum/(i-1);

}19820926

第六章数组和指针

11

D(C?

k=2a=3b=2

19

71

6385

三、编写程序代码

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

#defineN80

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

请输入一个字符串:

s1);

%s"

while(s1[i]!

='

\0'

){

if(s1[i]>

9'

||s1[i]<

0'

{

s2[j]=s1[i];

j++;

}

s2[j]='

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

%s\n"

s2);

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

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

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

while(s[i]!

if(s[i]>

&

s[i]<

k1++;

else

if(s[i]>

a'

z'

||s[i]>

Z'

k2++;

elsek3++;

i++;

}

数字字符个数:

%d,字母个数:

%d,其他字符个数:

k1,k2,k3);

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

#defineN3

#defineM4

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

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

N,M);

for(j=0;

M;

a[i][j]);

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

该矩阵转置后的结果为:

b[i][j]);

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

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

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

i);

switch(i){

case1:

printf("

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

i,"

January"

case2:

February"

case3:

March"

case4:

April"

case5:

May"

case6:

June"

case7:

July"

case8:

August"

case9:

September"

case10:

October"

case11:

November"

case12:

December"

default:

输入错误!

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

#defineM2

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

M,N);

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

转为一维数组后的结果为:

M*N;

b[i]);

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

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

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

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

gets(s);

)i++;

i--;

while(s[i]=='

*'

)i--;

while(s[j]=='

)j++;

while(j<

=i){

s1[k]=s[j];

k++;

j++;

s1[k]='

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

puts(s1);

第七章函数与指针

一、运行程序写结果

10,20,40,40

5,25

-735710

21

35

53

k=13

二、编程题

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

#definePI3.14

floatarea(floatr)

floats;

s=PI*r*r;

returns;

floatr;

%f"

r);

area(r));

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

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

intmax(inta[])

inti,j,itmp;

if(a[i]<

a[j])itmp=a[j];

returnitmp;

inta[N],i;

max(a));

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

voidinvert(intn2)

intn1;

while(n2!

=0)

{n1=n2%10;

n2=n2/10;

n1);

intn;

invert(n);

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

intcompare(chars1[],chars2[])

if(s1[i]>

s2[i])

return1;

elseif(s1[i]<

s2[i])

return-1;

else

{

if(s1[i]=='

||s2[i]=='

)return0;

i++;

charstr1[60],str2[60];

第一个字符串长度:

str1);

第二个字符串长度:

str2);

n=compare(str1,str2);

if(n==0)printf("

字符串长度相等"

elseif(n>

0)printf("

第一个字符串长"

elseprintf("

第二个字符串长"

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

intstrlength(charstr[])

intlen=0;

char*p=str;

while('

!

=*p++)

len++;

returnlen;

charstr[20];

gets(str);

Thelengthis%d\n"

strlength(str));

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

voidisprime(intm)

for(i=2;

=m-1;

if(m%i==0)break;

if(i>

=m)printf("

yes!

elseprintf("

no!

isprime(n);

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

string.h>

voiddelspace(charstr[])

char*p;

for(p=str;

*p;

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

if(*p=='

'

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

strcpy(p,p+1);

{charstr[20];

//从键盘输入一个字符串

delspace(str);

puts(str);

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

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

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

dest--;

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

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

gets(str1);

gets(str2);

fun(dest,str1,str2);

dest);

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

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

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

voidsort(int*p,intn)

{intt;

inti,j,k;

n-1;

{k=i;

n;

if(*(p+k)>

*(

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

当前位置:首页 > 高等教育 > 院校资料

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

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