C程序设计4完整版课后习题答案.docx

上传人:b****2 文档编号:1990878 上传时间:2023-05-02 格式:DOCX 页数:112 大小:43.28KB
下载 相关 举报
C程序设计4完整版课后习题答案.docx_第1页
第1页 / 共112页
C程序设计4完整版课后习题答案.docx_第2页
第2页 / 共112页
C程序设计4完整版课后习题答案.docx_第3页
第3页 / 共112页
C程序设计4完整版课后习题答案.docx_第4页
第4页 / 共112页
C程序设计4完整版课后习题答案.docx_第5页
第5页 / 共112页
C程序设计4完整版课后习题答案.docx_第6页
第6页 / 共112页
C程序设计4完整版课后习题答案.docx_第7页
第7页 / 共112页
C程序设计4完整版课后习题答案.docx_第8页
第8页 / 共112页
C程序设计4完整版课后习题答案.docx_第9页
第9页 / 共112页
C程序设计4完整版课后习题答案.docx_第10页
第10页 / 共112页
C程序设计4完整版课后习题答案.docx_第11页
第11页 / 共112页
C程序设计4完整版课后习题答案.docx_第12页
第12页 / 共112页
C程序设计4完整版课后习题答案.docx_第13页
第13页 / 共112页
C程序设计4完整版课后习题答案.docx_第14页
第14页 / 共112页
C程序设计4完整版课后习题答案.docx_第15页
第15页 / 共112页
C程序设计4完整版课后习题答案.docx_第16页
第16页 / 共112页
C程序设计4完整版课后习题答案.docx_第17页
第17页 / 共112页
C程序设计4完整版课后习题答案.docx_第18页
第18页 / 共112页
C程序设计4完整版课后习题答案.docx_第19页
第19页 / 共112页
C程序设计4完整版课后习题答案.docx_第20页
第20页 / 共112页
亲,该文档总共112页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C程序设计4完整版课后习题答案.docx

《C程序设计4完整版课后习题答案.docx》由会员分享,可在线阅读,更多相关《C程序设计4完整版课后习题答案.docx(112页珍藏版)》请在冰点文库上搜索。

C程序设计4完整版课后习题答案.docx

C程序设计4完整版课后习题答案

C程序设计(第四版)(谭浩强)第一章课后习题答案

P006向屏幕输出文字.

#include<>代码均调试成功,若有失误大多不是代码问题.自已找找.

intmain()

{

printf("Welcometo\n");

return0;}

P008求两个数的和.

#include<>

intmain()

{

inta,b,sum;

a=5;

b=4;

sum=a+b;

printf("Thesumis%d.\n",sum);

return0;

}

P008调用函数比较两个数的大小.

#include<>

intmain()

{

intmax(intx,inty);inta,b,c;

scanf("%d,%d",&a,&b);c=max(a,b);printf("Themaxis%d.\n",c);

return0;

}

intmax(intx,inty){

intz;if(x>y)

z=x;

else

z=y;

return(z);}

P015三个数的大小.(数字0表示课后练习题)

#include<>

intmain()

