C程序设计教程课后习题答案吉顺如版.docx

上传人:b****7 文档编号:9825926 上传时间:2023-02-06 格式:DOCX 页数:54 大小:27.87KB
下载 相关 举报
C程序设计教程课后习题答案吉顺如版.docx_第1页
第1页 / 共54页
C程序设计教程课后习题答案吉顺如版.docx_第2页
第2页 / 共54页
C程序设计教程课后习题答案吉顺如版.docx_第3页
第3页 / 共54页
C程序设计教程课后习题答案吉顺如版.docx_第4页
第4页 / 共54页
C程序设计教程课后习题答案吉顺如版.docx_第5页
第5页 / 共54页
点击查看更多>>
下载资源
资源描述

C程序设计教程课后习题答案吉顺如版.docx

《C程序设计教程课后习题答案吉顺如版.docx》由会员分享,可在线阅读,更多相关《C程序设计教程课后习题答案吉顺如版.docx(54页珍藏版)》请在冰豆网上搜索。

C程序设计教程课后习题答案吉顺如版.docx

C程序设计教程课后习题答案吉顺如版

第1章习题

一、选择题

1、A2、D3、C4、D5、B6、C7、C8、B9、B10、A

二、填空题

1、一,函数体

2、main(主),main(主)

3、编译,目标

4、.c,.obj,.exe

5、缩进,无影响,/**/

三、程序分析题

1、

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

Verygood!

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

2、

a=12,b=5

a=17,b=22

3、

r=,s=

四、编程题

1.用printf()函数在屏幕上输出自己的班级、学号、姓名。

#include""

voidmain()

