C语言程序设计谭浩强第四版课后答案.docx

上传人:b****6 文档编号:5096470 上传时间:2022-12-13 格式:DOCX 页数:125 大小:41.41KB
下载 相关 举报
C语言程序设计谭浩强第四版课后答案.docx_第1页
第1页 / 共125页
C语言程序设计谭浩强第四版课后答案.docx_第2页
第2页 / 共125页
C语言程序设计谭浩强第四版课后答案.docx_第3页
第3页 / 共125页
C语言程序设计谭浩强第四版课后答案.docx_第4页
第4页 / 共125页
C语言程序设计谭浩强第四版课后答案.docx_第5页
第5页 / 共125页
点击查看更多>>
下载资源
资源描述

C语言程序设计谭浩强第四版课后答案.docx

《C语言程序设计谭浩强第四版课后答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计谭浩强第四版课后答案.docx(125页珍藏版)》请在冰豆网上搜索。

C语言程序设计谭浩强第四版课后答案.docx

C语言程序设计谭浩强第四版课后答案

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

5-2

#include

#include//程序中用到数学函数fabs,应包含头文件math.n

intmain()

{

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

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

while(fabs(term)>=1e-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,才是π的近似值

printf("pi=%10.8f\n",pi);//输出π的近似值

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

return0;

}

5-3

#include

intmain()

{

intp,r,n,m,temp;

printf("请输入两个正整数n,m:

");

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

if(n

{

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

intmain()

{

charc;

intletters=0,space=0,digit=0,other=0;

printf("请输入一行字符:

\n");

while((c=getchar())!

='\n')

{

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

letters++;

elseif(c=='')

space++;

elseif(c>='0'&&c<='9')

digit++;

else

other++;

}

printf("字母数:

%d\n空格数:

%d\n数字数:

%d\n其它字符数:

%d\n",letters,space,digit,other);

return0;

}

5-5

#include

intmain()

{

inta,n,i=1,sn=0,tn=0;

printf("a,n=:

");

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

while(i<=n)

{

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

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

a=a*10;

++i;

}

printf("a+aa+aaa+...=%d\n",sn);

return0;

}

5-6

#include

intmain()

{doubles=0,t=1;

intn;

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

{

t=t*n;

s=s+t;

}

printf("1!

+2!

+...+20!

=%22.15e\n",s);

return0;

}

5-7

#include

intmain()

{

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

doublek,s1=0,s2=0,s3=0;

for(k=1;k<=n1;k++)/*计算1到100的和*/

{s1=s1+k;}

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

{s2=s2+k*k;}

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

{s3=s3+1/k;}

printf("sum=%15.6f\n",s1+s2+s3);

return0;

}

5-8

#include

intmain()

{

inti,j,k,n;

printf("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("%d",n);

}

printf("\n");

return0;

}

5-9-1

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

#include

intmain()

{

intk1,k2,k3,k4,k5,k6,k7,k8,k9,k10;

inti,a,n,s;

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

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

s=a;/*s用来存放尚未求出的因子之和,开始时等于a*/

for(i=1;i

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

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

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

switch(n)/*将找到的因子赋给k1...k9,或k10*/

{case1:

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

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:

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

}

}

if(s==0)

{

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

if(n>1)printf("%d,%d",k1,k2);/*n>1表示a至少有2个因子*/

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

if(n>3)printf(",%d",k4);/*n>3表示至少有4个因子,故应再输出一个因子*/

if(n>4)printf(",%d",k5);/*以下类似*/

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

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

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

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

if(n>9)printf(",%d",k10);

printf("\n");

}

}

return0;

}

5-9-2

#include

intmain()

{intm,s,i;

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

{s=0;

for(i=1;i

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

if(s==m)

{printf("%d,itsfactorsare",m);

for(i=1;i

if(m%i==0)printf("%d",i);

printf("\n");

}

}

return0;

}

5-10

#include

intmain()

{

inti,n=20;

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

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

{

s=s+a/b;

t=a,

a=a+b,

b=t;

}

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

return0;

}

5-11

#include

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

intmain()

{

intday,x1,x2;

day=9;

x2=1;

while(day>0)

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

x2=x1;

day--;

}

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

return0;

}

5-13

#include

#include

intmain()

{

floata,x0,x1;

printf("enterapositivenumber:

");

scanf("%f",&a);

x0=a/2;

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

do

{x0=x1;

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

}while(fabs(x0-x1)>=1e-5);

printf("Thesquarerootof%5.2fis%8.5f\n",a,x1);

return0;

}

5-14

#include

#include

intmain()

{doublex1,x0,f,f1;

x1=1.5;

do

{x0=x1;

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

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

x1=x0-f/f1;

}while(fabs(x1-x0)>=1e-5);

printf("Therootofequationis%5.2f\n",x1);

return0;

}

5-15

#include

#include

intmain()

{floatx0,x1,x2,fx0,fx1,fx2;

do

{printf("enterx1&x2:

");

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

{x2=x0;

fx2=fx0;

}

else

{x1=x0;

fx1=fx0;

}

}while(fabs(fx0)>=1e-5);

printf("x=%6.2f\n",x0);

return0;

}

_

5-16

#include

intmain()

{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("*");

printf("\n");

}

return0;

}

5-17

#include

intmain()

{

chari,j,k;/*是a的对手;j是b的对手;k是c的对手*/

for(i='x';i<='z';i++)

for(j='x';j<='z';j++)

if(i!

=j)

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

if(i!

=k&&j!

=k)

if(i!

='x'&&k!

='x'&&k!

='z')

printf("A--%c\nB--%c\nC--%c\n",i,j,k);

return0;

}

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

6-1

#include

#include

intmain()

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

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

a[i]=i;

a[1]=0;

for(i=2;i

for(j=i+1;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

intmain()

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

printf("enterdata:

\n");

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

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

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

}

printf("\n");

printf("Theorginalnumbers:

\n");

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

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

printf("\n");

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

{min=i;

for(j=i+1;j<=10;j++)

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

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

printf("\nThesortednumbers:

\n");

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

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

printf("\n");

return0;

}

6-3

#include

intmain()

{

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

inti,j;

printf("enterdata:

\n");

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

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

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

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

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

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

return0;

}

6-4

#include

intmain()

{inta[11]={1,4,6,9,13,16,19,28,40,100};

inttemp1,temp2,number,end,i,j;

printf("arraya:

\n");

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

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

printf("\n");

printf("insertdata:

");

scanf("%d",&number);

end=a[9];

if(number>end)

a[10]=number;

else

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

{if(a[i]>number)

{temp1=a[i];

a[i]=number;

for(j=i+1;j<11;j++)

{temp2=a[j];

a[j]=temp1;

temp1=temp2;

}

break;

}

}

}

printf("Nowarraya:

\n");

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

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

printf("\n");

return0;

}

6-5

#include

#defineN5

intmain()

{inta[N],i,temp;

printf("enterarraya:

\n");

for(i=0;i

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

printf("arraya:

\n");

for(i=0;i

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

for(i=0;i

{temp=a[i];

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

a[N-i-1]=temp;

}

printf("\nNow,arraya:

\n");

for(i=0;i

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

printf("\n");

return0;

}

6-6

#include

#defineN10

intmain()

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

for(i=0;i

{a[i][i]=1;

a[i][0]=1;

}

for(i=2;i

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

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=0;i

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

printf("%6d",a[i][j]);

printf("\n");

}

printf("\n");

return0;

}

6-7

#include

intmain()

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

p=1;

while(p==1)

{printf("entern(n=1--15):

");

scanf("%d",&n);

if((n!

=0)&&(n<=15)&&(n%2!

=0))

p=0;

}

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

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

a[i][j]=0;

j=n/2+1;

a[1][j]=1;

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

{i=i-1;

j=j+1;

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

{i=i+2;

j=j-1;

}

else

{if(i<1)i=n;

if(j>n)j=1;

}

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

a[i][j]=k;

else

{i=i+2;

j=j-1;

a[i][j]=k;

}

}

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

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

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

printf("\n");

}

return0;

}

6-8

#include

#defineN4

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

intmain()

{

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

printf("pleaseinputmatrix:

\n");

for(i=0;i

for(j=0;j

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

for(i=0;i

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

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

for(j=0;j

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

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

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

}

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

for(k=0;k

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

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

continue;}

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

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

break;

}

}

if(!

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

printf("Itisnotexist!

\n");

return0;

}

6-9

#include

#defineN15

intmain()

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

charc;

printf("enterdata:

\n");

scanf("%d",&a[0]

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

当前位置:首页 > 人文社科 > 广告传媒

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

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