C程序设计 谭浩强课后作业答案.docx

上传人:b****6 文档编号:8619333 上传时间:2023-02-01 格式:DOCX 页数:16 大小:139.01KB
下载 相关 举报
C程序设计 谭浩强课后作业答案.docx_第1页
第1页 / 共16页
C程序设计 谭浩强课后作业答案.docx_第2页
第2页 / 共16页
C程序设计 谭浩强课后作业答案.docx_第3页
第3页 / 共16页
C程序设计 谭浩强课后作业答案.docx_第4页
第4页 / 共16页
C程序设计 谭浩强课后作业答案.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C程序设计 谭浩强课后作业答案.docx

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

C程序设计 谭浩强课后作业答案.docx

C程序设计谭浩强课后作业答案

C程序设计(谭浩强)课后作业答案

第2章算法--程序的灵魂

第3章最简单的C程序设计——顺序程序设计 

习题(82页)

2.解:

#include 

#include  

int main() 

{float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;  

p=1000; 

r5=0.0585;  

r3=0.054; 

r2=0.0468; 

r1=0.0414;  

r0=0.0072; 

 

p1=p*((1+r5)*5);            // 一次存5年期   

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

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

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

p5=p*pow(1+r0/4,4*5);       // 存活期存款。

活期利息每一季度结算一次    

printf("p1=%f\n",p1);       // 输出按第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方案得到的本息和 

return 0; 

}  

 

3.解:

 

#include  

#include  

int main() 

{float d=300000,p=6000,r=0.01,m;

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

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

return 0; 

}  

 

第4章选择结构程序设计 

习题(111页)

3.写出下面各逻辑表达式的值。

设a=3,b=4,c=5。

(1)a+b>c&&b==c

解:

a+b=7,c=5,a+b>5成立;

b=4,c=5,b==c不成立;

则输出的结果为0

(2)a||b+c&&b-c

解:

&&的运算优先级高于||

因为b+c=9,b-c=-1,b+c、b-c的值均为非0值,被认为是“真”

所以b+c&&b-c的值为1

又因为a=3>0,为“真”

所以a||b+c&&b-c的结果为1

(3)!

(a>b)&&!

c||1

解:

a>b的结果为假,则!

(a>b)为真

c=5的结果为真,则!

c为假

则!

(a>b)&&!

c为假

所以!

(a>b)&&!

c||1的结果为1

(4)!

(x=a)&&(y=b)&&0

解:

!

(x=a)的结果为0,y=b的结果为1

则!

(x=a)&&(y=b)的结果为0

所以!

(x=a)&&(y=b)&&0的结果为0

(5)!

(a+b)+c-1&&b+c/2

解:

!

(a+b)的结果为0,则!

(a+b)+c-1=4的结果为1

b+c/2=6(取整),则b+c/2=6的结果为1

所以!

(a+b)+c-1&&b+c/2的结果为1

 

8.解:

#include 

 int main()  

 { float score; 

    char grade; 

    printf("请输入学生成绩:

");     

scanf("%f",&score); 

    while (score>100||score<0) 

 {printf("\n 输入有误,请重输"); 

 scanf("%f",&score);  

    switch((int)(score/10))       

 {case 10:

 

case 9:

 grade='A';break;

  case 8:

 grade='B';break;  

case 7:

 grade='C';break; 

case 6:

 grade='D';break;  

case 5:

  

case 4:

 

case 3:

  

case 2:

  

case 1:

 

case 0:

 grade='E';  

    printf("成绩是 %5.1f,相应的等级是%c\n ",score,grade); 

return 0; 

}

 

9.解:

#include

#include

intmain()

{

intnum,indiv,ten,hundred,thousand,ten_thousand,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=1;

printf("位数:

%d\n",place);

printf("每位数字为:

");

ten_thousand=num/10000;

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

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

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

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

switch(place)

{case5:

printf("%d,%d,%d,%d,%d",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反序数字为:

");

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

break;

case3:

printf("%d,%d,%d",hundred,ten,indiv);

printf("\n反序数字为:

");

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

break;

case2:

printf("%d,%d",ten,indiv);

printf("\n反序数字为:

");

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

break;

case1:

printf("%d",indiv);

printf("\n反序数字为:

");

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

break;

}

return0;

}

 

10.解:

#include 

 int main() 

  int i; 

  double bonus,bon1,bon2,bon4,bon6,bon10; 

  bon1=100000*0.1; 

  bon2=bon1+100000*0.075; 

  bon4=bon2+100000*0.05; 

 bon6=bon4+100000*0.03;  

bon10=bon6+400000*0.015;   

printf("请输入利润i:

");   

scanf("%d",&i);  

 if (i<=100000)    

bonus=i*0.1; 

  else if (i<=200000) 

bonus=bon1+(i-100000)*0.075;   

else if (i<=400000) 

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

else if (i<=600000) 

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

else if (i<=1000000) 

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

else 

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

printf("奖金是:

 %10.2f\n",bonus);   

return 0;  

}  

 

第5章循环结构程序设计

习题(140页)

3.解:

#include  

int main()  

  int  p,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);   

return 0; 

 } 

 

8解:

 

#include  

int main()  

{  

int i,j,k,n; 

  printf("parcissus numbers are ");   

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

return 0;  

 } 

 

10.解:

#include   

int main()  

  int i,n=20; 

double a=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);    

return 0;    

}

 

13解:

#include   

#include  

int main()  

  float a,x0,x1; 

  printf("enter a positive number:

");   

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("The square root of %5.2f  is %8.5f\n",a,x1);   

return 0;  

 

14.解:

#include  

#include  

int  main() 

 {double x1,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("The root of equation is %5.2f\n",x1);  

 return 0;  

}

 

16.解:

#include   

int main()  

{int i,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");   

   return 0; 

  }

 

第6章利用数组处理批量数据 

习题(168页)

2.解:

#include 

int main() 

{int i,j,min,temp,a[11];  

 printf("enter data:

\n");  

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

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

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

  printf("\n"); 

  printf("The orginal numbers:

\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("\nThe sorted numbers:

\n");   

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

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

printf("\n");   

return 0;  

}

 

4.解:

#include 

int main() 

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

int temp1,temp2,number,end,i,j;  

printf("array a:

\n");  

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

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

printf("\n"); 

printf("insert data:

");   

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("Now array a:

\n");  

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

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

printf("\n");   

return 0;  

}

 

7.解:

#include  

int main() 

{ int a[15][15],i,j,k,p,n;   

p=1;   

while(p==1) 

   {printf("enter n(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");     

}   

return 0;  

}

 

10解:

#include  

int main() 

 {int i,j,upp,low,dig,spa,oth;   

char text[3][80];   

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

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

   {printf("please input line %d:

\n",i+1);      

gets(text[i]); 

    for (j=0;j<80 && text[i][j]!

='\0';j++)       

{if (text[i][j]>='A'&& text[i][j]<='Z')      

 upp++;        

else if (text[i][j]>='a' && text[i][j]<='z')         

low++; 

       else if (text[i][j]>='0' && text[i][j]<='9')          

dig++; 

       else if (text[i][j]==' ')       

spa++;        

else       

oth++;  

   }

     printf("\nupper case:

 %d\n",upp);  

printf("lower case:

 %d\n",low);      

printf("digit:

 %d\n",dig);      

printf("space:

 %d\n",spa);      

printf("other:

 %d\n",oth);  

return 0;

}

 

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

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

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

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