C程序设计教程课后习题答案吉顺如版Word文件下载.docx
《C程序设计教程课后习题答案吉顺如版Word文件下载.docx》由会员分享,可在线阅读,更多相关《C程序设计教程课后习题答案吉顺如版Word文件下载.docx(57页珍藏版)》请在冰豆网上搜索。
b=x-y;
c=x*y;
d=*x/y;
a=%d\nb=%d\nc=%d\nd=%f\n"
a,b,c,d);
第2章习题
1~5
BCDCD
6~10
DBBCA
1.单精度浮点型、双精度浮点型、字符型
2.0
3.x%10*10+x/10
4.
5.
20
6.sin(sqrt(x*x))/(a*b)
7.
,
8.1111011
173
7B
9.3
3
10.3
1.
7,8,10
2.
1,3
3.
5
F
4.
(int)i=12,
4
61
57
9
112
1.编写程序,求表达式c=21%9-(float)a+4/b*b的值,假设表达式中a和b的值分别由键盘输入。
main(
)
a,b;
c;
input
data
a,b:
a,&
b);
c=21%9-(float)a+4/b*b;
c=%\n"
c);
2.
编写程序,从键盘输入两个整数存入变量a和b中,求a2-b2的值并输出。
a,b,c;
c=a*a-b*b;
c=%d\n"
第3章习题
1
2
5
6
7
8
10
D
C
A、B
A
B
B、C
1.
有穷性
确定性
可行性
#
从终端(键盘)输入一个字符
4.
m
d
5.
97,g
6.
123
7.
格式控制符不正确(输入数据时不能控制列宽和小数位数)
8.
63,63,77,3f
9.
%f%f
&
y
10.
<
ch
ch
c=11
a=123
f=457
x=345
y=
a=1,b=3
a=3,b=1
(题目需修改为:
从键盘输入一个除a和z以外的小写字母)
程序的功能:
从键盘输入一个除a和z以外的小写字母,求出该字母对应的大写字母的前趋和后继字母,然后顺序输出此三个大写字母,每个字母所占列宽为3。
运行结果:
假如输入:
f
'
输出:
E
F
G
1.编写程序,计算的值并输出(保留3位小数),其中a、b的值由键盘输入。
#include
{
a,
b,x;
%f%f"
x=(a*a+b*b)/sqrt(3*(a+b));
x=%.3f\n"
x);
2.编写程序,从键盘输入一个梯形的上底a、下底b和高h,输出梯形的面积s。
b,h,s;
%f,%f,%f"
b,&
h);
s=(a+b)*h/2;
梯形面积s=%.2f\n"
s);
3.编写程序,在屏幕上输入你姓名的第一个字母,显示出该字母以及下面的信息:
Hello!
This
is
a
c
program.
My
name
[第一个字母]
char
name;
name=getchar();
putchar(name);
\nHello!
program.\n"
%c\n"
name);
第4章习题
A
!
||
b
x%4=
=0
x%100!
=0
x<
0
||
x>
10
50
-1
No
-2
#&
(1)2
(2)3
CC
a=2,b=2,c=4
有一个函数如下:
x2-2
(x<
5)
y=
3x+5
(5≤x<
50)
x-
(x≥50)
编写程序,输入x的值,计算相应的y值输出(保留3位小数)。
x,y;
%f"
x);
if(x<
5)
y=x*x-2;
else
50)
y=3*x+5;
y=x-sqrt(4*x-1);
x=%f,
y=%.3f\n"
x,y);
2.编写一个程序,根据输入的三角形的三条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、直角、一般三角形)。
b,
c,
s,
area;
if(a+b>
b+c>
a+c>
b)
s=(a+b+c)/2;
area=sqrt(s*(s*(s-a)*(s-b)*(s-c)));
area=%f\n"
area);
if(a==b
b==c)
等边三角形\n"
a==c
等腰三角形\n"
if((a*a
+
b*b==
c*c)||(a*a
c*c==
b*b)||(b*b
c*c
==
a*a))
直角三角形\n"
一般三角形\n"
不能组成三角形\n"
3.设奖金税率r有如下的要求
(n代表奖金)
:
n<
1000
5%
1000≤n<
2000
8%
2000≤n<
3000
10%
3000≤n<
6000
15%
6000≤n
用switch多分支选择语句编写程序,输入奖金值,计算并输出相应的税率和实际应得奖金值。
n,
r,
s;
m;
请输入奖金值:
n);
if(n>
=6000)
m=6;
m=n/1000;
switch(m)
case
0:
r=0;
break;
1:
r=;
2:
3:
4:
5:
6:
s=n-r*n;
税率r=%.0f%%,
奖金值n=%.2f,
实际应得奖金值s=%.2f\n"
r*100,
s);
从键盘输入任意4个数a、b、c、d,按照从大到小的顺序排列后重新输出。
d,t;
%d,%d,%d,%d"
c,&
d);
if(a<
b){t=a;
a=b;
b=t;
c){t=a;
a=c;
c=t;
d){t=a;
a=d;
d=t;
if(b<
c){t=b;
b=c;
d){t=b;
b=d;
if(c<
d){t=c;
c=d;
%d
%d\n"
a,b,c,d);
给出一个不超过4位数的正整数,判断它是几位数,并按逆向输出各位数字。
例1234,输出为4321。
num,i,j,k,m;
输入一个少于4位的正整数:
%d"
num);
if(num>
num<
=9999)
=9999)
是一个4位数\n"
m=num%10;
/*求个位上的数字*/
k=num/10%10;
/*求十位上的数字*/
j=num/100%10;
/*求百位上的数字*/
i=num/1000;
/*求千位上的数字*/
逆序数为:
%d%d%d%d\n"
m,k,j,i);
=100)
是一个3位数\n"
j=num/100;
%d%d%d\n"
m,k,j);
=10)
{printf("
是一个2位数\n"
k=num/10;
%d%d\n"
m,k);
是一个1位数\n"
num);
是一个无效的数\n"
第5章习题
二
填空题
循环
switch
4,7
#
2
18
1
sum=80
c=getchar()
n:
m
i
%13=
break
三
程序分析题
output1:
21
output2:
output3:
7
n=7
Max=18
Min=3
1*1=1
2*1=2
2*2=4
3*1=3
3*2=6
3*3=9
3
从键盘上输入若干字符,以按Enter键结束,统计其中字符A或a的个数。
ch;
k=0;
while((ch=getchar())!
='
\n'
if(ch=='
A'
ch=='
a'
k=k+1;
k);
利用=×
…的前100项之积计算p的值。
double
term,
result
=
1;
/*累乘项初值应为1*/
n;
for
(n=2;
=100;
n
2)
term=(double)(
*
n)/((n-1)*(n+1));
/*计算累乘项*/
term;
%f\n"
2*result);
用1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,问共有几种兑换方案?
每种方案各换多少枚?
x,y,z,count=0;
for(x=1;
=28;
x++)
for(y=1;
y<
=73;
y++)
z=100-x-y;
if(5*x+2*y+z==150)
count++;
%d,%d,%d\n"
x,y,z);
count=%d\n"
count);
鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。
{int
x,
y;
(x=1;
=97;
{y=98-x;
if(2*x+4*y==386)
鸡=%d,兔=%d"
x,y);
将一个正整数分解质因数。
例如:
输入90,打印出90=2*3*3*5。
n,i;
\nplease
number:
%d="
n);
for(i=2;
i<
=n;
i++)
while(n!
=i)
if(n%i==0)
%d*"
i);
n=n/i;
从键盘任意输入一个4位数x,编程计算x的每一位数字相加之和。
例如,输入x为1234,则由1234分离出其千位1、百位2、十位3、个位4,然后计算1+2+3+4=10,并输出10。
i1,i2,i3,i4,k,n;
Inputdatais:
k=fabs(n);
/*取绝对值*/
i1=k/1000;
/*分离出千位*/
i2=(k-i1*1000)/100;
/*分离出百位*/
i3=(k-i1*1000-i2*100)/10;
/*分离出十位*/
i4=k%10;
/*分离出个位*/
The
sum
of
the
total
bit
i1+i2+i3+i4);
打印出所有"
水仙花数"
,所谓"
是指一个三位数,其各位数字立方和等于该数本身。
153是一个水仙花数,因为153=13+53+33。
i,j,k,n;
parcissus
numbers
are:
(n=100;
1000;
n++)
i=n/100;
j=n/10-i*10;
k=n%10;
if
(n==i*i*i+j*j*j+k*k*k)
利用泰勒级数sin(x)≈计算sin(x)
的值。
要求最后一项的绝对值小于10-5,并统计出此时累加了多少项(x由键盘输入)。
n=1,count=1;
x;
sum,term;
/*因为位数多,所以定义为双精度
x:
sum=x;
term=x;
/*赋初值*/
do
term=-term*x*x/((n+1)*(n+2));
sum=sum+term;
/*累加
n=n+2;
}while(fabs(term)>
=1e-5);
sin(x)=%.1f,count=%d\n"
sum,count);
9.编写一个猜数游戏:
任意设置一个整数,请用户从键盘上输入数据猜想设置的数是什么,告诉用户是猜大了还是小了。
10次以内猜对,用户获胜;
否则,告诉用户设置的数据是什么。
{int
num=123,x,n;
hint:
0<
number<
1000\n"
/*给出数据范围的提示信息*/
for(n=1;
=10;
guess:
if(x==num)
Win!
if(x>
num)
bigger!
smaller!
if(n==11)
Lost!
number
编程输出以下图案。
*
***
*****
*******
i,j;
for(i=1;
=4;
(j=20-i;
j>
=1;
j--)
%c"
'
(j=0;
j<
2*i-1;
j++)
*"
(i=3;
i>
i--)
j--)
第6章习题
14
3.10
数据类型
strcpy(S2,S1)
7,6
sum=0
i==j
a[i][j]
Tony
max=85
min=5
sum=180
aver=
a=2
b=2
c=2
d=2
e=1
f=2
g=2
j=45
Ti_saCPorm
Tss_Pgm
1.从键盘输入15个整数,存放在数组中,找出其中最小数并指出其所在的位置。
#define
N
15
min,i,j,a[N];
Enter
integers:
for(i=0;
N;
a[i]);
min=a[0];
if(min>
a[i])
min=a[i];
j=i;
%d,%d"
min,j);
2.将输入的十