C语言设计谭浩强第三版的课后习题答案_c程序谭浩强习题答案

2020-02-27 其他范文 下载本文

C语言设计谭浩强第三版的课后习题答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c程序谭浩强习题答案”。

C语言设计谭浩强第三版的课后习题答案

1.5请参照本章例题,编写一个C程序,输出以下信息: main(){ printf(“

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

n”);printf(“n”);printf(“

Very Good!n”);printf(“n”);printf(“

************n”);} 1.6编写一个程序,输入a b c三个值,输出其中最大者。解:main(){int a,b,c,max;printf(“请输入三个数a,b,c:n”);

scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(maxmax=b;if(maxmax=c;printf(“最大数为:%d”,max);} 第三章

3.3 请将下面各数用八进制数和十六进制数表示:(1)10(2)32(3)75(4)-617(5)-111(6)2483(7)-28654(8)21003 解:十 八 十六

(10)=(12)=(a)

(32)=(40)=20

(75)=(113)=4b

(-617)=(176627)=fd97

-111=177621=ff91

2483=4663=963

-28654=110022=9012

21003=51013=520b 3.5字符常量与字符串常量有什么区别?

解:字符常量是一个字符,用单引号括起来。字符串常量是由0个或若干个字符 而成,用双引号把它们括起来,存储时自动在字符串最后加一个结束符号''.3.6写出以下程序的运行结果: #include void main(){ char c1='a',c2='b',c3='c',c4='101',c5='116';printf(“a%c b%ctc%ctabcn”,c1,c2,c3);printf(“tb%c %cn”,c4,c5);

解:程序的运行结果为: aabb cc abc A N 3.7将“China”译成密码.密码规律:用原来的字母后面第4个字母代替原来的字母, 例如,字母“A”后面第4个字母是“E”,用“E”代替“A”.因此,“China”应译为“Glmre”.请编一程序,用赋初值的议程使c1,c2,c3,c4,c5分别变成'G','1','m','r','e',并 输出.main(){char c1=“C”,c2=“h”,c3=“i”,c4='n',c5='a';c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(“密码是%c%c%c%c%cn”,c1,c2,c3,c4,c5);} 3.8例3.6能否改成如下: #include void main(){ int c1,c2;(原为 char c1,c2)c1=97;c2=98;printf(“%c%cn”,c1,c2);printf(“%d%dn”,c1,c2);} 解:可以.因为在可输出的字符范围内,用整型和字符型作用相同.3.9求下面算术表达式的值.(1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)(2)(float)(a+b)/2+(int)x%(int)y=3.5(设a=2,b=3,x=3.5,y=2.5)3.10写出下面程序的运行结果: #include void main(){ int i,j,m,n;i=8;j=10;m=++i;n=j++;printf(“%d,%d,%d,%dn”,i,j,m,n);} 解:结果:

9,11,9,10 第4章

4.4.a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'.想得

到以下的输出格式和结果,请写出程序要求输出的结果如下: a= 3 b= 4 c= 5 x=1.200000,y=2.400000,z=-3.600000 x+y= 3.60 y+z=-1.20 z+x=-2.40 u= 51274 n=

128765 c1='a' or 97(ASCII)c2='B' or 98(ASCII)解: main(){ int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1='a';c2='b';printf(“n”);printf(“a=%2d b=%2d c=%2dn”,a,b,c);printf(“x=%8.6f,y=%8.6f,z=%9.6fn”,x,y,z);printf(“x+y=%5.2f y=z=%5.2f z+x=%5.2fn”,x+y,y+z,z+x);printf(“u=%6ld n=%9ldn”,u,n);printf(“c1='%c' or %d(ASCII)n”,c1,c2);printf(“c2='%c' or %d(ASCII)n”,c2,c2);} 4.5请写出下面程序的输出结果.结果: 57 7 67.856400,-789.123962 67.856400 ,-789.123962

67.86,-789.12,67.856400,-789.123962,67.856400,-789.123962 6.785640e+001,-7.89e+002 A,65,101,41 1234567,4553207,d687 65535,17777,ffff,-1 COMPUTER, COM 4.6用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a', 问在键盘上如何输入? main(){ int a,b;float x,y;

char c1,c2;scanf(“a=%d b=%d,&a,&b);scanf(” x=%f y=%e“,&x,&y);scanf(” c1=%c c2=%c“,&c1,&c2);} 解:可按如下方式在键盘上输入: a=3 b=7 x=8.5 y=71.82 c1=A c2=a 说明:在边疆使用一个或多个scnaf函数时,第一个输入行末尾输入的”回车“被第二 个scanf函数吸收,因此在第二三个scanf函数的双引号后设一个空格以抵消上行 入的”回车“.如果没有这个空格,按上面输入数据会出错,读者目前对此只留有一 初步概念即可,以后再进一步深入理解.4.7用下面的scanf函数输入数据使a=10,b=20,c1='A',c2='a',x=1.5,y=-

3.75,z=57.8,请问

在键盘上如何输入数据?

scanf(”%5d%5d%c%c%f%f%*f %f“,&a,&b,&c1,&c2,&y,&z);解: main(){ int a,b;float x,y,z;char c1,c2;scanf(”%5d%5d%c%c%f%f“,&a,&b,&c1,&c2,&x,&y,&z);} 运行时输入:

20Aa1.5-3.75 +1.5,67.8 注解:按%5d格式的要求输入a与b时,要先键入三个空格,而后再打入10与20。%*f

是用来禁止赋值的。在输入时,对应于%*f的地方,随意打入了一个数1.5,该值不

会赋给任何变量。

4.8设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积,用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后两位数字.请编

程.解:main(){ float pi,h,r,l,s,sq,vq,vz;pi=3.1415926;printf(”请输入圆半径r圆柱高h:n“);scanf(”%f,%f“,&r,&h);

l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vq=4.0/3.0*pi*r*r*r;vz=pi*r*r*h;printf(”圆周长为:

=%6.2fn“,l);printf(”圆面积为:

=%6.2fn“,s);printf(”圆球表面积为: =%6.2fn“,sq);printf(”圆球体积为:

=%6.2fn“,vz);} 4.9输入一个华氏温度,要求输出摄氏温度,公式为C=5/9(F-32),输出要有文字说明,取两位小数.解: main(){ float c,f;printf(”请输入一个华氏温度:n“);scanf(”%f“,&f);c=(5.0/9.0)*(f-32);printf(”摄氏温度为:%5.2fn“,c);} 第五章 逻辑运算和判断选取结构

5.4有三个整数a,b,c,由键盘输入,输出其中最大的数.main(){ int a,b,c;printf(”请输入三个数:“);scanf(”%d,%d,%d“,&a,&b,&c);if(a if(b

printf(”max=%dn“,c);

else

printf(”max=%dn“,b);else if(a

printf(”max=%dn“,c);

else

printf(”max-%dn“,a);} 方法2:使用条件表达式.main(){int a,b,c,termp,max;printf(”

请输入

A,B,C:

“);scanf(”%d,%d,%d“,&a,&b,&c);printf(”A=%d,B=%d,C=%dn“,a,b,c);temp=(a>b)?a:b;max=(temp>c)? temp:c;printf(”

A,B,C中最大数是%d,“,max);

} 5.5 main(){int x,y;printf(”输入x:“);scanf(”%d“,&x);if(x

{y=x;

printf(”X-%d,Y=X=%d n“,x,y);

} else if(x

{y=2*x-1;

printf(” X=%d, Y=2*X-1=%dn“,x,y);

} else

{y=3*x-11;

printf(”X=5d, Y=3*x-11=%d n“,x,y);

} }

(习题5-6:)自己写的已经运行成功!不同的人有不同的算法,这些答案仅供参考!

void main(){ float s,i;char a;scanf(”%f“,&s);while(s>100||s

} printf(”%c“,a);}

5.7给一个不多于5位的正整数,要求:1.求它是几位数2.分别打印出每一位数字3.按逆序打印出各位数字.例如原数为321,应输出123.main(){ long int num;int indiv,ten,hundred,housand,tenthousand,place;printf(”请输入一个整数(0-99999):“);scanf(”%ld“,&num);if(num>9999)place=5;else if(num>999)place=4;else if(num>99)place=3;else if(num>9)place=2;else place=1;printf(”place=%dn“,place);printf(”每位数字为:“);ten_thousand=num/10000;thousand=(num-tenthousand*10000)/1000;hundred=(num-tenthousand*10000-thousand*1000)/100;ten=(num-tenthousand*10000-thousand*1000-hundred*100)/10;indiv=num-tenthousand*10000-thousand*1000-hundred*100-ten*10;switch(place){case 5:printf(”%d,%d,%d,%d,%d“,tenthousand,thousand,hundred,ten,indiv);printf(”n反序数字为:“);printf(”%d%d%d%d%dn“,indiv,ten,hundred,thousand,tenthousand);break;case 4:printf(”%d,%d,%d,%d“,thousand,hundred,ten,indiv);printf(”n反序数字为:“);printf(”%d%d%d%dn“,indiv,ten,hundred,thousand);break;case 3:printf(”%d,%d,%dn“,hundred,ten,indiv);printf(”n反序数字为:“);printf(”%d%d%dn“,indiv,ten,hundred);case 2:printf(”%d,%dn“,ten,indiv);printf(”n反序数字为:“);printf(”%d%dn“,indiv,ten);

case 1:printf(”%dn“,indiv);printf(”n反序数字为:“);printf(”%dn“,indiv);} } 5.8 1.if语句

main(){long i;float bonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;scanf(”%ld“,&i);if(i

用switch语句编程序 main(){long i;float bonus,bon1,bon2,bon4,bon6,bon10;int branch;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;scanf(”%ld“,&i);branch=i/100000;if(branch>10)branch=10;switch(branch){case 0:bonus=i*0.1;break;

case 1:bonus=bon1+(i-100000)*0.075;break;

case 2:

case 3:bonus=bon2+(i-200000)*0.05;break;

case 4:

case 5:bonus=bon4+(i-400000)*0.03;break;

case 6:

case 7

case 8:

case 9:bonus=bon6+(i-600000)*0.015;break;

case 10:bonus=bon10+(i-1000000)*0.01;

} printf(”bonus=%10.2f“,bonus);}

5.9 输入四个整数,按大小顺序输出.main()

{int t,a,b,c,d;

printf(”请输入四个数:“);

scanf(”%d,%d,%d,%d“,&a,&b,&c,&d);

printf(”nn a=%d,b=%d,c=%d,d=%d n“,a,b,c,d);

if(a>b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(a>d){t=a;a=d;d=t;}

if(b>c){t=b;b=c;c=t;}

if(b>d){t=b;b=d;d=t;}

if(c>d){t=c;c=d;d=t;} printf(”n 排序结果如下: n“);printf(”

%d %d %d %d n“,a,b,c,d);} 5.10塔 main(){ int h=10;float x,y,x0=2,y0=2,d1,d2,d3,d4;printf(”请输入一个点(x,y):“);scanf(”%f,%f“,&x,&y);d1=(x-x0)*(x-x0)+(y-y0)(y-y0);d2=(x-x0)*(x-x0)+(y+y0)(y+y0);d3=(x+x0)*(x+x0)+(y-y0)*(y-y0);d4=(x+x0)*(x+x0)+(y+y0)*(y+y0);

if(d1>1 && d2>1 && d3>1 && d4>1)h=0;printf(”该点高度为%d“,h);}

第六章 循环语句

6.1输入两个正数,求最大公约数最小公倍数.main(){ int a,b,num1,num2,temp;printf(”请输入两个正整数:n“);scanf(”%d,%d“,&num1,&num2);if(num1{ temp=num1;num1=num2;num2=temp;} a=num1,b=num2;while(b!=0)

{

temp=a%b;

a=b;

b=temp;

} printf(”它们的最大公约数为:%dn“,a);printf(”它们的最小公倍数为:%dn“,num1*num2/2);} 6.2输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数.解: #include

> main(){ char c;int letters=0,space=0,degit=0,other=0;printf(”请输入一行字符:n“);scanf(”%c“,&c);while((c=getchar())!='n'){ if(c>='a'&&c'A'&&c='0'&&c

else other++;} printf(”其中:字母数=%d 空格数=%d 数字数=%d 其它字符数=%

dn“,letters,space, digit,other);} 6.3求s(n)=a+aa+aaa+…+aa…a之值,其中工是一个数字.解: main(){ int a,n,count=1,sn=0,tn=0;printf(”请输入a和n的值:n“);scanf(”%d,%d“,&a,&n);printf(”a=%d n=%d n“,a,n);while(count

} for(k=1;k

{

if((j%i)==0)

{

n++;

s=s-i;

switch(n)

{

case 1: k0=i;break;case 2: k1=i;break;case 3: k2=i;break;case 4: k3=i;break;case 5: k4=i;break;case 6: k5=i;break;case 7: k6=i;break;case 8: k7=i;break;case 9: k8=i;break;case 10: k9=i;break;}

}

} if(s==0)

{ printf(”%d是一个‘完数’,它的因子是“,j);if(n>1)

printf(”%d,%d“,k0,k1);if(n>2)

printf(”,%d“,k2);

if(n>3)

printf(”,%d“,k3);if(n>4)

printf(”,%d“,k4);if(n>5)

printf(”,%d“,k5);if(n>6)

printf(”,%d“,k6);if(n>7)

printf(”,%d“,k7);if(n>8)

printf(”,%d“,k8);if(n>9)

printf(”,%d“,k9);printf(”n“);

} } 方法二:此题用数组方法更为简单.main(){ static int k[10];int i,j,n,s;for(j=2;j

}

} if(s==0){ printf(”%d是一个完数,它的因子是:“,j);for(i=0;iprintf(”%d,“,k[i]);printf(”%dn“,k[n]);} } 6.8 有一个分数序列:2/1,3/2,5/3,8/5……求出这个数列的前20项之和.解: main(){

int n,t,number=20;float a=2,b=1,s=0;for(n=1;n0){ x1=(x2+1)*2;x2=x1;day--;} printf(”桃子总数=%dn“,x1);}

6.12 #include”math.h“ main(){float x,x0,f,f1;x=1.5;

do

{x0=x;

f=((2*x0-4)*x0+3)*x0-6;

f1=(6*x0-8)*x0+3;

x=x0-f/f1;

} while(fabs(x-x0)>=1e-5);printf(”x=%6.2fn“,x);}

6.13 #include”math.h“ main(){float x0,x1,x2,fx0,fx1,fx2;do

{scanf(”%f,%f“,&x1,&x2);

fx1=x1*((2*x1-4)*x1+3)-6;

fx2=x2*((2*x2-4)*x2+3)-6;

} while(fx1*fx2>0);do

{x0=(x1+x2)/2;

fx0=x0*((2*x0-4)*x0+3)-6;

if((fx0*fx1)

{x2=x0;

fx2=fx0;

}

else

{x1=x0;

fx1=fx0;

}

} while(fabs(fx0)>=1e-5);printf(”x0=%6.2fn“,x0);} 6.14打印图案

main(){int i,j,k;for(i=0;i

{for(j=0;j

printf(” “);

for(k=0;k

printf(”*“);

printf(”n“);

}

for(i=0;i

{for(j=0;j

printf(” “);

for(k=0;k

printf(”*“);

printf(”n“);

} } 6.15乒乓比赛 main(){ char i,j,k;for(i='x';i

{ if(i!=k&&j!=k)

{if(i!='x' && k!='x' && k!='z')printf(”顺序为:na-%ctb--%ctc--%cn“,i,j,k);

}

}

} }

C语言设计谭浩强第三版的课后习题答案7-8(2008-10-21 17:15:29)

标签:杂谈

分类:淘金

C语言设计谭浩强第三版的课后习题答案

7.1用筛选法求100之内的素数.#include #define N 101 main(){int i,j,line,a[N];

for(i=2;ifor(i=2;ifor(j=i+1;j {if(a[i]!=0 && a[j]!=0)

if(a[j]%a[i]==0)a[j]=0;printf(”n“);for(i=2,line=0;i{ if(a[i]!=0)

{printf(”%5d“,a[i]);line++;if(line==10){printf(”n“);line=0;}

} } 7.2用选择法对10个数排序.#define N 10 main(){ int i,j,min,temp,a[N];

printf(”请输入十个数:n“);for(i=0;i{

printf(”a[%d]=“,i);

scanf(”%d“,&a[i]);} printf(”n“);for(i=0;i printf(”%5d“,a[i]);printf(”n“);

for(i=0;i{ min=i;

for(j=i+1;j

if(a[min]>a[j])min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;}

printf(”n排序结果如下:n“);for(i=0;iprintf(”%5d“,a[i]);}

7.3对角线和:

main(){ float a[3][3],sum=0;int i,j;printf(”请输入矩阵元素:n“);

for(i=0;i

for(j=0;j

for(i=0;i

sum=sum+a[i][i];

printf(”对角元素之和=6.2f“,sum);} 7.4插入数据到数组

main(){int a[11]={1,4,6,9,13,16,19,28,40,100};int temp1,temp2,number,end,i,j;printf(”初始数组如下:“);for(i=0;iend)a[10]=number;else {for(i=0;i

{

if(a[i]>number){temp1=a[i];a[i]=number;for(j=i+1;j

} } for(i=0;j

printf(”a%6d“,a[i]);} 7.5将一个数组逆序存放。

#define N 5 main(){ int a[N]={8,6,5,4,1},i,temp;printf(”n 初始数组:n“);

for(i=0;iprintf(”%4d“,a[i]);for(i=0;i{ temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;} printf(”n 交换后的数组:n“);for(i=0;i

printf(”%4d“,a[i]);} 7.6杨辉三角

#define N 11 main(){ int i,j,a[N][N];

for(i=1;i {a[i][i]=1;

a[i][1]=1;

}

for(i=3;i

for(j=2;j

for(i=1;i

{ for(j=1;j

}

printf(”n“);} 7.8鞍点

#define N 10 #define M 10 main(){ int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj;printf(”n输入行数n:“);scanf(”%d“,&n);printf(”n输入列数m:“);scanf(”%d“,&m);

for(i=0;i { printf(”第%d行?n“,i);for(j=0;j

scanf(”%d“,&a[i][j];} for(i=0;i { for(j=0;j

printf(”%5d“,a[i][j]);

pritf(”n“);} flag2=0;for(i=0;i { max=a[i][0];for(j=0;j if(a[i][j]>max)

{ max=a[i][j];

maxj=j;} for(k=0,flag1=1;k

if(max>a[k][max])

flag1=0;if(flag1){ printf(”n第%d行,第%d列的%d是鞍点n“,i,maxj,max);

flag2=1;} } if(!flag2)

printf(”n 矩阵中无鞍点!n“);}

7.9变量说明:top,bott:查找区间两端点的下标;loca:查找成功与否的开关变量.#include #define N 15 main(){ int i,j,number,top,bott,min,loca,a[N],flag;

char c;

printf(”输入15个数(a[i]>[i-1])n);

scanf(“%d”,&a[0]);

i=1;

while(i { scanf(“%d”,&a[i]);

if(a[i]>=a[i-1])i++;esle {printf(“请重输入a[i]”);printf(“必须大于%dn”,a[i-1]);}

}

printf(“n”);

for(i=0;i

printf(“%4d”,a[i]);

printf(“n”);

flag=1;

while(flag)

{ printf(“请输入查找数据:”);

scanf(“%d”,&number);

loca=0;

top=0;

bott=N-1;

if((numbera[N-1]))loca=-1;

while((loca==0)&&(top

{ min=(bott+top)/2;

if(number==a[min])

{ loca=min;

printf(“%d位于表中第%d个数n”,number,loca+1);

}

else if(number

bott=min-1;else

top=min+1;

}

if(loca==0||loca==-1)

printf(“%d不在表中n”,number);

printf(“是否继续查找?Y/N!n”);

c=getchar();if(c=='N'||c=='n')flag=0;

} }

7.10 main(){ int i,j,uppn,lown,dign,span,othn;

char text[3][80];

uppn=lown=dign=span=othn=0;

for(i=0;i

{ printf(“n请输入第%d行:n”,i);

gets(text[i]);

for(j=0;j

{if(text[i][j]>='A' && text[i][j]='a' && text[i][j]='1' && text[i][j]

}

}

for(i=0;i

printf(“大写字母数:%dn”,uppn);

printf(“小写字母数:%dn”,lown);

printf(“数字个数:%dn”,dign);

printf(“空格个数:%dn”,span);

printf(“其它字符:%dn”,othn);}

7.11 main()

{static char a[5]={'*','*','*','*','*'};

int i,j,k;

char space=' ';

for(i=0;i

{printf(“n”);

for(j=1;j

for(k=0;k

} } 7.12 #include main(){int i,n;char ch[80],tran[80];printf(“请输入字符:”);gets(ch);printf(“n密码是%c”,ch);i=0;while(ch[i]!=''){if((ch[i]>='A')&&(ch[i]

tran[i]=26+64-ch[i]+1+64;else if((ch[i]>='a')&&(ch[i]

tran[i]=26+96-ch[i]+1+96;else tran[i]=ch[i];

i++;} n=i;

printf(“n原文是:”);for(i=0;iputchar(tran[i]);} 7.13 main()

{

char s1[80],s2[40];

int i=0,j=0;

printf(“n请输入字符串1:”);

scanf(“%s”,s1);

printf(“n请输入字符串2:”);

scanf(“%s”,s2);

while(s1[i]!='')

i++;while(s2[j]!='')

s1[i++]=s2[j++];s1[i]='';printf(“n连接后字符串为:%s”,s1);

}

7.14 #include main(){int i,resu;char s1[100],s2[100];printf(“请输入字符串1:n”);gets(s1);printf(“n 请输入字符串2:n”);gets(s2);i=0;while((s1[i]==s2[i])&&(s1[i]!=''))i++;if(s1[i]=='' && s2[i]=='')resu=0;else resu=s1[i]-s2[i];printf(“ %s与%s比较结果是%d”,s1,s2,resu);} 7.15 #include main()

{

char from[80],to[80];

int i;

printf(“请输入字符串”);

scanf(“%s”,from);

for(i=0;i

to[i]=from[i];

printf(“复制字符串为:%sn”,to);

}

第八章 函数

8.1(最小公倍数=u*v/最大公约数.)hcf(u,v)int u,v;(int a,b,t,r;if(u>v)

{t=u;u=v;v=t;} a=u;b=v;while((r=b%a)!=0)

{b=a;a=r;}

return(a);

}

lcd(u,v,h)

int u,v,h;{int u,v,h,l;scanf(“%d,%d”,&u,&v);h=hcf(u,v);printf(“H.C.F=%dn”,h);l=lcd(u,v,h);printf(“L.C.d=%dn”,l);}

{return(u*v/h);} main(){int u,v,h,l;scanf(“%d,%d”,&u,&v);h=hcf(u,v);printf(“H.C.F=%dn”,h);l=lcd(u,v,h);printf(“L.C.D=%dn”,l);

}

8.2求方程根 #include float x1,x2,disc,p,q;

greater_than_zero(a,b)float a,b;{ x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);}

equal_to_zero(a,b)float a,b;{x1=x2=(-b)/(2*a);}

smaller_than_zero(a,b)float a,b;{p=-b/(2*a);q=sqrt(disc)/(2*a);} main(){ float a,b,c;printf(“n输入方程的系数a,b,c:n”);scanf(“%f,%f,%f”,&a,&b,&c);printf(“n 方程是:%5.2f*x*x+%5.2f*x+%5.2f=0n”,a,b,c);disc=b*b-4*a*c;printf(“方程的解是:n”);if(disc>0){great_than_zero(a,b);printf(“X1=%5.2ftX2=%5.2fnn”,x1,x2);} else if(disc==0){ zero(a,b);printf(“X1=%5.2ftX2=%5.2fnn”,x1,x2);}

else { small_than_zero(a,b,c);printf(“X1=%5.2f+%5.2fitX2=%5.2f-%2.2fin”,p,q,p,q);} }

8.3素数

#include“math.h” main(){int number;scanf(“%d”,&number);if(prime(number))

printf(“yes”);else

printf(“no”);} int prime(number)int number;{int flag=1,n;for(n=2;n

if(number%n==0)

flag=0;return(flag);}

8.4 #define N 3 int array[N][N];convert(array)int array[3][3];{ int i,j,t;

for(i=0;i for(j=i+1;j { t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;} } main(){

int i,j;printf(“输入数组元素:n”);for(i=0;i for(j=0;j

scanf(“%d”,&array[i][j];printf(“n数组是:n”);for(i=0;i { for(j=0;j

printf(“%5d”,array[i][j]);

printf(“n”);}

convert(array);printf(“转置数组是:n”);for(i=0;i { for(j=0;j

printf(“%5d”,array[i][j]);

printf(“n”);} }

8.5 main(){ char str[100];

printf(“输入字符串:n”);

scanf(“%s”,str);

inverse(str);

printf(“转换后的字符串是: %sn”,str);}

inverse(str)char str[];{ char t;int i,j;for(i=0,j=strlen(str);i { t=str[i];str[i]=str[i-1];str[i-1]=t;} }

8.6 char concatenate(string1,string2,string);char string1[],string2[],string[];{ int i,j;for(i=0;string1[i]!='';i++)

string[i]=string1[i];for(j=0;string2[j]!='';j++)string[i+j]=string2[j];string[i+j]='';} main(){ char s1[100],s2[100],s[100];printf(“n输入字符串1:n”);scanf(“%s”,s1);printf(“输入字符串2:n”);scanf(“%s”,s2);concatenate(s1,s2,s);printf(“连接后的字符串:%sn”,s);}

8.8 main(){ char str[80];printf(“请输入含有四个数字的字符串:n”);scanf(“%s”,str);insert(str);}

insert(str)

char str[];{ int i;for(i=strlen(str);i>0;i--){ str[2*i]=str[i];

str[2*i-1]=' ';

} printf(“n 结果是:n

%s”,str);}

8.9 #include“math.h” int alph,digit,space,others;main(){char text[80];gets(text);alph=0,digit=0,space=0,others=0;count(text);printf(“nalph=%d,digit=%d,space=%d,others=%dn”,alph,digit,space,others);} count(str)char str[];{int i;for(i=0;str[i]!='';i++)

if((str[i]>='a'&&str[i]='A'&&str[i]

alph++;

else if(str[i]>='0'&&str[i]

digit++;

else if(strcmp(str[i],' ')==0)

space++;

else

others++;}

8.10 int alphabetic(c);char c;{

if((c>='a' && c='A' && c

else

return(0);}

int longest(string)char string[];{ int len=0,i,length=0,flag=1,place,point;for(i=0;i

if(alphabctic(string[i]))if(flag){ point=i;flag=0;} else

len++;else { flag=1;

if len>length)

{length=len;

place=point;

len=0;

} }

return(place);

} main(){ int i;char line[100];

printf(“输入一行文本n”);gets(line);printf(“n最长的单词是:”);for(i=longest(line);alphabctic(line[i]);i++)printf(“%c”,line[i];printf(“n”);}

8.11

#include

#define N 10

char str[N];main(){ int i,flag;for(flag=1;flag==1;){ printf(“n输入字符串,长度为10:n”);scanf(“%s”,&str);if(strlen(str)>N)printf(“超过长度,请重输!”);else flag=0;} sort(str);printf(“n 排序结果:”);for(i=0;i printf(“%c”,str[i]);}

sort(str)char str[N];{ int i,j;char t;for(j=1;j for(i=0;(i if(str[i]>str[i+1])

{ t=str[i];

str[i]=str[i+1];

str[i+1]=t;

} } 8.12 #include

#include float solut(a,b,c,d)float a,b,c,d;

{float x=1,x0,f,f1;do

{x0=x;

f=((a*x0+b)*x0+c)*x0+d;

f1=(3*a*x0+2*b)*x0+c;

x=x0-f/f1;

} while(fabs(x-x0)>=1e-5);return(x);} main(){float a,b,c,d;scanf(“%f,%f,%f,%f”,&a,&b,&c,&d);printf(“x=%10.7fn”,solut(a,b,c,d));} 8.13 #include main(){int x,n;float p();scanf(“%d,%d”,&n,&x);printf(“P%d(%d)=%10.2fn”,n,x,p(n,x));} float p(tn,tx)int tn,tx;{if(tn==0)

return(1);else if(tn==1)

return(tx);else

return(((2*tn-1)*tx*p((tn-1),tx)-(tn-1)*p((tn-2),tx))/tn);} 8.14 #include “stdio.h”

#define N 10 #define M 5 float score[N][M];float a_stu[N],a_cor[M];main(){int i,j,r,c;float h;

float s_diff();float highest();r=0;c=1;input_stu();avr_stu();avr_cor();printf(“n number cla 1 2 3 4 5 avr”);for(i=0;i

{printf(“nNO%2d”,i+1);

for(j=0;j

printf(“%8.2f”,score[i][j]);

printf(“%8.2f”,a_stu[i]);

} printf(“nclaavr”);for(j=0;j

printf(“%8.2f”,a_cor[j]);h=highest(&r,&c);printf(“nn%8.2f

%d

%dn”,h,r,c);printf(“n

%8.2fn”,s_diff());} input_stu(){int i,j;float x;for(i=0;i

{for(j=0;j

{scanf(“%f”,&x);

score[i][j]=x;

}

} } avr_stu(){int i,j;float s;for(i=0;i

{for(j=0,s=0;j

s+=score[i][j];

a_stu[i]=s/5.0;

} } avr_cor(){int i,j;float s;for(j=0;j

{for(i=0,s=0;i

s+=score[i][j];

a_cor[j]=s/(float)N;

} } float highest(r,c)int *r,*c;{float high;int i,j;

high=score[0][0];for(i=0;i

for(j=0;j

if(score[i][j]>high)

{high=score[i][j];

*r=i+1;

*c=j+1;

} return(high);} float s_diff(){int i,j;float sumx=0.0,sumxn=0.0;for(i=0;i

{sumx+=a_stu[i]*a_stu[i];

sumxn+=a_stu[i];

} return(sumx/N-(sumxn/N)*(sumxn/N));} 8.15

#include #define N 10 void input_e(num,name)int num[];char name[N][8];{int i;for(i=0;i

{scanf(“%d”,&num[i]);

gets(name[i]);

} } void sort(num,name)int num[];char name[N][8];{int i,j,min,temp1;char temp2[8];for(i=0;i

{min=i;

for(j=i;j

if(num[min]>num[j])min=j;

temp1=num[i];

num[i]=num[min];

num[min]=temp1;

strcpy(temp2,name[i]);

strcpy(name[i],name[min]);

strcpy(name[min],temp2);

} for(i=0;i

printf(“n%5d%10s”,num[i],name[i]);

} void search(n,num,name)int n,num[];char name[N][8];{int top,bott,min,loca;loca=0;top=0;bott=N-1;if((nnum[N-1]))

loca=-1;while((loca==0)&&(top

{min=(bott+top)/2;

if(n==num[min])

{loca=min;

printf(“number=%d,name=%sn”,n,name[loca]);

}

else if(n

bott=min-1;

else

top=min+1;

} if(loca==0||loca==-1)

printf(“number=%d is not in tablen”,n);} main(){int num[N],number,flag,c,n;char name[N][8];input_e(num,name);sort(num,name);for(flag=1;flag;)

{scanf(“%d”,&number);

search(number,num,name);

printf(“continue?Y/N!”);

c=getchar();

if(c=='N'||c=='n')

flag=0;

} }

8.16 #include #define MAX 1000 main(){ int c,i,flag,flag1;

char t[MAX];

i=0;flag=0;flag1=1;printf(“n输入十六进制数:”);while((c=getchar())!=''&&i { if c>='0' && c='a'&&c='A'&&c

{flag=1;

t[i++]=c;

}

else if(flag){ t[i]='';printf(“n 十进制数%dn”,htoi(t));printf(“继续吗?”);c=getchar();if(c=='N'||c=='n')

flag1=0;else {flag=0;

i=0;

printf(“n 输入十六进制数:”);} } } } htoi(s)char s[];{ int i,n;

n=0;

for(i=0;s[i]!='';i++)

{if(s[i]>='0'&&s[i]

if(s[i]>='a'&&s[i]

if(s[i]>='A'&&s[i]

}

return(n);}

8.17 #include

void counvert(n)int n;{ int i;if((i=n/10)!=0)

convert(i);putchar(n%10+'0');}

main(){ int number;

printf(“n 输入整数:”);

scanf(“%d”,&number);

printf(“n 输出是: ”);

if(number

{ putchar('-');

number=-number;

} convert(number);}

8.18 main(){

int year,month,day;

int days;

printf(“n 请输入日期(年,月,日)n”);

scanf(“%d,%d,%d”,&year,&month,&day);

printf(“n %d年%d月%d日”,year,month,day);

days=sum_day(month,day);

if(leap(year)&&month>=3)

days=days+1;

printf(“是该年的%d天.n”,days);}

static int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}

int(sum_day(month,day)int month,day;

{

int i;

for(i=1;i

day+=day_tab[i];

return(day);

}

int leap(year)int year;

{

int leap;

leap=year%4==0&&year%100!=0||year%400==0;

return(leap);

第九章 编译预处理 9.1 #define SWAP(a,b)t=b;b=a;a=t main(){ int a,b,t;printf(“请输入两个整数 a,b:”);scanf(“%d,%d”,&a,&b);SWAP(a,b);printf(“交换结果为:a=%d,b=%dn”,a,b);}

9.2 #define SURPLUS(a,b)((a)%(b))main(){ int a,b;printf(“ 请输入两个整数 a,b:”);scanf(“%d,%d”,&a,&b);printf(“a,b相除的余数为:%dn”,SURPLUS(a,b));

}

9.3 #include #defin S(a,b,c)((a+b+c)/2)#define AREA(a,b,c)(sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(s(a,b,c)-c)))main(){ float a,b,c;

printf(“请输入三角形的三条边:”);

scanf(“%f,%f,%f”,&a,&b,&c);

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

printf(“其面积为:%8.2f.n”,AREA(a,b,c));

else

printf(“不能构成三角形!”);}

9.4 #define LEAP_YEAR(y)(y%4==0)&&(y%100!=0)||(y%400==0)main(){ int year;printf(“n请输入某一年:”);scanf(“%d”,&year);if(LEAP_YEAR(year))

printf(“%d 是闰年.n”,year);else

printf(“%d 不是闰年.n”,year);}

9.5解:展开后: printf(“&#118alue=%formatt”,x);printf(“&#118alue=%formatt”,x);putchar('n');printf(“&#118alue=%formatt”);printf(“&#118alue=%formatt”,x2);putchar('n');输出结果: &#118alue=5.000000ormat &#118alue=5.000000ormat &#118alue=3.000000ormat &#118alue=8.000000ormat

9.8 main()

{

int a,b,c;

printf(“请输入三个整数:”);

scanf(“%d,%d,%d”,&a,&b,&c);

printf(“三个之中最大值为:%dn”,max(a,b,c));

}

max(x,y,z)int x,y,z;

{

int t;

t=(x>y? x:y);

return(t>z? t:z);

}

9.10 #include #define MAX 80 #define CHANGE 1 main(){ char str[MAX];int i;printf(“请输入文本行:n”);scanf(“%s”,str);

#if(CHANGE)

{

for(i=0;i {

if(str[i]!=''

if(str[i]>='a' && str[i]='A'&&str[i]

str[i]+=1;

else if(str[i]=='z' || str[i]=='Z')

str[i]-=25;

} } #endif printf(“输出电码为:n%s”,str);}

第十章

指针 10.1 main(){int n1,n2,n3;int *p1,*p2,*p3;scanf(“%d,%d,%d”,&n1,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if(n1>n2)swap(p1,p2);if(n1>n3)swap(p1,p3);if(n2>n3)swap(p2,p3);printf(“%d,%d,%dn”,n1,n2,n3);} swap(p1,p2)int *p1,*p2;{int p;p=*p1;*p1=*p2;*p2=p;} 10.2 main(){char *str1[20],*str2[20],*str3[20];char swap();scanf(“%s”,str1);scanf(“%s”,str2);scanf(“%s”,str3);if(strcmp(str1,str2)>0)swap(str1,str2);if(strcmp(str1,str3)>0)swap(str1,str3);if(strcmp(str2,str3)>0)swap(str2,str3);

printf(“%sn%sn%sn”,str1,str2,str3);} char swap(p1,p2)char *p1,*p2;{char *p[20];strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);} 10.3 main(){int number[10];input(number);max_min_&#118alue(number);output(number);} input(number)int number[10];{int i;for(i=0;i

scanf(“%d”,&number[i]);} max_min_&#118alue(number)int number[10];{int *max,*min;int *p,*end;end=number+10;max=min=number;for(p=number+1;p

if(*p>*max)max=p;

else if(*p

printf(“%d,”,*p);printf(“%dn”,*p);

} 10.4 main(){int number[20],n,m,i;scanf(“%d”,&n);scanf(“%d”,&m);for(i=0;i

scanf(“%d”,&number[i]);move(number,n,m);for(i=0;i

printf(“%8d”,number[i]);} move(array,n,m)int array[20],n,m;{int *p,end;end=*(array+n-1);for(p=array+n-1;p>array;p--)

*p=*(p-1);*array=end;m--;if(m>0)move(array,n,m);} 10.5 #define nmax 50 main(){int i,k,m,n,num[nmax],*p;scanf(“%d”,&n);p=num;for(i=0;i

*(p+i)=i+1;i=k=m=0;while(m

{if(*(p+i)!=0)k++;

if(k==3)

{*(p+i)=0;

k=0;

m++;

}

i++;

if(i==n)i=0;

} while(*p==0)p++;printf(“%d”,*p);} 10.6

main(){int len;char *str[20];scanf(“%s”,str);len=length(str);printf(“nlen=%dn”,len);} length(p)char *p;{int n=0;while(*p!='')

{n++;p++;} return(n);} 10.7 main(){int m;char *str1[20],*str2[20];scanf(“%s”,str1);scanf(“%d”,&m);if(strlen(str1)

printf(“error”);else

{copystr(str1,str2,m);

printf(“%s”,str2);

} } copystr(p1,p2,m)char *p1,*p2;int m;{int n=0;while(n

{n++;p1++;} while(*p1!='')

{*p2=*p1;

p1++;

p2++;

} *p2='';} 10.8 #include“stdio.h” main(){int cle=0,sle=0,di=0,wsp=0,ot=0,i;

char *p,s[20];for(i=0;i

{if(*p>='a'&&*p

++sle;

else if(*p>='A'&&*p

++cle;

else if(*p==' ')

++wsp;

else if(*p>='0'&&*p

++di;

else

++ot;

p++;

} printf(“sle=%d,cle=%d,wsp=%d,di=%d,ot=%dn”,sle,cle,wsp,di,ot);} 10.9 main(){int a[3][3],*p,i;for(i=0;i

scanf(“%d,%d,%d”,a[i][0],a[i][1],a[i][2]);p=a;move(p);for(i=0;i

printf(“%d %d %dn”,a[i][0],a[i][1],a[i][2]);} move(pointer)int *pointer;{int i,j,t;for(i=0;i

{t=*(pointer+3*i+j);

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=t;

} }

10.10 main()

{int a[5][5],*p,i,j;for(i=0;i

scanf(“%d”,&a[i][j]);p=a;change(p);for(i=0;i

{printf(“n”);

for(j=0;j

printf(“%8d”,a[i][j]);

} } change(p)int *p;{int i,j,change;int *pmax,*pmin;pmax=p;pmin=p;for(i=0;i

for(j=0;j

{if(*pmax

if(*pmin>*(p+5*i+j))pmin=p+5*i+j;

} change=*(p+12);*(p+12)=*pmax;*pmax=change;change=*p;*p=*pmin;*pmin=change;pmin=p+1;for(i=0;i

for(j=0;j

if(((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;change=*(p+4);*(p+4)=*pmin;*pmin=change;pmin=p+1;for(i=0;i

for(j=0;j

if(((p+5*i+j)!=(p+4))&&((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))

pmin=p+5*i+j;change=*(p+20);*(p+20)=*pmin;*pmin=change;

pmin=p+1;for(i=0;i

for(j=0;j

if(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20))

&&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;change=*(p+24);*(p+24)=*pmin;*pmin=change;}

10.11 main(){int i;char *p,str[10][10];for(i=0;i

scanf(“%s”,str[i]);p=str;sort(p);for(i=0;i

printf(“%sn”,str[i]);} sort(p)char *p;{int i,j;char s[10],*smax,*smin;for(i=0;i

{smax=p+10*i;

for(j=i+1;j

{smin=p+10*j;

if(strcmp(smax,smin)>0)

{strcpy(s,smin);

strcpy(smin,smax);

strcpy(smax,s);

}

}

} }

10.12 #define MAX 20 main(){int i;char *pstr[10],str[10][MAX];for(i=0;i

pstr[i]=str[i];for(i=0;i

scanf(“%s”,pstr[i]);sort(pstr);for(i=0;i

printf(“%sn”,pstr[i]);} sort(pstr)char *pstr[10];{int i,j;char *p;for(i=0;i

{for(j=i+1;j

{if(strcmp(*(pstr+i),*(pstr+j))>0)

{p=*(pstr+i);

*(pstr+i)=*(pstr+j);

*(pstr+j)=p;

}

}

} }

10.13 #include“math.h” main(){int n=20;float a,b,a1,b1,a2,b2,c,(*p)(),jiff();scanf(“%f,%f”,&a,&b);scanf(“%f,%f”,&a1,&b1);scanf(“%f,%f”,&a2,&b2);p=sin;c=jiff(a,b,n,p);printf(“sin=%fn”,c);p=cos;c=jiff(a1,b1,n,p);printf(“cos=%fn”,c);p=exp;c=jiff(a2,b2,n,p);printf(“exp=%fn”,c);} float jiff(a,b,n,p)float a,b,(*p)();int n;{int i;

float x,f,h,area;h=(b-a)/n;x=a;area=0;for(i=1;i

{x=x+h;

area=area+(*p)(x)*h;

} return(area);}

10.14 main(){int i,n,num[20];char *p;scanf(“%d”,&n);for(i=0;i

scanf(“%d”,&num[i]);p=num;sort(p,n);for(i=0;i

printf(“%8d”,num[i]);} sort(p,m)char *p;int m;{int i;char change,*p1,*p2;for(i=0;i

{p1=p+i;

p2=p+(m-1-i);

change=*p1;

*p1=*p2;

*p2=change;

} }

10.15 main(){int i,j,*pnum,num[4];float score[4][5],aver[4],*psco,*pave;char course[5][10],*pcou;pcou=course[0];for(i=0;i

scanf(“%s”,pcou+10*i);printf(“number”);for(i=0;i

C语言课后习题答案

C语言课后习题答案-第四版- 第一章5、请参照本章例题,编写一个C语言程序,输出以下信息: **************************** V e r y G o o d ! **************************** #incl......

C语言程序设计(谭浩强)第四版_课后答案精讲

第一章 程序设计和C语言 【第15页】 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("*******......

谭浩强C语言第八章答案.doc

8.1 # include int yueshu(int m,int n); int beishu(int m,int n); int main() { int a,b,Y,B; printf("输入两个数字:\n"); scanf("%d%d",&a,&b); Y=yueshu(a,b); B=b......

C语言课后习题

习题第三章#include #include int main() {int d,p;double r,a,m;scanf("%d %d %lf",&d,&p,&r);a=(p/(p-d*r));m=log(a)/log(1+r);if(p>0&&d>0){if(dprintf("%.1f",m)......

c语言课后习题

C语言程序设计实验报告学院 数学与信息技术班级学号 11130730姓名指导教师 实验1 简单程序设计1. 实验目的(1) 熟悉C语言开发环境并掌握在该环境下如何编辑、编译、连接和运行......

《C语言设计谭浩强第三版的课后习题答案.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
C语言设计谭浩强第三版的课后习题答案
点击下载文档
相关专题 c程序谭浩强习题答案 设计 课后 习题 c程序谭浩强习题答案 设计 课后 习题
[其他范文]相关推荐
[其他范文]热门文章
下载全文