课后题答案-C语言程序设计(第2版)Word下载.doc
《课后题答案-C语言程序设计(第2版)Word下载.doc》由会员分享,可在线阅读,更多相关《课后题答案-C语言程序设计(第2版)Word下载.doc(31页珍藏版)》请在冰点文库上搜索。
![课后题答案-C语言程序设计(第2版)Word下载.doc](https://file1.bingdoc.com/fileroot1/2023-4/29/0c1a5bb0-e7b0-4d84-900f-90072b28edd3/0c1a5bb0-e7b0-4d84-900f-90072b28edd31.gif)
main()
{intn,c;
n=2;
c=M*n;
%d\n"
c);
}
2.编程求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7;
(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。
(1)main()
{inta=7;
floatx=2.5,y=4.7;
%f\n"
x+a%3*(int)(x+y)%2/4);
}
(2)main()
{inta=2,b=3;
floatx=3.5,y=2.5;
(float)(a+b)/2+(int)x%(int)y);
第三章顺序结构程序设计
ACDCC
二操作题
1.x=3,a=2,b=3
2.z=12.700000
3.121
a
212
三.编程题
编程题
1.某工种按小时计算工资,每月劳动时间(小时)×
每小时工资=总工资,总工资中扣除10%公积金,剩余的为应发工资。
编写一个程序从键盘输入劳动时间和每小时工资,打印出应发工资。
#include<
stdio.h>
floatsj,gz,yfgz;
printf("
time,salary:
"
scanf("
%f,%f"
&
sj,&
gz);
yfgz=sj*gz*0.9;
totalsalary:
yfgz);
time,salary:
4,3<
CR>
totalsalary:
10.800000
2.编写一个程序求出任意一个输入字符的ASCII码
charc;
Inputastring:
%c"
c);
%cASCIIis%d\n"
c,c);
Inputastring:
a<
aASCIIis97
3、编写一个程序用于水果店售货员算帐:
已知苹果每斤2.50元,鸭梨每斤1.80元,香蕉每斤2元,橘子每斤1.6元,要求输入各类水果的重量,打印出应付钱数,再输入顾客付款数,打印出应找的钱数。
floatp,y,x,j,ys,g,fk;
apple,pear,banana,orange(weight)="
scanf("
%f,%f,%f,%f"
p,&
y,&
x,&
j);
ys=2.5*p+1.8*y+2*x+1.6*j;
fukuan="
%f"
g);
fk=g-ys;
result:
\n"
fukuan=%6.2fyuan\nshoukuan=%6.2fyuan\nzhaohui=%6.2fyuan\n"
g,ys,fk);
apple,pear,banana,orange(weight)=1,2,3,4
fukuan=100
fukuan=100.00yuan
shoukuan=18.50yuan
zhaohui=81.50yuan
项目实训
1.假设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后可得到本利之和deposit。
#include<
math.h>
{intn;
floatrate=0.0225,capital,deposit;
scanf("
%d,%f"
n,&
capital);
deposit=capital*pow(1+rate,n);
printf("
deposit=%f\n"
deposit);
}
2.将一个三位数整数,正确分离出它的个位、十位和百位数字,并分别在屏幕上输出。
{intn,a,b,c;
%3d"
n);
a=n/100;
b=n%100/10;
c=n%100%10/1;
a=%d,b=%d,c=%d\n"
a,b,c);
第四章选择结构程序设计
一、略
二、BBABCBA
三、1.10
2.2322
3.10200
4.ch>
=’A’&
&
ch<
=’Z’||ch>
=’a’&
=’z’
ch>
=’0’&
=’9’
ch==’’
5.-1
四、上机操作
1.从键盘输入一个英文字母,如果是大写字母,则将它变为小写字母输出;
如果是小写字母,则将其变为大写字母输出。
#include<
{charch;
ch=getchar();
if(ch>
='
A'
Z'
)ch+=32;
elseif(ch>
a'
z'
)ch-=32;
putchar(ch);
putchar('
\n'
2.根据输入的x值依据下列表达式,计算y的值。
2x(x>
-1)
y=3(x=-1)
4+x(x<
floatx,y;
x);
if(x>
y=2*x;
elseif(x==1)
y=3;
elsey=4+x;
y=%f"
y);
-2<
y=2.000000
3.编写程序,输入一个整数,判断它是奇数还是偶数,若是奇数,输出“IsOdd“;
若是偶数,输出“IsEven“。
{intx;
%d"
if(x%2==0)printf("
IsEven\n"
elseprintf("
IsOdd\n"
}
4.设计应用程序,求二次方程ax2+bx+c=0的解。
{floata,b,c,disc,x1,x2,p,q;
%f,%f,%f"
a,&
b,&
if(fabs(a)<
=1e-6)printf("
Theequationisnotaquadratic\n"
else
{disc=b*b-4*a*c;
if(fabs(disc)<
1e-6)printf("
x1=x2=%8.4f\n"
-b/(2*a));
elseif(disc>
1e-6)
{x1=(-b+sqrt(disc)/(2*a));
x2=(-b-sqrt(disc)/(2*a));
printf("
x1=%8.4f,x2=%8.4f\n"
x1,x2);
else
{p=-b/(2*a);
q=sqrt(-disc/(2*a));
%8.4f+%x8.4fi\n"
p,q);
%8.4f-%8.4fi\n"
}}}
5.按托运规则,行李不超过50公斤时,运费为0.15元/公斤,如超过50公斤,超过部分的运费为0.22元/公斤,现有行李w公斤,编写一个程序计算运费。
#include<
floatw,f,x;
weight:
w);
if(w<
=50)
x=0.15*w;
else
x=0.15*50+0.22*(w-50);
money:
%6.2fyuan\n"
x);
weight:
20<
money:
3.00yuan
60<
9.70yuan
6.某商场给与顾客购物的折扣率如下:
购物金额<
200元不打折
500元>
购物金额>
=200元9折
1000元>
=500元8折
=1000元7.5折
输入一个购物金额,输出打折率、购物实际付款金额。
{floatx,y,realx;
if(x<
=0){printf("
Error!
Youinputaworrynumber!
y=0;
{if(x<
200)y=1.0;
elseif(x<
500)y=0.9;
1000)y=0.8;
elsey=0.75;
if(y!
=0)
{realx=x*y;
y=%f,therealx=%5.2f\n"
y,realx);
}}
某托儿所收2岁到6岁的孩子,2岁、3岁孩子进小班(Lowerclass);
4岁孩子进中班(Middleclass);
5岁、6岁孩子进大班(Higherclass)。
编写程序(用if语句和switch语句),输入孩子年龄,输出年龄及进入的班号。
如:
输入:
3,输出:
age:
3,enterLowerclass。
{intage;
Pleaseinputyourbaby'
sage:
age);
if(age>
6||age<
2)printf("
Sorry,yourbabycan'
tenter!
elseswitch(age);
{case2:
case3:
age:
%d,enterLowerclass\n"
age);
break;
case4:
%d,enterMiddleclass\n"
break;
case5:
case6:
%d,enterHigherclass"
}}
第五章循环结构程序设计
一、选择题
CCAADD
三、操作题
1.求s=1+3+5+7+…100的值。
#include"
stdio.h"
inti,sum=0;
for(i=1;
i<
=100;
i+=2)
sum=sum+i;
sum=%d"
sum);
2.输入班级学生考试成绩,求考试平均成绩。
约定当输入负数时,表示输入结束。
{floatsum=0,score,ave;
intn=0;
score);
while(score>
0)
{n++;
sum=sum+score;
scanf("
ave=sum/n;
\nTheaveragescoreis%.2f"
ave);
3.输入一行字符以@作结束标志,分别统计其中英文字母、空格、数字和其它字符的个数。
{charch;
intcha=0,space=0,digit=0,other=0;
while((ch=getchar())!
@'
{if(ch>
||ch>
)cha++;
elseif(ch=='
'
)space++;
elseif(ch>
0'
9'
)digit++;
elseother++;
\ncha=%d,space=%d,digit=%d,other=%d"
cha,space,digit,other);
}
4.一张纸的厚度为0.1毫米,珠穆琅玛峰的高度为8848.13米,假如纸张有足够大,将纸对折多少次后可以超过珠峰的高度?
{floath=8848.13,h0=0.0001,h1;
intm=0;
h1=h0;
while(h0<
=h)
{h0=2*h0;
printf("
\nm=%d,high=%f"
m,h0);
m++;
}
printf("
\nm=%d\n"
m-1);
5、编写一个程序求出满足下列条件的四位数,该数是一个完全平方数;
第一、三位上数之和为10,第二、四位上数之积为12。
解:
#include<
inti,j,a,b,c,d;
for(i=32;
=99;
i++)
{
j=i*i;
a=j/1000;
b=j/100-a*10;
c=j/10-a*100-b*10;
d=j-a*1000-b*100-c*10;
if(a+c==10&
b*d==12)
%d"
j);
12969216
6、一个正数与3的和是5的倍数,与3的差是6的倍数,编写一个程序求符合条件的最小数。
intn;
n=1;
while
(1)
{
n=n+1;
if((n+3)%5==0&
(n-3)%6==0)break;
n=%d"
n);
n=27
7、已知xyz+yzz=532,其中x、y、z都是数字,编写一个程序求出x、y、z分别是多少。
intx,y,z,i;
for(x=1;
x<
=9;
x++)
for(y=1;
y<
y++)
for(z=0;
z<
z++)
{
i=100*x+10*y+z+100*y+10*z+z;
if(i==532)printf("
x=%d,y=%d,z=%d\n"
x,y,z);
}
本程序运行结果为:
x=3,y=2,z=1
8、学校有近千名学生排队,5人一行余2人,7人一行余3人,3人一行余1人,求学生人数。
intn;
for(n=1000;
n>
=10;
n--)
if(n%5==2&
n%7==3&
n%3==1)break;
n=%d\n"
n=997
9.验证歌德巴赫猜想:
任意一个大于6的偶数均可表示为两个质数的和。
{inti,x;
intp,q,k1,k2;
Pleaseinputanodddata(>
=6):
for(p=3;
p<
=x/2;
p+=2)
{k1=k2=1;
q=x-p;
if(p>
2)
for(i=2;
p;
if(p%i==0)k1=0;
for(i=2;
q;
if(q%i==0)k2=0;
if(k1==1&
k2==1)printf("
%d=%d+%d\n"
x,p,q);
}}
10.一个数恰好等于它的平方数的右端,这个数称为同构数。
如:
5的平方是25,25的平方是625。
找出1~1000之间的全部同构数。
math.h"
main()
{inti,j,k=0;
for(i=2;
1000;
{if(i/10==0)j=1;
/*因为i是整型,所以是整除*/
elseif(i/100==0)j=2;
elseif(i/1000==0)j=3;
if((longint)i*i%(int)pow(10,j)==i)/*同构数的定义*/
{k++;
/*计数器*/
printf("
%10d"
i);
if(k%5==0)printf("
}}
printf("
\nk=%d"
k);
}
1.编写程序求1-1/2+1/3-1/4+…+1/99-1/100的值
inti,s=-1;
floatsum=1.0;
for(i=2;
sum=sum+1.0*s/i;
sum=%f"
2.曾有一位印度国王要奖赏他的聪明能干的宰相达依尔。
达依尔只要求在国际象棋的棋盘格上放置小麦粒,第一格放1粒,第二格放两粒,第三格放4粒,第四格放8粒,……,最后能有多少小麦粒呢?
{floati,s=1,t=1;
for(i=1;
=63;
{t*=2;
s+=t;
s=%f\n"
s);
3.打印水仙花数,即一个三位数各位上的数字之和等于它本身,如:
153=13+53+33。
{intk1,k2,k3,i;
for(k1=1;
k1<
k1++)
for(k2=0;
k2<
k2++)
for(k3=0;
k3<
k3++)
{i=k1*k1*k1+k2*k2*k2+k3*k3*k3;
if(i==k1*100+k2*10+k3)
printf("
\n%d=%d^3+%d^3+%d^3"
i,k1,k2,k3);
}}
4.编制电视歌手大奖赛评分程序,要求评委人数和每位评委的打分从键盘输入,去掉一个最高分,再去掉一个最低分,求评委给出的最后得分。
main()/*TV大奖赛*/
{intn,i=1;
floatx,max,min,sum=0;
\nPleaseinputthenumberofscore:
\nInputscore:
max=x;
min=x;
sum=x;
while(i<
n)
{i++;
sum+=x;
if(max<
x)max=x;
elseif(x<
min)min=x;
sum=(sum-max-min)/(n-2);
Thelastscoreis%8.2f\n"
}
5.打印下列图形。
*****
*****
*****
*****
*****
{inti,j;
for(i=1;
=5;
{for(j=1;
j<
=5-i;
j++)
printf("