{

inta,b,c,d;intmax(intx,inty,intz);printf("Pleaseinput3numbers:

\n");

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

d=max(a,b,c);printf("Themaxis:

%d.\n",d);}

intmax(intx,inty,intz)

{

intm;

if(x>y&&x>z)m=x;

if(y>x&&y>z)

m=y;

if(z>y&&z>x)

m=z;

return(m);}

C程序设计(第四版)(谭浩强)第2章课后习题答案

算法——程序的灵魂

P017计算机1-5相乘的积.

#include<>

intmain()

{

inti,s=1;for(i=1;i<6;i++){

s=s*i;n",s);

return0;

}

#include<>intmain()

{

inti,s=1;for(i=1;i<12;i++)可以是i=i+2

{

if(i%2!

=0)s=s*i;

else

continue;}

printf("Thesumis%d.\n",s);

return0;

}

P019按要求输出80分以上的学生信息.

暂时没法做.

P019判断2000-2500年中的闰年,并输出.

年的概念是地球围绕太阳一周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动1秒,但是真正的一年是天(目前)。

所以,如果每年定义为365天的话,1年就会多出天,4年就会多出天,非常接近1天,这样闰年就出现了,也就是每4年要有1年设置为366天,来抵消这多出的1天。

规则为:

·1)如果年份能被4整除,则该年计为闰年;可是,假如不做调整的话,当400年的时候,累计才多出天,接近于多出97天,闰年的设置却多出来100天,所以要在400年内,再撤销3个闰年。

怎么撤销呢?

就有了下面这个规则:

·2)如果年份能被100整除,则不计为闰年;问题又来了,400年里有4个100年吧,去掉后四个100年后,又少了一个,所以再加一个规则就是:

·3)如果年份能被400整除,则计为闰年。

简单说来每400年里设置了97个闰年,也就是400里的前3个100年不设置闰年,误差被调整到400年仅有天。

#include<>

intmain()

{

inti;

for(i=2000;i<=2200;i++)

{

if((i%4==0&&i%100!

=0)||i%400==0)printf("%disaleapyear!

\n",i);

else

printf("%disnotaleapyear!

\n",i);

}

}

P020求

(1)-(1/2)+(1/3)……+(1/99)-(1/100)的值.

#include<>

intmain()

{

floatsign=1,sum=0,deno,term;for(deno=1;deno<=100;deno++)

{

term=sign*(1/deno);sum=sum+term;sign=(-1)*sign;}

printf("Thesumofdeno(指定值)is%f.\n",sum);

return0;#include<>

intmain()

{

inti,num,n;printf("Pleaseinputanumber:

\n");{

if(num%i==0){

n=1;

break;}

n=0;}

if(n==0){

printf("Itisdoaprimenumber!

");}

else

{

printf("Itisnotaprimenumber!

");

}

return0;

}

要求用流程图表示上列算法.

要求用N-S图表示上列算法.

…………还要伪代码

P036调换二个参数的值.

#include<>

intmain()

{

chara='a',b='b',c;

c=a;

a=b;

b=c;

printf("anowis%c,bnowis%c!

\n",a,b);

return0;

}

P036输入10个数,并输出最大的那一个数.

#include<>

intmain()

{

inti,a[10],s=0;

printf("Pleaseinput10numbers:

\n");

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

{

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

}

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

{

if(s

}

printf("%disthebiggestnumber!

\n",s);

return0;

}

P036按大小顺序输出一些数.

#include<>

intmain()

{

inti,j,a[4],s=0;

printf("Pleaseinput5numbers:

\n");for(i=0;i<=4;i++)

{

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

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

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

if(a[i]>a[j]){

s=a[i];

a[i]=a[j];

a[j]=s;

}

}

}

for(i=0;i<=4;i++)printf("%d-",a[i]);

return0;

}

P036求1至100的总合.

#include<>

intmain()

{

inti,sum=0;for(i=0;i<101;i++)

sum=sum+i;

printf("Thesumofonetoonehundredis%d!

\n",sum);

return0;

}

P036判断一个数能否同时被3和5整除.

#include<>

intmain()

{

intn;

printf("Pleaseinputanumber:

\n");

scanf("%d",&n);

if(n%3==0&&n%5==0)printf("Canbedevideby3and5!

\n");

else

printf("Cannotbedevideby3and5!

\n");

return0;

}

P036输出100-200间的素数.

#include<>#include<>qrt是求根,属数学函数.

intmain(){

inti;

for(i=100;i<=200;i++)if(prime_number(i)==1)printf("%d",i);

return0;

}

intprime_number(doublem){

intj,k;

k=(int)sqrt(m);for(j=2;j<=k;j++)

{

if(m%j==0)

return0;}

return1;

}

#include<>

#include<>

intmain()

{

inti;

for(i=100;i<=200;i++){

if(prime(i)==1)printf("%distheprimenumber!

\n",i);

}

return0;

}

intprime(intj){

intm,n;

m=(int)sqrt(j);

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

{

if(j%n==0)

return0;}

return1;

}

请仿照来写.

P036最大公约数和最小公倍数.

#include<>main()

{

intm,n,c,d;

intgcd();intlcm();printf("Pleaseinputtwonumber:

\n");

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

c=gcd(m,n);y=x%y;x=temp;}

returny;}

intlcm(intx,inty)于号降序,大于号升序.

{temp=x;

x=y;

y=temp;

}

for(i=1;i<=y;i++){

if(!

((x*i)%y)){returnx*i;

}

}

}

最简单的C程序设计——顺序程序设计

P037把华氏温度转化为摄氏表示法.

#include<>

floatF_to_C(floatinput_fah){

floatoutput_cen;output_cen=9)*(input_fah-32);returnoutput_cen;}

floatC_to_F(floatinput_cen)

{

floatoutput_fah;

output_fah=5)*input_cen+32;returnoutput_fah;

}

intmain()

{

intchoice;

floatinput_fah,input_cen,output_fah,output_cen;printf("F_to_Cpress<1>andC_to_Fpress<2>!

\n");

scanf("%d",&choice);

if(choice==1)

{

printf("Pleaseinputfahrenheit:

");

scanf("%f",&input_fah);output_cen=F_to_C(input_fah);

printf("The华氏is%d,摄氏is%d.",(int)input_fah,(int)output_cen);

}

if(choice==2)

{

printf("Pleaseinputcentigrade:

");

scanf("%f",&input_cen);

output_fah=C_to_F(input_cen);

printf("TheCentigradeis%d,andtheFahrenheitis%d.",(int)input_cen,(int)output_fah);

}

return0;

}

P038计算存款利息(关于精度问题).

#include<>

intmain()

{

floatp0=1000,r1=,r2=,r3=,p1,p2,p3;

p1=p0*(1+r1);

p2=p0*(1+r2);

p3=p0*(1+r3/2)*(1+r3/2);

printf("p1=%f\np2=%f\np3=%f\n",p1,p2,p3);

return0;

}

P055大写转换成小写

#include<>

intmain()6个字母.

{

charc1,c2;

c1='A';

c2=c1+32;

printf("%c%d",c2,c2);

return0;

}

P059给出三角形边长,算出面积.

#include<>

#include<>

intmain()

{

doublea=,b=,c=,s,area;

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

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

printf("areais%f\n",area);return0;

}

P065求一无二次等式的根,默认两个不同根.

#include<>

#include<>

intmain()

{

doublea,b,c,disc,x1,x2,p,q;

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

disc=b*b-4*a*c;

p=-b/*a);

q=sqrt(disc)/*a);

x1=p+q;

x2=p-q;

printf("x1=%\nx2=%",x1,x2);

return0;

}

P071用%f输出实数,只能得到六位小数.

#include<>

#include<>

intmain()

{

doublea=;以是float.

printf("%.9f\n",a/3);

return0;

}

P072float型数据的有效位数.

#include<>

#include<>

intmain()

{

floata;33252,float精度6位,所以第七位后不可信.

a=10000/;

printf("%f\n",a);

return0;

}

P078使用putchar函数输出.

#include<>

#include<>

intmain()

{

chara='B',b='O',c='Y';

putchar(a);

putchar(b);

putchar(c);

putchar('\n');

putchar(101);putchar(66);

return0;

}

P079使用getchar得到字符.

#include<>

#include<>

intmain()

{

chara,b,c;

a=getchar();

b=getchar();

c=getchar();

putchar(a);

putchar(b);

putchar(c);putchar('\n');

return0;

}

P081getchar得到大写,putchar输出小写.

#include<>

#include<>

intmain()

{

chara,b;

a=getchar();

b=a+32;

putchar(b);

putchar('\n');

return0;

}

P082国民生产总值10年后的增长倍数.

#include<>

#include<>

intmain()

{

doublep,r=,n=10;

p=pow((1+r),n);printf("Pis%lfwhen10yearslater.\n",p);

return0;}

P082求各种存款的利息数.

#include<>

#include<>

intmain()

{

doublep,r,n;p=1000*(1+5*;

printf("5yearsis%lf!

\n",p);f输出的是double型.

p=(1000*(1+2*);

p=(p*(1+3*);

printf("5yearsis%lf!

\n",p);p=(1000*(1+3*);

p=(p*(1+2*);

printf("5yearsis%lf!

\n",p);明,是一样的.

p=1000*pow((1+,5);

printf("5yearsis%lf!

\n",p);p=1000*pow((1+4),4*5);

printf("5yearsis%lf!

\n",p);#include<>

#include<>

intmain()

{

doublem,r=,d=300000,p=6000;

m=(log10(p/(p-d*r)))/(log10(1+r));

printf("%.1lf",m);lf.

return0;

}

P084字母密码转换,调用函数及临界处理.

#include<>

charprintcode(charf)

{

if(((int)f>86&&(int)f<91)||((int)f>118&&(int)f<123))

{

return(f-26+4);}

else

{

return(f+4);

}

}

intmain()

{

chara,b,c,d,e;

printf("Pleaseinput:

\n");

a=getchar();

b=getchar();

c=getchar();

d=getchar();

e=getchar();printf("%c%c%c%c%c",printcode(a),printcode(b),printcode(c),printcode(d),printcode(e));

putchar(putcharcode(a));

putchar(putcharcode(b));

putchar(putcharcode(c));

putchar(putcharcode(d));

putchar(putcharcode(e));

return0;lf来实现,因为没有要求实部,所以格式中m不写.

以转换,但要在某此条件下,例如输出和读入时,%c是字母,而%d是数值,看着办.

}

选择结构程序设计

P086一无二次方程求根的二分支.

#include<>

#include<>

intmain()

{

doublea,b,c,disc,x1,x2,p,q;

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

disc=b*b-4*a*c;

if(disc<0)printf("Thisequationhasn'trealroots\n");

else

{

p=-b/*a);

q=sqrt(disc)/*a);

x1=p+q;

x2=p-q;

printf("x1=%\nx2=%",x1,x2);

}

return0;

}

P087二个数按大小输出.

#include<>

intmain(){

floata,b,t;

scanf("%f%f",&a,&b);如有个逗号.

if(a>b)

{

t=a;

a=b;

b=t;

}

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

return0;

}

P088三个数按大小输出.

#include<>

intmain(){

floata,b,c,t;

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

if(a>b){

t=a;

a=b;

b=t;

}

if(a>c){

t=a;

a=c;

c=t;

}

if(b>c){

t=b;

b=c;

c=t;

}

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

return0;

}

P099判断输入字符,并最终按小写输出.

#include<>

intmain()

{

charch;

scanf("%c",&ch);

ch=(ch>='A'&&ch<='Z')?

(ch+32):

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

return0;

}

P100按要求输出相应的Y值.

#include<>

intmain()

{

intx,y;

scanf("%d",&x);

if(x>=0)

{

if(x>0){

y=1;

}

else

{

y=0;

}

}

else{

y=-1;

}

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

return0;

}

P102switch的简单应用.

#include<>

intmain()

{

chargrade;

scanf("%c",&grade);

printf("Yourscore:

");

switch(grade)

{

case'a':

printf("85-100\n");break;case'b':

printf("70-84\n");break;

case'c':

printf("60-69\n");break;

case'd':

printf("<60\n");break;

default:

printf("Enterdataerror!

\n");

}

return0;

}

P104按输入执行操作,并且不分大小写.

#include<>

voidaction1(intx,inty)

{

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

}

voidaction2(intx,inty)

{

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

}

intmain()

{

charch;

int

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2