C语言程序设计(谭浩强)第四版-课后答案_第1页
C语言程序设计(谭浩强)第四版-课后答案_第2页
C语言程序设计(谭浩强)第四版-课后答案_第3页
C语言程序设计(谭浩强)第四版-课后答案_第4页
C语言程序设计(谭浩强)第四版-课后答案_第5页
已阅读5页,还剩166页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c语言程序设计(谭浩强)第四版.课后答案

第一章程序设计和C语言【第15页】

1-5

ttinclude<stdio.h>

intmain()

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

printfCVeryGood!\n\n〃);

printf(〃**************************\n〃);

return0;

)

1-6

#include<stdio.h>

intmain()

{inta,b,c,max;

printf("pleaseinputa,b,c:\n〃);

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

max二a;

if(max<b)

max=b;

if(max<c)

max=c;

printfC'Thelargestnumberis%d\n〃,max);

return0;

第2章算法——程序的灵魂【第36页】暂无答案

第3章最简单的C程序设计——顺序程序设计【第82页】

3-1

^include<stdio.h>

ttinclude<math.h>

intmain()

{floatp,r,n;

r=0.1;

n=10;

p=pow(l+r,n);

printf(〃p=%f\n〃,p);

return0;}

3-2-1

#include<stdio.h>

#include<math.h>

intmain()

{floatr5,r3,r2,rl,rO,p,pl,p2,p3,p4,p5;

p=1000;

r5=0.0585;

r3=0.054;

r2=0.0468;

rl=0.0414;

rO=O.0072;

pl=p*((l+r5)*5);//—•次存5年期

p2=p*(l+2*r2)*(l+3*r3);〃先存2年期,到期后将本息再存3年期

p3=p*(l+3*r3)*(l+2*r2);〃先存3年期,到期后将本息再存2年期

p4=p*pow(l+rl,5);〃存1年期,到期后将本息存再存1年期,连续存5次

p5=p*pow(l+r0/4,4*5);〃存活期存款。活期利息每一季度结算次

printf("pl=%f\n",pl);〃输出按第1方案得到的本息和

printf("p2=%f\n",p2);//输出按第2方案得到的本息和

printf("p3=%f\n”,p3);//输出按第3方案得到的本息和

printf("p4=%f\n”,p4);//输出按第4方案得到的本息和

printf(,,p5=%f\n/,,p5);//输出按第5方案得到的本息和

return0;

}

3-2-2

itinclude<stdio.h>

Sinclude<math.h>

intmain()

{doubler5,r3,r2,rl,rO,p,pl,p2,p3,p4,p5;

p=1000;

r5=0.0585;

r3=0.054;

r2=0.0468;

rl=0.0414;

rO=O.0072;

pl=p*((l+r5)*5);//—•次存5年期

p2=p*(l+2*r2)*(l+3*r3);〃先存2年期,到期后将本息再存3年期

p3=p*(l+3*r3)*(l+2*r2);〃先存3年期,到期后将本息再存2年期

p4=p*pow(l+rl,5);〃存1年期,到期后将本息存再存1年期,连续存5次

p5=p*pow(l+r0/4,4*5);〃存活期存款。活期利息每一季度结算次

printf(/zpl=%f\n//,pl);//输出按第1方案得到的本息和printf("p2=%f\n",p2);〃

输出按第2方案得到的本息和

printf("p3=%f\n”,p3);〃输出按第3方案得到的木息和

printf(,/p4=%f\n,/,p4);//输出按第4方案得到的本息和

printfCp5=%f\n,/,p5);//输出按第5方案得到的本息和

return0;

)

3-2-3

#include<stdio.h>

#include<math.h>

intmain()

{floatr5,r3,r2,rl,rO,p,pl,p2,p3,p4,p5;

p=1000;

r5=0.0585;

r3=0.054;

r2=0.0468;

rl=0.0414;

r0=0.0072;

pl=p*((l+r5)*5);//一次存5年期

p2=p*(l+2*r2)*(l+3*r3);〃先存2年期,到期后将本息再存3年期

p3=p*(l+3*r3)*(l+2*r2);〃先存3年期,到期后将本息再存2年期

p4=p*pow(l+rl,5);〃存1年期,到期后将本息存再存1年期,连续存5次

p5=p*pow(l+r0/4,4*5);〃存活期存款。活期利息每一季度结算一次

printfCpl=%10.2f\n",pl);//输出按第1方案得到的本息和

printf("p2=%10.2f\n”,p2);〃输出按第2方案得到的本息和

printf("p3=%10.2f\n",p3);〃输出按第3方案得到的本息和

printfCp4=%10.2f\n/,,p4);//输出按第4方案得到的本息和

printf("p5=M0.2f\n”,p5);//输出按第5方案得到的本息和

return0;

)

3-3.

ttinclude<stdio.h>

itinclude<math.h>

intmain()

{floatd=300000,p=6000,r=0.01,m;

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

printf(zzm=%6.2f\n",m);

return0;}

3-4

#include<stdio.h>

intmain()

{intcl,c2;

cl=197;

c2=198;

printf(,zcl=%c,c2=%c\n,z,cl,c2);

printf(〃cl=%d,c2=%d\n,z,cl,c2);

return0;

)

3-5

#include<stdio.h>

intmain()

{inta,b;

floatx,y;

charcl,c2;

scanfC,a=%db=%d〃,&a,&b);

scanf(〃%f%e,z,&x,&y);

scanf(〃%c%c”,&cl,&c2);

printf(,,a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c\n”,a,b,x,y,cl,c2);return0;

)

3-6

ftinclude<stdio.h>

intmain()

{charcl='C,,c2=fh',c3=fi,c4='n,c5='a';

cl=cl+4;

c2=c2+4;

c3=c3+4;

c4=c4+4;

c5=c5+4;

printf(z,passworis%c%c%c%c%c\nz,,cl,c2,c3,c4,c5);return0;

}3-7

^include<stdio.h>

intmain()

{floath,r,1,s,sq,vq,vz;

floatpi=3.141526;

printf(〃请输入圆半径r,圆柱高h:〃);

scanfC7%f,%f&r,&h);〃要求输入圆半径r和圆柱高hl=2*pi*r;//计算圆周长1

s=r*r*pi;〃计算圆面积s

sq=4*pi*r*r;〃计算圆球表面积sq

vq=3.0/4.0*pi*r*r*r;〃计算圆球体积vq

vz=pi*r*r*h;〃计算圆柱体积vz

printf(〃圆周长为:1=%6.2f\nz,,1);

printf("圆面积为:s=%6.2f\n〃,s);

printf(〃圆球表面积为:sq=%6.2f\n〃,sq);

printf(〃圆球体积为:v=%6.2f\n〃,vq);

printf(“圆柱体积为:vz=%6.2f\n〃,vz);

return0;

3-8-1

#include<stdio.h>

intmain()

intcl,c2;〃整型定义

printf(〃请输入两个整数cl,c2:〃);

scanf("%d,%d〃,&cl,&c2);

printf(〃按字符输出结果:\n〃);

printf("%c,%c\nz,,cl,c2);

printf(〃按ASCII码输出结果为:\n");

printf("%d,%d\n,/,cl,c2);

return0;

3-8-2

#include<stdio.h>

intmainO

charcl,c2;〃定义字符型变量inti1,i2;〃定义整型变量

printf(〃请输入两个字符cl,c2:〃);

scanf("%c,%c”,&cl,&c2);

il=cl;〃赋值给整型变量i2=c2;printf("按字符输出结果:\n〃);

printf(,z%c,%c\n,z,il,i2);

printf(〃按整数输出结果:\n");printf(〃%d,%d\n〃,cl,c2);

return0;

3-8-3

#include<stdio.h>

intmainO

(

charcl,c2;intil,i2;printf("请输入两个整数il,i2:");

scanfC%d,%d〃,&il,&i2);

cl=il;c2=i2;

printf("按字符输出结果果n〃);printf(〃%c,%c\n〃,cl,c2);

printf("按整数输出结果果n");printf(〃%d,%d\n”,cl,c2);

return0;

}

3-8

ftinclude<stdio.h>

intmainO

(

charcl,c2;

printf(〃请输入两个字符cl,c2:z,);cl=getchar();

c2=getchar();

printf(〃用putchar语句输出结果为:〃);putchar(cl);

putchar(c2);

printf(〃\n〃);

z,,,

printf(〃用printf语句输出结果为为);printf(%c%c\n,cl,c2);

return0;

)

第4章选择结构程序设计【第111页】4-4-1

Sinclude<stdio.h>〃定义为字符型〃定义为整型〃将整数赋值给字符变量int

main()

(

inta,b,c;

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

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

if(a<b)

if(b<c)

printf(〃max=%d\n〃,c);

else

printf(〃max=%d\n〃,b);

elseif(a<c)

printf("max=%d\n〃,c);

else

printf(〃max=%d\n〃,a);

return0;

)

4-4-2

#include<stdio.h>

intmainO

{inta,b,c,temp,max;

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

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

temp=(a>b)?a:b;/*将a和b中的大者存入temp中*/

max二(temp>c)?temp:c;/*将a和b中的大者与c比较,取最大者*/printf(〃三个整数

的最大数是%d\n〃,max);

return0;

)

4-5-2

ttinclude<stdio.h>

^include<math.h>

#defineM1000

intmainO

(

inti,k;

printf(〃请输入,个小于%d的整数i:〃,M);

scanf;

while(i>M)

{printf(〃输入的数不符合要求,请重新输入一个小于%d的整数i:〃,M);

scanf(,z%d,z,&i);

}k=sqrt(i);

printf(〃%d的平方根的整数部分是:%d\n",i,k);

return0;

4-5

#include<stdio.h>

#include<math.h>

#defineM1000

intmain()

(

inti,k;

printf(〃请输入一个小于%d的整数i:〃,M);

scanf&i);

if(i>M)

{printf(〃输入的数不符合要求,请重新输入一个小于%d的整数i:〃,M);

scanf&i);

)

k=sqrt(i);

printfC%d的平方根的整数部分是:%d\n〃,i,k);

return0;

)

4-6.

ttinclude<stdio.h>

intmain()

{intx,y;

printf(〃输入x:〃);

scanf&x);

if(x<l)/*x<l*/

{y=x;

printf(〃x=%3d,y二x=%d\n〃,x,y);

)

elseif(x<10)/*l=<x<10*/

{y=2*x-l;

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

)

else/*x>=10*/

{y=3*x-ll;

printf(〃x=%d,y=3*xTl或d'n”,x,y);

)

return0;}

4-7-1

#include<stdio.h>

intmain()

{

intx,y;

printf(z,enterx:〃);

scanf("%d〃,&x);

y二T;

if(x!=O)

if(x>0)

y=l;

else

y=0;

printf(/zx=%d,y=%d\nz,,x,y);return0;

)

4-7-2

#include<stdio.h>

intmain()

(

intx,y;

printf(""pleaseenterx:〃);scanf(〃%d〃,&x);

y=0;

if(x>=0)

if(x>0)y=l;

elsey=一1;

printf(〃x=%d,y=%d\n〃,x,y);return0;

)

4-8

ftinclude<stdio.h>

intmain()

{floatscore;

chargrade;

printf(〃请输入学生成绩:〃);scanf(〃%f〃,fiscore);

while(score>100|score<0){printf(z,\n输入有误,请重输”);

scanf(〃%f”,&score);

)

switch((int)(score/10))

{case10:

case9:grade='A';break;

case8:grade='B';break;

case7:grade='C';break;

case6:grade='D';break;

case5:

case4:

case3:

case2:

case1:

case0:grade='E';

)

printf("成绩是%5.If,相应的等级是%c\n〃,score,grade);

return0;

)

4-9

#include<stdio.h>

ttinclude<math.h>

intmainO

intnum,indiv,ten,hundred,thousand,tenthousand,place;〃分别代表个位,十位,

百位,千位,万位和位数

printf(〃请输入一个整数(0-99999):〃);

scanf(〃%d〃,&num);

if(num>9999)

place=5;

elseif(num>999)

place=4;

elseif(num>99)

place=3;

elseif(num>9)

place=2;

elseplace=l;

printf(〃位数:%d\n”,place);

printf(〃每位数字为:〃);

ten_thousand=num/10000;

thousand=(int)(num-ten_thousand*l0000)/1000;

hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-

ten_thousand*10000-thousand*1000-hundred*100)/10;

indiv:=(int)(num-tenthousand*10000-thousand*1000-hundred*100-ten*10);

switch(place)

{case5:printf(z,%d,%d,%d,%d,%d,z,ten_thousand,thousand,hundred,ten,indiv);

printf("\n反序数字为:〃);

printf(/,%d%d%d%d%d\n/,,indiv,ten,hundred,thousand,ten_thousand);break;

case4:printf(〃%d,%d,%d,%d〃,thousand,hundred,ten,indiv);

printf(〃\n反序数字为:");

printfCz%d%d%d%d\nz,,indiv,ten,hundred,thousand);

break;

case3:printf(,z%d,%d,%d,z,hundred,ten,indiv);

printfC\n反序数字为:");

printf(〃%d%d%d\n〃,indiv,ten,hundred);

break;

case2:printf(/z%d,%d/z,ten,indiv);

printf(〃\n反序数字为:〃);

printf(〃%d%d\n〃,indiv,ten);

break;

case1:printfindiv);

printf(〃\n反序数字为:");

printf(〃%d\n〃,indiv);

break;

)

return0;

)

4-10-1

#include<stdio.h>

intmain()

inti;

doublebonus,bonl,bon2,bon4,bon6,bonlO;

bonl=100000*0.1;

bon2=bonl+100000*0.075;

bon4=bon2+100000*0.05;

bon6=bon4+100000*0.03;

bonl0=bon6+400000*0.015;

printf(〃请输入利润i:〃);

scanf(,z%d/z,&i);

if(i<=100000)

bonus=i*0.1;

elseif(i<=200000)bonus=bonl+(i-100000)*0.075;

elseif(i<=400000)

bonus=bon2+(i-200000)*0.05;

elseif(i<=600000)

bonus=bon4+(i-400000)*0.03;

elseif(i<=1000000)

bonus=bon6+(i-600000)*0.015;

else

bonus=bonl0+(i-1000000)*0.01;printf(〃奖金是:%10.2f\nz,,bonus);

return0;

4-10-2

#include<stdio.h>

intmain()

(

inti;

doublebonus,bonl,bon2,bon4,bon6,bonlO;intbranch;

bonl=100000*0.1;

bon2=bonl+100000*0.075;

bon4=bon2+200000*0.05;

bon6=bon4+200000*0.03;

bon10=bon6+400000*0.015;

「14玳六〃请输入利润1:〃);

scanf(级d〃,&i);

branch=i/100000;

if(branch>10)branch=10;

switch(branch)

{case0:bonus=i*0.1;break;

case1:bonus=bonl+(i-100000)*0.075;break;case2:

case3:bonus=bon2+(i-200000)*0.05;break;case4:

case5:bonus=bon4+(i-400000)*0.03;break;case6:

case7:

case8:

case9:bonus=bon6+(i-600000)*0.015;break;case10:bonus=bonlO+(i-

1000000)*0.01;}

printf("奖金是%10.2f\n,z,bonus);return0;

)

4-11

ttinclude<stdio.h>

intmain()

{intt,a,b,c,d;

printf(〃请输入四个数:〃);

scanf(,z%d,%d,%d,%d〃,&a,&b,&c,&d);

printf(z,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〃);

printf(〃%d%d%d%d\n〃,a,b,c,d);

return0;

)

4-12

^include<stdio.h>

intmain()

(

inth=10;

floatxl=2,yl=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,dl,d2,d3,d4;printf(z/

请输入一个点(x,y);

scanf(〃%f,%f",&x,&y);

dl=(x-x4)*(x-x4)+(y-y4)*(y-y4);/*求该点到各中心点距离*/d2=(x-xl)*(x-

xl)+(y-yl)*(y-yl);

d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);

d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);

if(dl>l&&d2>l&&d3>l&&d4>l)h=0;/*判断该点是否在塔外*/printf(〃该点高

度为%d\n,z,h);return0;

)

第5章循环结构程序设计【第140页】

5-2

#include<stdio.h>

ttinclude<math.h>//程序中用到数学函数fabs,应包含头文件math,nintmain()

intsignal,count=0;//sign用来表示数值的符号,count用来统计循环次数double

pi=0.0,n=1.0,term=1.0;//pi开始代表多项式的值,最后代表兀的值,n代表分母,

term代表当前项的值

while(fabs(term)>=le-8)//检查当前项term的绝对值是否大于或等于10的(-6)次

(

pi=pi+term;//把当前项term累加到pi中

n=n+2;〃n+2是下一项的分母

sign=-sign;〃sign代表符号,下一项的符号与上一项符号相反term=sign/n;//求

出下一项的值term

count++;//count累加1

)

pi=pi*4;//多项式的和pi乘以4,才是n的近似值printfCzpi=%10.8f\n,z,pi);//

输出n的近似值

printf(/zcount=%d\n,z,count);//输出循环次数

return0;

)

5-3

#include<stdio.h>

intmain()

{

intp,r,n,m,temp;

printf(〃请输入两个正整数n,m:〃);

scanf(z,%d,%d,〃,&n,&m);

if(n<m)

temp=n;

n=m;

m=temp;

}

p=n*m;

while(m!=0)

(

r=n%m;n=m;

m=r;

)

printf(〃它们的最大公约数为册d\n〃,n);

printf(〃它们的最小公约数为:%d\n〃,p/n);

return0;

)

5-4

^include<stdio.h>

intmain()

(

charc;

intletters、。,space=O,digit=O,other=0;

printf(〃请输入一行字符:\n〃);

while((c=getchar())!='\n)

if(c>二'a'||c>='A'&&c<=Z*)

letters++;

elseif(c='')

space++;

elseif(c>='O'&&c<=,9))

digit++;

else

other++;

}

printf(〃字母数:%d\n空格数:%d\n数字数:%d\n其它字符

数:%八。〃,letters,space,digit,other);return0;

)

5-5

Sinclude<stdio.h>

intmain()

(

inta,n,i=l,sn=0,tn=O;

printf(〃a,n二:〃);

scanf(/z%d,%d",&a,&n);

while(i<=n)

tn二tn+a;/*赋值后的tn为i个a组成数的值*/

sn=sn+tn;/*赋值后的sn为多项式前i项之和*/

a=a*10;

++i;

)

printf(/za+aa+aaa+...二%d\n〃,sn);return0;

)

5-6

tfinclude<stdio.h>

intmain()

{doubles=0,t=l;

intn;

for(n=l;n<=20;n++)

(

t=t*n;

s=s+t;

)

printf(〃1!+2!+...+20!=%22.15e\n〃,s);

return0;

)

5-7

#include<stdio.h>

intmain()

intnl=100,n2=50,n3=10;

doublek,sl=0,s2=0,s3=0;

for(k=l;k<=nl;k++)/*计算1到100的和*/{sl=sl+k;}

for(k=l;k<=n2;k++)/*计算1到50各数的平方和*/{s2=s2+k*k;}

for(k=l;k<=n3;k++)/*计算1到10的各倒数和*/{s3=s3+l/k;}

printfCsum=%15.6f\n”,sl+s2+s3);

return0;

)

5-8

#include<stdio.h>

intmain()

(

inti,j,k,n;

printf(z,parcissusnumbersare〃);

for(n=100;n<1000;n++){

i=n/100;

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

printf(,z%d〃,n);

printfC\n");

return0;

5-9-1

#defineM1000/*定义寻找范围*/

#include<stdio.h>

intmain()

(

intkl,k2,k3,k4,k5,k6,k7,k8,k9,klO;

inti,a,n,s;

for(a=2;a<=M;a++)/*a是2T000之间的整数,检查它是否完数*/

{n=0;/*n用来累计a的因子的个数*/

s=a;/*s用来存放尚未求出的因子之和,开始时等于a*/for(i=l;i<a;i++)/*检

查i是否a的因子*/

if(a%i==0)/*如果i是a的因子*/

{n++;/*n加1,表示新找到一个因子*/

s=s-i;/*s减去已找到的因子,s的新值是尚未求出的因子之和*/switch(n)/*将

找到的因子赋给kl...k9,或klO*/

{case1:

kl=i;break;/*找出的笫1个因子赋给kl*/

case2:

k2=i;break;/*找出的笫2个因子赋给k2*/

case3:

k3=i;break;/*找出的笫3个因子赋给k3*/

case4:

k4=i;break;/*找出的笫4个因子赋给k4*/

case5:

k5=i;break;/*找出的笫5个因子赋给k5*/

case6:

k6=i;break;/*找出的笫6个因子赋给k6*/

case7:

k7=i;break;/*找出的笫7个因子赋给k7*/

case8:

k8=i;break;/*找出的笫8个因子赋给k8*/

case9:

k9=i;break;/*找出的笫9个因子赋给k9*/case10:

kl0=i;break;/*找出的笫10个因子赋给klO*/

if(s==0)

(

printf(〃%d,Itsfactorsare〃,a);

if(n>l)printf(zz%d,%dz,,kl,k2);/*n>l表示a至少有2个因子*/

if(n>2)printfk3);/*n>2表示至少有3个因子,故应再输出一个因子*/

if(n>3)printf(〃,%d〃,k4);

因子*/

if(n>4)printf(",%d”,k5);

if(n>5)printf(",%d〃,k6);

if(n>6)printf(,z,%d,\k7);

if(n>7)printf(〃,%d",k8);

if(n>8)printf(",%d〃,k9);

if(n>9)printf%d,z,klO);

printf(〃\n〃);

)

)

return0;

)

5-9-2

#include<stdio.h>

intmain()

{intm,s,i;

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

{s=0;

for(i=l;i<m;i++)

if((m%i)==0)s=s+i;

if(s==m)

{printf(z,%d,itsfactorsare〃,m);

for(i=l;i<m;i++)

if(m%i==0)printfC%d〃,i);

printf(〃\n〃);

return0;

5-10/*n>3表示至少有4个因子,故应再输出一个/*以下类似*/#include

<stdio.h>

intmain()

(

inti,n=20;

doublea=2,b=l,s=0,t;

for(i=l;i<=n;i++)

(

s=s+a/b;

t=a,

a=a+b,

b=t;

)

printf("sum二机6.10f\n〃,s);

return0;

)

5-11

#include<stdio.h>

intmain()

doublesn=100,hn=sn/2;

intn;

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

(

sn=sn+2*hn;/*第n次落地时共经过的米数*/

hn=hn/2;/*第n次反跳高度*/

)

printf(〃第10次落地时共经过%f米\n〃,sn);

printf(〃第10次反弹%f米\n〃,hn);

return0;

)

5-12

#include<stdio.h>

intmain()

(

intday,xl,x2;

day=9;

x2=l;

while(day>0)

{xl=(x2+l)*2;/*第1天的桃子数是第2天桃子数加1后的2倍.*/x2=xl;day-;

)

printf("total二%d\n〃,xl);

return0;

5-13

#include<stdio.h>

#include<math.h>

intmainO

(

floata,xO,xl;

printf("enterapositivenumber:");

scanf&a);

x0=a/2;

xl=(x0+a/x0)/2;

do

{xO=xl;

xl=(x0+a/x0)/2;

}while(fabs(xO-xl)>=le-5);

printf(〃Thesquarerootof%5.2fis%8.5f\n,z,a,xl);return0;

)

5-14

#include<stdio.h>

ftinclude<math.h>

intmainO

{doublexl,xO,f,fl;

xl=l.5;

do

{xO=xl;

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

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

xl=xO-f/fl;

}while(fabs(xl-xO)>=le-5);

printf(,zTherootofequationis%5.2f\n,z,xl);return0;

)

5-15

#include<stdio.h>

#include<math.h>intmain()

{floatxO,xl,x2,fxO,fxl,fx2;do

{printf("enterxl&x2:〃);scanf%f,z,&xl,&x2);fxl=xl*((2*xl-4)*xl+3)-6;

fx2=x2*((2*x2-4)*x2+3)-6;}while(fxl*fx2>0);do

{x0=(xl+x2)/2;

fx0=x0*((2*x0-4)*x0+3)-6;if((fx0*fxl)<0){x2=x0;

fx2=fx0;

)

else

{xl=x0;

fxl=fx0;

}while(fabs(fx0)>=le-5);printf(〃x=%6.2f\n〃,xO);return0;

5-16

#include<stdio.h>

intmainO

{inti,j,k;

for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf(〃〃);

for(k=0;k〈=2*i;k++)printf(〃*〃);

printf(〃\n〃);

)

for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf("〃);

for(k=0;k<=4-2*i;k++)printf("*〃);

printfC\nz,);

}return0;

)

5-17

#include<stdio.h>

intmainO

(

chari,j,k;/*是a的对手;j是b的对手;k是c的对手*/for(i='x';i〈二'z';i++)

for(j=,x;j<-z;j++)

if⑴=j)

for(k=,x';k<='z';k++)

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

if(i!='x'&&k!='x'&&k!=z)

printf(Z/A一%c\nB--%c\nC-%c\n〃,i,j,k);

return0;

)

第6章利用数组处理批量数据【第168页】

6-1

#include<stdio.h>

ttinclude<math.h>

intmain()

{inti,j,n,a[101];

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

a[i]=i;

a[l]=0;

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

for(j=i+l;j〈=100;j++)

{if(a[i]!=0&&a[j]!=0)

if(a[j]%a[i]=0)

a[j]=0;

)

printf(〃\n〃);

for(i=2,n=0;i〈=100;i++)

{if(a[i]!=0)

{printf(〃%5d〃,a[i]);

n++;

)

if(n==10)

{printf(〃\n〃);

n=0;}

)

printf(〃\n〃);

return0;

}

6-2

#include<stdio.h>

intmain()

{inti,j,min,temp,a[ll];

printf(,zenterdata:\n〃);for(i=l;i<=10;i++)

{printf(z,a[%d]=z,,i);

scanf;

)

printfTV);

printf(z,Theorginalnumbers:\n,z);for(i=l;i<=10;i++)

printf("%5d〃,a[i]);

printf(〃\n〃);

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

{min二i;

for(j=i+l;j<=10;j++)if(a[min]>a[j])min=j;temp=a[i];

a[i]=a[min];

a[min]=temp;

)

printf(/z\nThesortednumbers:\n,z);for(i=l;i<=10;i++)

printf(〃%5d〃,a[i]);

printf(〃\n〃);

return0;

}

6-3

#include<stdio.h>

intmain()

(

inta[3][3],sum=0;

inti,j;

printf("enterdata:\n〃);for(i=0;i<3;i++)

for(j=0;j<3;j++)scanf(z,%3dz,,&a[i][j]);

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

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

printf(〃sum=%6d\n〃,sum);return0;

6-4

^include<stdio.h>

intmain()

{inta[ll]={l,4,6,9,13,16,19,28,40,100);inttempi,temp2,number,end,i,j;

printf(''array

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

printf(〃%5d〃,a[i]);

printfC\n/Z);

printf(''insertdata:");

scanf(〃%d〃,inumber);

end=a[9];

if(number>end)

a[10]=number;

else

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

{if(a[i]>number)

{templ=a[i];

a[i]=number;

for(j=i+l;j<ll;j++)

{temp2=a[j];

a[j]=templ;

templ=temp2;

break;

printf(〃Nowarraya:\n〃);

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

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

printfCV);

return0;

)

6-5

#include<stdio.h>#defineN5

intmain()

{inta[N],i,temp;

printf("enterarraya:\nz,);

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

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

printf("arraya:\n〃);

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

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

for(i=0;i<N/2;i++)//循环的作用是将对称的元素的值互换{temp=a[i];

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

a[N-i-l]=temp;

printf(^XnNow,arraya:\n〃);

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

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

printf(〃\n〃);

return0;

)

6-6

#include<stdio.h>

#defineN10

intmain()

(inti,j,a[N][N];

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

{a[i][i]=l;

a[i][0]=l;

)

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

for(j=l;j<=i-l;j++)

a[i][j-l]+a[i-l][j];

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

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

printfC%6d/Z,a[i][j]);

printf(〃\n〃);

printf("\n");

return0;}

6-7

ttinclude<stdio.h>

intmainO

{inta[15][15],i,j,k,p,n;

P=1;

while(p-l)

{printf("entern(n=l-15):");scanf("%d",&n);

if((n!=0)&&(n<=15)&&(n%2!=0))p=0;

}

for(i=l;i<=n;i++)

for(j=l;j<=n;j++)

a[i][j]=0;

j=n/2+l;

for(k=2;k<=n*n;k++)

{i=iT;

j=j+l;

if((i<l)&&(j>n))

{i=i+2;

j=j-l;

else

{if(i<l)i=n;

if(j>n)j=l;

)

if(a[i][j]==0)

a[i][j]=k;

else

{i=i+2;

j二jT;

}

)

for(i=l;i<=n;i++)

{for(j=l;j<=n;j++)

printf(/z%5d,z,a[i][j]);

printf(〃\n〃);

}

return0;}

6-8

ftinclude<stdio.h>

#defineN4

#defineM5/*数组为4行5列*/

intmain()

inti,j,k,a[N][M],max,maxj,flag;

printf(/zpleaseinputmatrix:\nz/);

for(i=0;i<N;i++)/*输入数组*/

for(j=0;j<M;j++)

scanf&a[i][j]);

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

{max=a[i][0];/*开始时假设a[i][0]最大*/

maxj=0;/*将列号0赋给maxj保存*/

for(j=0;j<M;j++)/*找出第i行中的最大数*/

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

{max=a[i][j];/*将本行的最大数存放在max中*/

maxj=j;/*将最大数所在的列号存放在maxj中*/

)

flag=l;/*先假设是鞍点,以flag为1代表*/

for(k=0;k<N;k++)

if(max>a[k][maxj])/*将最大数和其同列元素相比*/

{flag=0;/*如果max不是同列最小,表示不是鞍点令flagl为0*/continue;}

if(flag)/*如果flagl为1表示是鞍点*/

{printf(z/a[%d][%d]=%d\n,z,i,maxj,max);/*输出鞍点的值和所在行列号*/break;

if(!flag)/*如果flag为0表示鞍点不存在*/

printf(z,Itisnotexist!\n〃);

return0;

)

6-9

#include<stdio.h>

SdefineN15

intmain()

{inti,number,top,bott,mid,loca,a[N],flag=l,sign;

charc;

printf("enterdata:\n");scanf(〃%d〃,&a[0]);

i=l;

while(i<N)

{scanf(,z%d/z,&a[i]);

if(aLi]>=a[i-l])

i++;

else

printf("enterthisdataagain:\n,z);

)

printfTV);

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

printf("%5d〃,a[i]);

printf(〃\n〃);

while(flag)

{printf("inputnumbertolookfor:〃);

scanf(绘d〃,&number);

sign=0;

top=0;〃top是查找区间的起始位置

bott=NT;〃bott是查找区间的最末位置

if((number<a[0])||(number>a[N-l]))//要查的数不在查找区间内loca=-l;//表

示找不到

while((!sign)&&(top<=bott))

{mid=(bott+top)/2;

if(number==a[mid])

{loca=mid;

printf("Hasfound%d,itspositionis%d\n\number,loca+1);sign=l;

}

elseif(number<a[mid])

bott=mid-l;

else

top=mid+1;

)

if(!sign||loca==-l)

printf("cannotfind%d.\n〃,number);;

printf(z,continuornot(Y/N)?,z);

scanf("%c〃,&c);

if(c二二'N'||c二二'n,)

flag=O;

return0;}

6-10

#include<stdio.h>

intmain()

{inti,j,upp,low,dig,spa,oth;

chartext[3][80];

upp=low=dig=spa=oth=0;

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

{printf(,zpleaseinputline%d:\nz/,i+1);gets(text[i]);

for(j=0;j<80&&text[i][j]!=\0,;j++){if(text[i][j]>=A*&&

text[i][j]<=,)upp++;

elseif(text[i][j]>=,a&&text[i][j]<=,z)low++;

elseif(text[i][j]>=,&&text[i][j]<=,9?)dig++;

elseif(text[i][j]=,')

spa++;

else

oth++;

)

)

printf(〃\nuppercase:%d\nz,,upp);printf(""lowercase:%d\n,z,low);

printf(,zdigit:%d\n〃,dig);printf("space:%d\n〃,spa);

printf(,zother:%d\n〃,oth);return0;

6-11

#include<stdio.h>

intmainO

{chara[5]={,

inti,j,k;

charspace='’;

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

{printfC\n");

printfC〃);

for(j=l;j<=i;j++)

printf(〃%c〃,space);

for(k=0;k<5;k++)

printfa[k]);}

printfCW);

return0;

}

6-12a-c

#include<stdio.h>

intmain()

{intj,n;

charch[80],tran[80];

printf(''inputciphercode:");gets(ch);

printf("\nciphercode:%s,z,ch);j=0;

while(ch[j]!='\0')

{if((ch[j]>-)&&(ch[j]<-T))tran[j]=155-ch[j];

elseif((ch[j]>=,a)&&(ch[j]<=,z))tran[j]=219-ch[j];

else

tran[j]=ch[j];

j++;

)

n=j;

printf(^\noriginaltext:/z);

for(j=0;j<n;j++)

putchar(tran[j]);

printfTV);

return0;

)

6-12b

#include<stdio.h>

intmain()

{intj,n;

charch[80];

printf("inputciphercode:\nz,);gets(ch);

printf(〃\nciphercode:%s\rT,ch);j=0;

while(ch[j]!=,\0,)

{if((ch[j]>-)&&(ch[j]<-ZJ))ch[j]=155-ch[j];

elseif((ch[j]>=,a)&&(ch[j]<=,z))ch[j]=219-ch[j];

else

ch[j]=ch[j];

j++;

)

n=j;

printf(^originaltext:");

for(j=0;j<n;j++)

putchar(ch[j]);

printf(〃\n〃);

return0;

)

6-13

#include<stdio.h>

intmainO

{charsi[80],s2[40];

inti=0,j=0;

printf(z,inputstringl:z,);

scanf(〃%s〃,si);

printf("inputstring2:〃);

scanf(〃%s〃,s2);

while(si[i]!='\0')

i++;

while(s2[j]!='\0')

sl[i++]=s2[j++];

sl[i]='\0';

printf(〃\nThenewstringis:%s\n〃,si);return0;

)

6-14

#include<stdio.h>

intmain()

{inti,resu;

charsi[100],s2[100];

printf(""inputstringl:z,);

gets(si);

printf(^\ninputstring2:〃);gets(s2);

i=0;

while((sl[i]=s2[i])&&(sl[i]!=\0,))i++;if(sl[i]==\0J&&s2[i]=,\0,)

resu=0;

else

resu=sl[i]-s2[i];

printf(z,\nresult:%d.\n〃,resu);

return0;

6-15

ttinclude<stdio.h>

#include<string.h>

intmain()

{charsi[80],s2[80];

inti;

printf("inputs2:〃);

scanf(\s〃,s2);

for(i=0;i<=strlen(s2);i++)

sl[i]=s2[i];

printf(〃sl:%s\n〃,si);

return0;

)

第7章用函数实现模块化程序设计7-1-1

#include<stdio.h>

intmain()

{inthcf(int,int);

intlcd(int,int,int);

intu,v,h,1;

scanf(〃%d,&u,&v);

h=hcf(u,v);

printf("H.C.F=%d\n〃,h);

l=lcd(u,v,h);

printf("L.C.D二%d\n",1);

return0;

inthcf(intu,intv)

{intt,r;218页】【第if(v>u)

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

v=r;}

return(v);

)

intlcd(intu,intv,inth){

return(u*v/h);}

7-1-2

#include<stdio.h>intHcf,Led;

intmain()

{voidhcf(int,int);voidlcd(int,int);intu,v;

scanf(〃%d,%d〃,&u,&v);hcf(u,v);

lcd(u,v);

printf(,ZH.C.F=%d\n,z,Hcf);printf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论