C程序设计 谭浩强课后作业答案.docx
- 文档编号:8619333
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:16
- 大小:139.01KB
C程序设计 谭浩强课后作业答案.docx
《C程序设计 谭浩强课后作业答案.docx》由会员分享,可在线阅读,更多相关《C程序设计 谭浩强课后作业答案.docx(16页珍藏版)》请在冰豆网上搜索。
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; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C程序设计 谭浩强课后作业答案 程序设计 谭浩强 课后 作业 答案