{

printf("班级:

BX1109\n");

printf("学号:

\n");

printf("姓名:

王孟荣\n");

}

2.从键盘输入两个整数,计算它们的和、差、积、商,并在屏幕上输出结果。

#include<>

voidmain()

{

intx,y,a,b,c;

floatd;

printf("PleaseInputTwoIntegers:

\n");

scanf("%d%d",&x,&y);

a=x+y;

b=x-y;

c=x*y;

d=*x/y;

printf("a=%d\nb=%d\nc=%d\nd=%f\n",a,b,c,d);

}

第2章习题

一、选择题

1~5BCDCD

6~10DBBCA

二、填空题

1.单精度浮点型、双精度浮点型、字符型

2.0

3.x%10*10+x/10

4.

5.20

6.sin(sqrt(x*x))/(a*b)

7.,

8.11110111737B

9.33

10.3

三、程序分析题

1.7,8,10

2.1,3

3.5F

4.(int)i=12,

5.4

61

57

9

112

四、编程题

1.编写程序,求表达式c=21%9-(float)a+4/b*b的值,假设表达式中a和b的值分别由键盘输入。

#include<>

voidmain()

{

inta,b;

floatc;

printf("Pleaseinputdataa,b:

");

    scanf("%d%d",&a,&b);

c=21%9-(float)a+4/b*b;

printf("c=%\n",c);

}

2.编写程序,从键盘输入两个整数存入变量a和b中,求a2-b2的值并输出。

#include<>

voidmain()

{

inta,b,c;

printf("Pleaseinputdataa,b:

");

    scanf("%d%d",&a,&b);

c=a*a-b*b;

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

}

第3章习题

一、选择题

1

2

3

4

5

6

7

8

9

10

D

C

A、B

A

B

B

B、C

B

D

D

二、填空题

1.有穷性确定性可行性

2.#

3.从终端(键盘)输入一个字符

4.md

5.97,g

6.,,123

7.格式控制符不正确(输入数据时不能控制列宽和小数位数)

8.63,63,77,3f

9.%f%f&x,&y

10.<>chch

三、程序分析题

1.c=11

2.a=123f=457

3.x=345

y=

4.a=1,b=3

a=3,b=1

5.(题目需修改为:

从键盘输入一个除a和z以外的小写字母)

程序的功能:

从键盘输入一个除a和z以外的小写字母,求出该字母对应的大写字母的前趋和后继字母,然后顺序输出此三个大写字母,每个字母所占列宽为3。

运行结果:

假如输入:

f'

输出:

EFG

四、编程题

1.编写程序,计算的值并输出(保留3位小数),其中a、b的值由键盘输入。

#include<>

#include<>

voidmain()

{floata,b,x;

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

x=(a*a+b*b)/sqrt(3*(a+b));

printf("x=%.3f\n",x);

}

2.编写程序,从键盘输入一个梯形的上底a、下底b和高h,输出梯形的面积s。

#include<>

#include<>

voidmain()

{floata,b,h,s;

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

s=(a+b)*h/2;

printf("梯形面积s=%.2f\n",s);

}

3.编写程序,在屏幕上输入你姓名的第一个字母,显示出该字母以及下面的信息:

Hello!

Thisisacprogram.

Mynameis[第一个字母]

#include<>

voidmain()

{

charname;

name=getchar();

putchar(name);

printf("\nHello!

\n");

printf("Thisisacprogram.\n");

printf("Mynameis%c\n",name);

}

第4章习题

一、选择题

1

2

3

4

5

6

7

8

9

10

B

B

C

B

C

AC

B

A

C

C

二、填空题

1.!

&&||

2.1

3.ab

4.1

5.0

6.x%4==0&&x%100!

=0

7.56

8.A

9.x<0||x>10&&x<50

10.-1

三、程序分析题

1.No

2.-2

3.5

3

2

4.#&

5.

(1)2

(2)3

CC

a=2,b=2,c=4

四、编程题

1.有一个函数如下:

x2-2(x<5)

y=3x+5(5≤x<50)

x-(x≥50)

编写程序,输入x的值,计算相应的y值输出(保留3位小数)。

#include<>

#include<>

voidmain()

{floatx,y;

scanf("%f",&x);

if(x<5)y=x*x-2;

elseif(x<50)y=3*x+5;

elsey=x-sqrt(4*x-1);

printf("x=%f,y=%.3f\n",x,y);

}

2.编写一个程序,根据输入的三角形的三条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、直角、一般三角形)。

#include<>

#include<>

voidmain()

{floata,b,c,s,area;

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

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

{s=(a+b+c)/2;

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

printf("area=%f\n",area);

if(a==b&&b==c)

printf("等边三角形\n");

elseif(a==b||a==c||b==c)

printf("等腰三角形\n");

elseif((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))

printf("直角三角形\n");

elseprintf("一般三角形\n");

}

elseprintf("不能组成三角形\n");

}

3.设奖金税率r有如下的要求(n代表奖金):

0n<1000

5%1000≤n<2000

r=8%2000≤n<3000

10%3000≤n<6000

15%6000≤n

用switch多分支选择语句编写程序,输入奖金值,计算并输出相应的税率和实际应得奖金值。

#include<>

voidmain()

{floatn,r,s;

intm;

printf("请输入奖金值:

");

scanf("%f",&n);

if(n>=6000)m=6;

elsem=n/1000;

switch(m)

{case0:

r=0;break;

case1:

r=;break;

case2:

r=;break;

case3:

case4:

case5:

r=;break;

case6:

r=;break;

}

s=n-r*n;

printf("税率r=%.0f%%,奖金值n=%.2f,实际应得奖金值s=%.2f\n",r*100,n,s);

}

4.从键盘输入任意4个数a、b、c、d,按照从大到小的顺序排列后重新输出。

#include<>

voidmain()

{inta,b,c,d,t;

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

if(a

if(a

if(a

if(b

if(b

if(c

printf("%d%d%d%d\n",a,b,c,d);

}

5.给出一个不超过4位数的正整数,判断它是几位数,并按逆向输出各位数字。

例1234,输出为4321。

#include<>

voidmain()

{intnum,i,j,k,m;

printf("输入一个少于4位的正整数:

");

scanf("%d",&num);

if(num>=0&&num<=9999)

{if(num>1000&&num<=9999)

{printf("是一个4位数\n");

m=num%10;/*求个位上的数字*/

k=num/10%10;/*求十位上的数字*/

j=num/100%10;/*求百位上的数字*/

i=num/1000;/*求千位上的数字*/

printf("逆序数为:

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

}

elseif(num>=100)

{printf("是一个3位数\n");

m=num%10;/*求个位上的数字*/

k=num/10%10;/*求十位上的数字*/

j=num/100;/*求百位上的数字*/

printf("逆序数为:

%d%d%d\n",m,k,j);

}

elseif(num>=10)

{printf("是一个2位数\n");

m=num%10;/*求个位上的数字*/

k=num/10;/*求十位上的数字*/

printf("逆序数为:

%d%d\n",m,k);

}

else

{printf("是一个1位数\n");

printf("逆序数为:

%d\n",num);

}

}

elseprintf("是一个无效的数\n");

}

第5章习题

一、选择题

1

2

3

4

5

6

7

8

9

10

B

C

B

C

A

B

D

B

A

B

二填空题

1.循环switch

2.4,7

3.6

4.##

5.02

6.18

7.1

8.sum=80

9.c=getchar()

n:

m

10.i%13==0

break

三程序分析题

1.output1:

216

output2:

56

output3:

577

2.n=7

3.Max=18

Min=3

4.1*1=1

2*1=22*2=4

3*1=33*2=63*3=9

5.0123

1230

2301

3012

四、编程题

1.从键盘上输入若干字符,以按Enter键结束,统计其中字符A或a的个数。

#include""

main()

{charch;

intk=0;

while((ch=getchar())!

='\n')

{if(ch=='A'||ch=='a')

k=k+1;}

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

}

2.利用=×…的前100项之积计算p的值。

#include<>

main()

{

doubleterm,result=1;/*累乘项初值应为1*/

intn;

for(n=2;n<=100;n=n+2)

{

term=(double)(n*n)/((n-1)*(n+1));/*计算累乘项*/

result=result*term;

}

printf("result=%f\n",2*result);

}

3.用1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,问共有几种兑换方案每种方案各换多少枚

#include<>

main()

{

intx,y,z,count=0;

for(x=1;x<=28;x++)

for(y=1;y<=73;y++)

{

z=100-x-y;

if(5*x+2*y+z==150)

{

count++;

printf("%d,%d,%d\n",x,y,z);

}

}

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

}

4.鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。

#include<>

main()

{intx,y;

for(x=1;x<=97;x++)

{y=98-x;

if(2*x+4*y==386)

printf("鸡=%d,兔=%d",x,y);

}

}

5.将一个正整数分解质因数。

例如:

输入90,打印出90=2*3*3*5。

#include<>

main()

{

intn,i;

printf("\npleaseinputanumber:

\n");

scanf("%d",&n);

printf("%d=",n);

for(i=2;i<=n;i++)

while(n!

=i)

{

if(n%i==0)

{printf("%d*",i);

n=n/i;

}

elsebreak;

}

printf("%d",n);

6.从键盘任意输入一个4位数x,编程计算x的每一位数字相加之和。

例如,输入x为1234,则由1234分离出其千位1、百位2、十位3、个位4,然后计算1+2+3+4=10,并输出10。

#include<>

#include<>

main()

{

inti1,i2,i3,i4,k,n;

printf("Inputdatais:

");

scanf("%d",&n);

k=fabs(n);/*取绝对值*/

i1=k/1000;/*分离出千位*/

i2=(k-i1*1000)/100;/*分离出百位*/

i3=(k-i1*1000-i2*100)/10;/*分离出十位*/

i4=k%10;/*分离出个位*/

printf("Thesumofthetotalbitis%d\n",i1+i2+i3+i4);

}

7.打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

例如:

153是一个水仙花数,因为153=13+53+33。

#include<>

voidmain()

{

inti,j,k,n;

printf("parcissusnumbersare:

\n");

for(n=100;n<1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

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

}

}

8.利用泰勒级数sin(x)≈计算sin(x)的值。

要求最后一项的绝对值小于10-5,并统计出此时累加了多少项(x由键盘输入)。

#include<>

#include<>

main()

{

intn=1,count=1;

floatx;

doublesum,term;/*因为位数多,所以定义为双精度*/

printf("Inputx:

");

scanf("%f",&x);

sum=x;

term=x;/*赋初值*/

do

{

term=-term*x*x/((n+1)*(n+2));

sum=sum+term;/*累加*/

n=n+2;

count++;

}while(fabs(term)>=1e-5);

printf("sin(x)=%.1f,count=%d\n",sum,count);

}

9.编写一个猜数游戏:

任意设置一个整数,请用户从键盘上输入数据猜想设置的数是什么,告诉用户是猜大了还是小了。

10次以内猜对,用户获胜;否则,告诉用户设置的数据是什么。

#include<>

voidmain()

{intnum=123,x,n;

printf("hint:

0

for(n=1;n<=10;n++)

{printf("guess:

");

scanf("%d",&x);

if(x==num){printf("Win!

\n");break;}

if(x>num)printf("bigger!

\n");

if(x

\n");

}

if(n==11)printf("Lost!

thenumberis%d\n",x);

}

10.编程输出以下图案。

*

***

*****

*******

*****

***

*

#include<>

main()

{

inti,j;

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

{

for(j=20-i;j>=1;j--)

printf("%c",'');

for(j=0;j<2*i-1;j++)

printf("*");

printf("\n");

}

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

{

for(j=20-i;j>=1;j--)

printf("%c",'');

for(j=0;j<2*i-1;j++)

printf("*");

printf("\n");

}

}

第6章习题

一、选择题

1

2

3

4

5

6

7

8

9

10

D

A

D

B

D

C

B

D

B

D

二填空题

1.0

2.14m

3.107

4.数据类型

5.strcpy(S2,S1)#include<>

6.03

7.7,6

8.sum=0

i==j

a[i][j]

9.4

10.Tony

三程序分析题

1.max=85

min=5

sum=180

aver=

2.a=2

b=2

c=2

d=2

e=1

f=2

g=2

3.j=45

4.Ti_saCPorm

Tss_Pgm

5.1115

四、编程题

1.从键盘输入15个整数,存放在数组中,找出其中最小数并指出其所在的位置。

#include<>

#defineN15

main()

{intmin,i,j,a[N];

printf("EnterNintegers:

\n");

for(i=0;i

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

min=a[0];

for(i=1;i

if(min>a[i])

{min=a[i];

j=i;

}

printf("%d,%d",min,j);

}

2.将输入的十进制正整数化为十六进制数。

#include<>

main()

{

inti,x,j,a[20];

printf("请输入一个正整数:

");

while

(1)

{

scanf("%d",&x);

if(x<0)

printf("数据输入错误,请重新输入一个正整数:

");

elsebreak;

}

i=0;

while(x)

{

a[i]=x%16;

x=x/16;

i++;

}

for(j=i-1;j>=0;j--)

if(a[j]<=9)

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

elseif(a[j]<=15)

printf("%c",a[j]+'A'-10);

printf("\n");

}

3.从键盘输入一行字符,统计其中有多少单词,假设单词之间以逗号分隔。

#include<>

voidmain()

{

charstring[81];

inti,num=0,word=0;

charc;

gets(string);

for(i=0;(c=string[i])!

='\0';i++)

if(c==',')word=0;

elseif(word==0)

{word=1;

num++;

}

printf("Thereare%dwordsintheline.\n",num);

}

4.从键盘输入一字符串,放在字符数组a中,将字符数组a中下标值为偶数的元素按从小到大排序。

#include<>

#include<>

voidmain()

{

chara[80],t,m;

inti,j,k;

printf("请输入一字符串:

");

gets(a);

k=strlen(a);

for(i=0;i<=k-2;i+=2)

{m=i;

for(j=i+2;j<=k;j+=2)

if(a[m]>a[j])

m=j;

if(m!

=i)

{t=a[i];a[i]=a[m];a[m]=t;}

}

puts(a);

printf("\n");

}

5.编写程序输出以下杨辉三角形(要求输出10行)。

1

11

121

1331

14641

15101051

………………

#include<>

#include<>

voidmain()

{inti,j,a[10][10];

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

{a[i][0]=a[i][i]=1;

for(j=1;j

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

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

{for(j=0;j<=i;j++)

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

printf("\n");

}

}

6.编程将s数组中的字符串的正序和反序进行连接,形成一个新串放在t数组中。

例如,当s数组中字符串为"ABCD"时,则t数组中的内容应为:

"ABCDDCBA"。

#include<>

#include<>

main()

{

chars[100],t[100];

inti,d;

printf("PleaseenterstringS:

");

scanf("%s",s);

d=strlen(s);

for(i=0;i

for(i=0;i

t[2*d]='\0';

printf("Theresultis:

%s\n",t);

}

7.某公司在传输数据过程中为了安全要对数据进行加密,若传递的是四位的整数,对其进行加密的规则为:

每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

如:

输入数字7659,则加密后的数字为4012

#include<>

main()

{inta,i,aa[4],t;

printf("输入一个需加密的四位数整数:

");

scanf("%d",&a);

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

当前位置:首页 > 小学教育 > 其它课程

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

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