C语言程序设计第2版课后的题目详解.docx

上传人:b****6 文档编号:7592066 上传时间:2023-01-25 格式:DOCX 页数:38 大小:28.90KB
下载 相关 举报
C语言程序设计第2版课后的题目详解.docx_第1页
第1页 / 共38页
C语言程序设计第2版课后的题目详解.docx_第2页
第2页 / 共38页
C语言程序设计第2版课后的题目详解.docx_第3页
第3页 / 共38页
C语言程序设计第2版课后的题目详解.docx_第4页
第4页 / 共38页
C语言程序设计第2版课后的题目详解.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

C语言程序设计第2版课后的题目详解.docx

《C语言程序设计第2版课后的题目详解.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第2版课后的题目详解.docx(38页珍藏版)》请在冰豆网上搜索。

C语言程序设计第2版课后的题目详解.docx

C语言程序设计第2版课后的题目详解

《C语言程序设计能力教程(第二版)》课后作业及实训题

参考答案

第1章进入C语言程序世界

二、

1.IloveChina!

printf("wearestudents.\n")

2.6

项目实训题参考答案

1.编写一个C程序,输出以下信息:

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

Iamastudent!

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

main()

{printf("********************\n");

printf("Iamastudent!

\n");

printf("********************\n");

}

2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。

解:

main()

{

inta,b,c,v;

a=10;

b=20;

c=15;

v=a*b*c;

printf("v=%d",v);

}

本程序运行结果为:

v=3000

第2章编制C程序的基础知识

一选择题

CBABACC

二操作题

1.3,2,-8,2

3.000000,2.500000,-8.000000

2.ABCDE

FGH

whyis21+35equal52

3.

31

43

23

12

4.aabbccabc

AN

项目实训题

1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。

#defineM5

main()

{intn,c;

n=2;c=M*n;

printf("%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;

printf("%f\n",x+a%3*(int)(x+y)%2/4);}

(2)main()

{inta=2,b=3;

floatx=3.5,y=2.5;

printf("%f\n",(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

main()

{

floatsj,gz,yfgz;

printf("time,salary:

");

scanf("%f,%f",&sj,&gz);

yfgz=sj*gz*0.9;

printf("totalsalary:

%f\n",yfgz);

}

本程序运行结果为:

time,salary:

4,3

totalsalary:

10.800000

2.编写一个程序求出任意一个输入字符的ASCII码

解:

#include

main()

{

charc;

printf("Inputastring:

");

scanf("%c",&c);

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

}

本程序运行结果为:

Inputastring:

a

aASCIIis97

3、编写一个程序用于水果店售货员算帐:

已知苹果每斤2.50元,鸭梨每斤1.80元,香蕉每斤2元,橘子每斤1.6元,要求输入各类水果的重量,打印出应付钱数,再输入顾客付款数,打印出应找的钱数。

解:

main()

{

floatp,y,x,j,ys,g,fk;

printf("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;

printf("fukuan=");

scanf("%f",&g);

fk=g-ys;

printf("result:

\n");

printf("fukuan=%6.2fyuan\nshoukuan=%6.2fyuan\nzhaohui=%6.2fyuan\n",g,ys,fk);

}

本程序运行结果为:

apple,pear,banana,orange(weight)=1,2,3,4

fukuan=100

result:

fukuan=100.00yuan

shoukuan=18.50yuan

zhaohui=81.50yuan

项目实训

1.假设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后可得到本利之和deposit。

#include

main()

{intn;

floatrate=0.0225,capital,deposit;

scanf("%d,%f",&n,&capital);

deposit=capital*pow(1+rate,n);

printf("deposit=%f\n",deposit);}

2.将一个三位数整数,正确分离出它的个位、十位和百位数字,并分别在屏幕上输出。

main()

{intn,a,b,c;

scanf("%3d",&n);

a=n/100;

b=n%100/10;

c=n%100%10/1;

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

第四章选择结构程序设计

一、略

二、BBABCBA

三、1.10

2.2322

3.10200

4.ch>=’A’&&ch<=’Z’||ch>=’a’&&ch<=’z’

ch>=’0’&&ch<=’9’

ch==’’

5.-1

四、上机操作

1.从键盘输入一个英文字母,如果是大写字母,则将它变为小写字母输出;如果是小写字母,则将其变为大写字母输出。

#include

main()

{charch;

ch=getchar();

if(ch>='A'&&ch<='Z')ch+=32;

elseif(ch>='a'&&ch<='z')ch-=32;

putchar(ch);

putchar('\n');}

 

2.根据输入的x值依据下列表达式,计算y的值。

2x(x>-1)

y=3(x=-1)

4+x(x<-1)

解:

main()

{

floatx,y;

scanf("%f",&x);

if(x>-1)

y=2*x;

elseif(x==1)

y=3;

elsey=4+x;

printf("y=%f",y);

}

本程序运行结果为:

-2

y=2.000000

3.编写程序,输入一个整数,判断它是奇数还是偶数,若是奇数,输出“IsOdd“;若是偶数,输出“IsEven“。

main()

{intx;

scanf("%d",&x);

if(x%2==0)printf("IsEven\n");

elseprintf("IsOdd\n");}

4.设计应用程序,求二次方程ax2+bx+c=0的解。

#include

main()

{floata,b,c,disc,x1,x2,p,q;

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

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

printf("%8.4f+%x8.4fi\n",p,q);

printf("%8.4f-%8.4fi\n",p,q);}}}

5.按托运规则,行李不超过50公斤时,运费为0.15元/公斤,如超过50公斤,超过部分的运费为0.22元/公斤,现有行李w公斤,编写一个程序计算运费。

解:

#include

main()

{

floatw,f,x;

printf("weight:

");

scanf("%f",&w);

if(w<=50)

x=0.15*w;

else

x=0.15*50+0.22*(w-50);

printf("money:

%6.2fyuan\n",x);

}

本程序运行结果为:

weight:

20

money:

3.00yuan

weight:

60

money:

9.70yuan

6.某商场给与顾客购物的折扣率如下:

购物金额<200元不打折

500元>购物金额>=200元9折

1000元>购物金额>=500元8折

购物金额>=1000元7.5折

输入一个购物金额,输出打折率、购物实际付款金额。

#include

main()

{floatx,y,realx;

scanf("%f",&x);

if(x<=0){printf("Error!

Youinputaworrynumber!

\n");y=0;}

else

{if(x<200)y=1.0;

elseif(x<500)y=0.9;

elseif(x<1000)y=0.8;

elsey=0.75;}

if(y!

=0)

{realx=x*y;

printf("y=%f,therealx=%5.2f\n",y,realx);}}

项目实训

某托儿所收2岁到6岁的孩子,2岁、3岁孩子进小班(Lowerclass);4岁孩子进中班(Middleclass);5岁、6岁孩子进大班(Higherclass)。

编写程序(用if语句和switch语句),输入孩子年龄,输出年龄及进入的班号。

如:

输入:

3,输出:

age:

3,enterLowerclass。

#include

main()

{intage;

printf("Pleaseinputyourbaby'sage:

");

scanf("%d",&age);

if(age>6||age<2)printf("Sorry,yourbabycan'tenter!

");

elseswitch(age);

{case2:

case3:

printf("age:

%d,enterLowerclass\n",age);break;

case4:

printf("age:

%d,enterMiddleclass\n",age);break;

case5:

case6:

printf("age:

%d,enterHigherclass",age);break;}}

 

第五章循环结构程序设计

一、选择题

CCAADD

三、操作题

1.求s=1+3+5+7+…100的值。

#include"stdio.h"

main()

{

inti,sum=0;

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

sum=sum+i;

printf("sum=%d",sum);

}

2.输入班级学生考试成绩,求考试平均成绩。

约定当输入负数时,表示输入结束。

main()

{floatsum=0,score,ave;

intn=0;

scanf("%f",&score);

while(score>0)

{n++;

sum=sum+score;

scanf("%f",&score);}

ave=sum/n;

printf("\nTheaveragescoreis%.2f",ave);}

3.输入一行字符以@作结束标志,分别统计其中英文字母、空格、数字和其它字符的个数。

#include"stdio.h"

main()

{charch;

intcha=0,space=0,digit=0,other=0;

while((ch=getchar())!

='@')

{if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')cha++;

elseif(ch=='')space++;

elseif(ch>='0'&&ch<='9')digit++;

elseother++;}

printf("\ncha=%d,space=%d,digit=%d,other=%d",cha,space,digit,other);}

4.一张纸的厚度为0.1毫米,珠穆琅玛峰的高度为8848.13米,假如纸张有足够大,将纸对折多少次后可以超过珠峰的高度?

main()

{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

main()

{

inti,j,a,b,c,d;

for(i=32;i<=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)

printf("%d",j);

}

}

本程序运行结果为:

12969216

6、一个正数与3的和是5的倍数,与3的差是6的倍数,编写一个程序求符合条件的最小数。

解:

#include

main()

{

intn;

n=1;

while

(1)

{

n=n+1;

if((n+3)%5==0&&(n-3)%6==0)break;

}

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

}

本程序运行结果为:

n=27

7、已知xyz+yzz=532,其中x、y、z都是数字,编写一个程序求出x、y、z分别是多少。

解:

#include

main()

{

intx,y,z,i;

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

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

for(z=0;z<=9;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人,求学生人数。

解:

#include

main()

{

intn;

for(n=1000;n>=10;n--)

if(n%5==2&&n%7==3&&n%3==1)break;

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

}

本程序运行结果为:

n=997

9.验证歌德巴赫猜想:

任意一个大于6的偶数均可表示为两个质数的和。

#include

main()

{inti,x;

intp,q,k1,k2;

printf("Pleaseinputanodddata(>=6):

");

scanf("%d",&x);

for(p=3;p<=x/2;p+=2)

{k1=k2=1;

q=x-p;

if(p>2)

for(i=2;i

if(p%i==0)k1=0;

for(i=2;i

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之间的全部同构数。

#include"math.h"

main()

{inti,j,k=0;

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

{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("\n");}}

printf("\nk=%d",k);}

项目实训

1.编写程序求1-1/2+1/3-1/4+…+1/99-1/100的值

#include"stdio.h"

main()

{

inti,s=-1;

floatsum=1.0;

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

sum=sum+1.0*s/i;

printf("sum=%f",sum);

}

2.曾有一位印度国王要奖赏他的聪明能干的宰相达依尔。

达依尔只要求在国际象棋的棋盘格上放置小麦粒,第一格放1粒,第二格放两粒,第三格放4粒,第四格放8粒,……,最后能有多少小麦粒呢?

main()

{floati,s=1,t=1;

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

{t*=2;

s+=t;}

printf("s=%f\n",s);}

3.打印水仙花数,即一个三位数各位上的数字之和等于它本身,如:

153=13+53+33。

main()

{intk1,k2,k3,i;

for(k1=1;k1<=9;k1++)

for(k2=0;k2<=9;k2++)

for(k3=0;k3<=9;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;

printf("\nPleaseinputthenumberofscore:

");

scanf("%d",&n);

printf("\nInputscore:

");

scanf("%f",&x);

max=x;min=x;sum=x;

while(i

{i++;

scanf("%f",&x);

sum+=x;

if(max

elseif(x

sum=(sum-max-min)/(n-2);

printf("Thelastscoreis%8.2f\n",sum);}

 

5.打印下列图形。

*****

*****

*****

*****

*****

main()

{inti,j;

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

{for(j=1;j<=5-i;j++)

printf("");

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

printf("*");

printf("\n");}}

 

第六章数组

一、选择题

DADAACCAD

二、程序阅读题

131313131313

三、上机实训题

1、分别用冒泡法和选择排序法对十个随机整数进行排序。

参考教材

2、编写一个程序计算字符串中值为x(x由键盘输入)的字符个数。

#include"stdio.h"

#include"string.h"

main()

{chara[20],x;

intn=0,i=0;

printf("\nPleaseinputstring,endofenterkey:

");

gets(a);

printf("\nPleaseinputx:

");

x=getchar();

while(a[i]!

='\0')

{if(a[i]==x)n++;

i++;}

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

if(x[i]>ave)printf("%f",x[i]);}

3、编写一个程序判定用户输入的正数是否为“回文数”,所谓回文数是指数正读反读都相同。

#include

main()

{intbuffer[10],i,k,b;

longnumber,n;

printf("inputapositivenumber:

");

scanf("%ld",&number);

k=0;

n=number;

do

{buffer[k]=n%10;

k=k+1;

n=n/10;}while(n!

=0);

b=1;

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

if(buffer[i]!

=buffer[k-1-i])b=0;

if(b)printf("%ldishuiwenshu\n",number);

elseprintf("%ld

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

当前位置:首页 > 高等教育 > 工学

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

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