C语言程序设计第三版谭浩强课后习题答案完整版
- 格式:doc
- 大小:1.94 MB
- 文档页数:30
电信学院机械二班田文博学号:06131002151.5#include <stdio.h>void main(){printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");printf(" Very good! \n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");}1.6#include <stdio.h>void main(){float max(float x,float y,float z);float a,b,c;printf("请分别输入a,b,c:\n");scanf("%f,%f,%f",&a,&b,&c);printf("max=%f",max(a,b,c));}float max(float x,float y,float z){float m,n;m=x>y? x: y;n=m>z? m: z;return(n);}3.6#include <stdio.h>void main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%c b%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c\n”,c4,c5);}3.9.1#include <stdio.h>void main(){double x=2.5,y=4.7,z;int a=7;z=x+a%3*(int)(x+y)%2/4;printf("该表达式的值为:%f",z);}3.9.2#include <stdio.h>void main(){int a=2,b=3;float x=3.5,y=2.5,z;z=(float)(a+b)/2+(int)x%(int)y;printf("该表达式的值为:%f",z);}4.5#include <stdio.h>void main(){int a=5,b=7;double x=67.8564,y=-789.124;char c='A';long n=1234567;unsigned u=65535;printf("%d%d\n",a,b);printf("%3d%3d\n",a,b);printf("%f,%f\n",x,y);printf("%-10f,%-10f\n",x,y);printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);printf("%e,%10.2e\n",x,y);printf("%c,%d,%o,%x\n",n,n,n);printf("%ld,%lo,%x\n",n,n,n);printf("%u,%o,%x,%d\n",u,u,u,u);printf("%s,%5.3s\n","COMPUTER","COMPUTER"); }4.6#include <stdio.h>void main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b);scanf(" %f %e",&x,&y);scanf(" %c %c",&c1,&c2);}4.7#include<stdio.h>void main(){int a,b;float x,y,z;char c1,c2;scanf("%5d%5d",&a,&b);scanf("%f%f%*f%f",&x,&y,&z);scanf("%c%c",&c1,&c2);}4.8#include <stdio.h>#define pi 3.14void main(){float r,h,l,s1,s2,v1,v2;printf("请输入r,h的值:\n");scanf("%f,%f",&r,&h);l=2*pi*r;s1=pi*r*r;s2=4*s1;v1=4/3*pi*r*r*r;v2=s1*h;printf("圆周长为:%.2f\n",l);printf("圆面积为:%.2f\n",s1);printf("圆球表面积为:%.2f\n",s2); printf("圆球体积为:%.2f\n",v1); printf("圆柱体积为:%.2f\n",v2);}5.5 #include <stdio.h>void main(){float x,y;printf("请输入x的值:\n");scanf("%f",&x);if(x<1)y=x;elseif(x>=1&&x<10)y=2*x-1;elsey=3*x-11;printf("x与y的值分别为:\n%f,%f",x,y); printf("\n");}5.6 #include <stdio.h>void main(){float b;int a;printf("请输入该同学的成绩:\n");scanf("%f",&b);while (b<0||b>100){printf("输入有误,请重新输入:\n");scanf("%f",&b);}a= int(b/10);if(a<6) a=5;switch(a){case 10:case 9: printf("该同学为等级:A");break;case 8: printf("该同学为等级:B");break;case 7: printf("该同学为等级:C");break;case 6: printf("该同学为等级:D");break;case 5: printf("该同学为等级:E");break;}}#include <stdio.h>#include <math.h>void main(){int x,y,m,n,i=1,j=0;printf("请给出一个不多于5位的正整数:\n");scanf("%d",&x);while(x<=0||x>=100000){ printf("输入有误\n请给出一个不多于5位的正整数:\n");scanf("%d",&x);}for(n=0;n<5;n++){y=int(x/pow(10,n));if(y>0&&y<10)m=n+1;}printf("它是%d位数\n",m);printf("从高到低位依次为\n");do{printf(" %d",int(x/pow(10,m-i))%10);i++;}while(m-i>=0);printf("\n逆序输出为\n");do{printf(" %d",int(x/pow(10,j))%10);j++;}while(j-m<0);printf("\n");}6.1输入两个正整数m和n,求其最大公约数和最小公倍数。
C程序设计(第三版)课后习题参考解答写一个程序,输入a,b,c三个值,输出其中最大者。
解:main ( ){int a,b,c,max;printf(“请输入三个数a,b,c: \n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf(“最大数为:%d ”,max);}第2章程序的灵魂——算法什么叫结构化的算法为什么要提倡结构化的算法解:由一些基本结构顺序组成的算法称为结构化的算法。
由于在基本结构之间不存在非顺序的跳转,流程的转移只存在于一个基本结构范围之内,因而提高了算法的质量。
什么叫结构化程序设计它的主要内容是什么解:结构化程序就是用高级语言表示的结构化算法。
它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。
第3章数据类型、运算符与表达式3.3请将下面各数用八进制和十六进制数表示:(1)10 (2)32 (3)75 (4)-617(5)-111 (6)2483 (7)-28654 (8)21003解:(1) (10) 10=(12) 8=(A) 16(2) (32)10=(40)8=(20) 16(3)(75)10=(113)8=(4B) 16(4)(-617)10=(176627)8=(FD97) 16此题可以这样考虑:带符号数在计算机中采用补码表示,正数的补码与原码相同,负数的补码=模+真值。
若使用16位存储,模为216=65536。
-617的补码为65536+(-167)=64919=(176627)8=(FD97)16(5)(-111)10=(177621)8=(FF91) 16(6)(2483)10=(4663)8=(9B3) 16(7)(-28654)10=(110022)8=(9012) 16(8)(21003)10=(51013)8=(520B) 163.4将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。
1.5请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:mian(){printf(“**************************”);printf(“\n”);printf(“Very Good!\n”);printf(“\n”);printf(“**************************”);}1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。
解:mian(){int a,b,c,max;printf(“请输入三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf(“最大数为:“%d”,max);}第三章3.6写出以下程序运行的结果。
main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c”,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。
因此,"China"应译为"Glmre"。
请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
1.5#include <stdio.h>void main(){printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");printf(" Very good! \n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");}1.6#include <stdio.h>void main(){float max(float x,float y,float z);float a,b,c;printf("请分别输入a,b,c:\n");scanf("%f,%f,%f",&a,&b,&c);printf("max=%f",max(a,b,c));}float max(float x,float y,float z){float m,n;m=x>y? x: y;n=m>z? m: z;return(n);}3.6#include <stdio.h>void main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%c b%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c\n”,c4,c5);}3.9.1#include <stdio.h>void main(){double x=2.5,y=4.7,z;int a=7;z=x+a%3*(int)(x+y)%2/4;printf("该表达式的值为:%f",z);}3.9.2#include <stdio.h>void main(){int a=2,b=3;float x=3.5,y=2.5,z;z=(float)(a+b)/2+(int)x%(int)y;printf("该表达式的值为:%f",z);}4.5#include <stdio.h>void main(){int a=5,b=7;double x=67.8564,y=-789.124;char c='A';long n=1234567;unsigned u=65535;printf("%d%d\n",a,b);printf("%3d%3d\n",a,b);printf("%f,%f\n",x,y);printf("%-10f,%-10f\n",x,y);printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);printf("%e,%10.2e\n",x,y);printf("%c,%d,%o,%x\n",n,n,n);printf("%ld,%lo,%x\n",n,n,n);printf("%u,%o,%x,%d\n",u,u,u,u);printf("%s,%5.3s\n","COMPUTER","COMPUTER");}4.6#include <stdio.h>void main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b); scanf(" %f %e",&x,&y); scanf(" %c %c",&c1,&c2);}4.7#include<stdio.h>void main(){int a,b;float x,y,z;char c1,c2;scanf("%5d%5d",&a,&b); scanf("%f%f%*f%f",&x,&y,&z); scanf("%c%c",&c1,&c2);}4.8#include <stdio.h>#define pi 3.14void main(){float r,h,l,s1,s2,v1,v2;printf("请输入r,h的值:\n"); scanf("%f,%f",&r,&h);l=2*pi*r;s1=pi*r*r;s2=4*s1;v1=4/3*pi*r*r*r;v2=s1*h;printf("圆周长为:%.2f\n",l); printf("圆面积为:%.2f\n",s1); printf("圆球表面积为:%.2f\n",s2); printf("圆球体积为:%.2f\n",v1); printf("圆柱体积为:%.2f\n",v2); }5.5 #include <stdio.h>void main(){float x,y;printf("请输入x的值:\n");scanf("%f",&x);if(x<1)y=x;elseif(x>=1&&x<10)y=2*x-1;elsey=3*x-11;printf("x与y的值分别为:\n%f,%f",x,y); printf("\n");}5.6 #include <stdio.h>void main(){float b;int a;printf("请输入该同学的成绩:\n");scanf("%f",&b);while (b<0||b>100){printf("输入有误,请重新输入:\n");scanf("%f",&b);}a= int(b/10);if(a<6) a=5;switch(a){case 10:case 9: printf("该同学为等级:A");break;case 8: printf("该同学为等级:B");break;case 7: printf("该同学为等级:C");break;case 6: printf("该同学为等级:D");break;case 5: printf("该同学为等级:E");break;}}#include <stdio.h>#include <math.h>void main(){int x,y,m,n,i=1,j=0;printf("请给出一个不多于5位的正整数:\n");scanf("%d",&x);while(x<=0||x>=100000){ printf("输入有误\n请给出一个不多于5位的正整数:\n");scanf("%d",&x);}for(n=0;n<5;n++){y=int(x/pow(10,n));if(y>0&&y<10)m=n+1;}printf("它是%d位数\n",m);printf("从高到低位依次为\n");do{printf(" %d",int(x/pow(10,m-i))%10);i++;}while(m-i>=0);printf("\n逆序输出为\n");do{printf(" %d",int(x/pow(10,j))%10);j++;}while(j-m<0);printf("\n");}6.1输入两个正整数m和n,求其最大公约数和最小公倍数。
c语言程序设计第三版谭浩强课后习题及答案C语言程序设计是一门基础而重要的编程课程,谭浩强教授的《C语言程序设计》第三版是许多高校计算机专业学生的必修教材。
课后习题是检验学生对课程内容掌握程度的重要手段,以下是部分习题及答案的示例。
# 第一章:C语言概述习题1:简述C语言的特点。
答案: C语言是一种结构化编程语言,具有以下特点:1. 简洁、紧凑、贴近硬件。
2. 丰富的运算符和数据类型。
3. 具有结构化控制语句。
4. 支持模块化程序设计。
5. 可移植性好。
习题2:为什么说C语言具有“高级语言”的特点?答案: C语言被称为高级语言,因为它:1. 抽象了机器语言的复杂性。
2. 允许使用变量名代替内存地址。
3. 提供了丰富的控制结构和数据类型。
4. 支持高级的编程概念,如函数、数组和指针。
# 第二章:数据类型、运算符和表达式习题3:写出C语言中的基本数据类型。
答案: C语言中的基本数据类型包括:- 整型:`int`- 浮点型:`float` 和 `double`- 字符型:`char`习题4:解释赋值运算符的右结合性。
答案:赋值运算符的右结合性意味着当多个赋值运算符出现在同一个表达式中时,它们将从右向左进行计算。
例如,在表达式 `a = b = c;` 中,首先计算 `b = c`,然后将结果赋值给 `a`。
# 第三章:控制语句习题5:描述if语句的基本用法。
答案: if语句用于基于条件执行代码块。
基本语法如下:```cif (条件) {// 条件为真时执行的代码} else {// 条件为假时执行的代码}```其中条件是一个表达式,如果其值为真(非零),则执行if块中的代码;如果为假(零),则执行else块中的代码。
习题6:举例说明for循环的使用。
答案: for循环用于重复执行一段代码,直到给定条件不再满足。
基本语法如下:```cfor (初始化表达式;条件表达式;更新表达式) {// 循环体}```例如,打印0到9的数字:```cfor (int i = 0; i < 10; i++) {printf("%d ", i);}```以上是部分习题及答案的示例。
C语言程序设计第三版——谭浩强习题答案集docC程序设计第三版课后习题答案全解1.5请参照本章例题,编写一个C程序,输出以下信息:某某某某某某某某某某某某某某某某某某某某某某某某某某 Very Good! 某某某某某某某某某某某某某某某某某某某某某某某某某某解: mian {printf(“某某某某某某某某某某某某某某某某某某某某某某某某某某”); printf(“\\n”);printf(“Very Good!\\n”); printf(“\\n”);printf(“某某某某某某某某某某某某某某某某某某某某某某某某某某”); }1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。
解:mian{int a,b,c,ma某;printf(“请输入三个数a,b,c:\\n”);scanf(“%d,%d,%d”,&a,&b,&c); ma某=a; if(ma某printf(“最大数为:“%d”,ma某); }第三章3.6写出以下程序运行的结果。
main{char c1=’a’,c2=’b’,c3=’c’,c4=’\\101’,c5=’\\116’; printf(“a?%c\\tc%c\\tabc\\n”,c1,c2,c3);printf(“\\t\\b%c %c”,c4,c5); }解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc AㄩN3.7 要将\译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母\后面第4个字母是\.\代替\。
因此,\应译为\。
请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
解:#include 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%c\\n\ }运行结果:密码是Glmre3.9求下面算术表达式的值。
C语⾔程序设计第三版谭浩强课后习题答案完整版C语⾔程序设计第三版谭浩强课后习题答案完整版第⼀章1.5请参照本章例题,编写⼀个C程序,输出以下信息:**************************值,输出其中最⼤值。
解:mian(){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;\1aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc AㄩN3.7 要将"China"译成密码,译码规律是:⽤原来字母后⾯的第4个字母代替原来的字母.例如,字母"A"后⾯第4个字母是"E"."E"代替"A"。
因此,"China"应译为"Glmre"。
请编⼀程序,⽤赋初值的⽅法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输{是%c%c%c%c%c\n",c1,c2,c3,c4,c5); }运⾏结果:密码是Glmre3.9求下⾯算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.7(2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5(1)2.5(2)3.5设量。
(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a(5) a%=(n%=2),n的值等于5(6)a+=a-=a*=a解:(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0第四章4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a ’,c2=c1=c2=printf("a=%2d b=%2dc=%2d\n",a,b,c);printf("x=%f,y=%f,z=%f\n",x,y,z); printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);printf("u=%6ld n=%9ld\n",u,n);printf("%s %s %d%s\n","c1=’a’","or",c1,"(ASCII)");printf("%s %s %d%s\n","c2=’a’","or",c2,"(ASCII)"); }ˊA ˊ,;); 4.8设圆半径r=1.5,圆柱⾼h=3,求圆周长、圆⾯积、圆球表⾯积、圆球体积、圆柱体积。
程序是在VC6.0下编译的,所以头文件和TC的不太一样!4-8#include <iostream>#define pi 3.1415void main(){float r,h,rl,ra,ss,sv,cv;printf("输入圆的半径和圆柱的高\n\n");scanf("%f%f",&r,&h);rl=2*pi*r;ra=pi*r*r;ss=4*pi*r*r;sv=4*pi*r*r*r/3;cv=ra*h;printf("圆周长为:%f\n\n圆面积为:%f\n\n圆球表面积为:%f\n\n圆球体积为:%f\n\n 圆柱体积为:%f\n\n",rl,ra,ss,sv,cv);}4-9#include <iostream>void main(){float F,c;printf("输入一个华氏温度\n\n");scanf("%f",&F);c=5*(F-32)/9;printf("摄氏温度为:%.2f\n\n",c);}第五章5-4#include <iostream>void main(){int a,b,c,max;printf("输入三个整数a,b,c\n\n"); scanf("%d%d%d",&a,&b,&c);if(a>b) max=a;else max=b;if(max<c) max=c;printf("最大的数为:%d\n\n",max); }5-5#include <iostream>void main(){float x,y;printf("输入x\n\n");scanf("%f",&x);if(x<1) y=x;else if(x<10) y=2*x-1;else y=3*x-11;printf("y=%f\n\n",y);}5-6#include <iostream>void main(){float m;int n;printf("输入成绩\n\n");scanf("%f",&m);n=m/10;switch(n){case 0:case 1:case 2:case 3:case 4:case 5:printf("E\n\n");break;case 6:printf("D\n\n");break;case 7:printf("C\n\n");break;case 8:printf("B\n\n");break;case 9:case 10:printf("A\n\n");break;}}5-7#include <iostream>#include <math.h>void main(){int a,b,c,i,j,n;printf("输入五位正整数\n\n");scanf("%d",&a);printf("\n\n");c=a;for(i=1;;i++){b=c%10;c=c/10;printf("%d",b);if(c==0){printf("\n\n");printf("正整数为%d位数\n\n",i);break; }}c=a;for(j=i-1;j>=0;j--){n=pow(10,j);b=c/n;c=c%n;printf("%d\n",b);}}5-8if语句:#include <iostream>void main(){int I;float bonus;printf("输入当月利润I\n\n");scanf("%d",&I);if(I<=100000) bonus=I/10;else if(I<=200000) bonus=10000+(I-100000)*7.5/100;else if(I<=400000) bonus=10000+7500+(I-200000)*5/100;else if(I<=600000) bonus=10000+7500+10000+(I-400000)*3/100;else if(I<=1000000) bonus=10000+7500+10000+6000+(I-600000)*1.5/100; else bonus=10000+7500+10000+6000+6000+(I-1000000)*1/100;printf("应发奖金数为:%f\n\n",bonus);}switch语句:#include <iostream>void main(){int I,n;float bonus;printf("输入当月利润I\n\n");scanf("%d",&I);if(I>1000000) n=10;else n=I/100000;switch(n){case 0:bonus=I/10;break;case 1:bonus=10000+(I-100000)*7.5/100;break;case 2:case 3:bonus=10000+7500+(I-200000)*5/100;break;case 4:case 5:bonus=10000+7500+10000+(I-400000)*3/100;break;case 6:case 7:case 8:case 9:bonus=10000+7500+10000+6000+(I-600000)*1.5/100;break;case 10:bonus=10000+7500+10000+6000+6000+(I-1000000)*1/100;break; }printf("应发奖金数为:%f\n\n",bonus);}5-9#include <iostream>void main(){int a,b,c,d,temp,min;printf("输入四个数a,b,c,d\n\n");scanf("%d%d%d%d",&a,&b,&c,&d);if(a>b){temp=a;a=b;b=temp;}if(a>c){temp=a;a=c;c=temp;}if(a>d){temp=a;a=d;d=temp;}printf("由小到大排列为:\n\n"); printf("%d ",a);if(b>c){temp=b;b=c;c=temp;}if(b>d){temp=b;b=d;d=temp;}printf("%d ",b);if(c>d){temp=c;c=d;d=temp;}printf("%d ",c);printf("%d",d);}5-10#include <iostream>#include <math.h>void main(){float x,y,a,b,c,d;printf("输入点的坐标\n\n");scanf("%f%f",&x,&y);a=sqrt((2-x)*(2-x)+(2-y)*(2-y));b=sqrt((2-x)*(2-x)+(-2-y)*(-2-y));c=sqrt((-2-x)*(-2-x)+(-2-y)*(-2-y));d=sqrt((-2-x)*(-2-x)+(2-y)*(2-y));if(a<=1||b<=1||c<=1||d<=1) printf("该点建筑高度为:10m"); else printf("该点建筑高度为:0m");}第六章:6-1#include <iostream>#include <math.h>void main(){int m,n,max,min,i,k;printf("输入两个正整数\n\n");scanf("%d%d",&m,&n);if(m>n) k=n;else k=m;for(i=1;i<=k;i++){if((m%i==0)&&(n%i==0)) max=i;}printf("最大公约数为:%d\n\n",max);if(m>n) k=m;else k=n;for(i=k;;i++){if((i%m==0)&&(i%n==0)){min=i;break;}}printf("最小公倍数为:%d\n\n",min);}6-2#include <iostream>void main(){char c;int l=0,b=0,n=0,e=0;printf("输入一行字符\n\n");while((c=getchar())!='\n'){if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) l+=1;else if(c==' ') b+=1;else if(c>=48&&c<=57) n+=1;else e+=1;}printf("英文字母个数为:%d\n\n空格个数为:%d\n\n数字个数为:%d\n\n其他字符个数为:%d\n\n",l,b,n,e);}6-3#include <iostream>#include <math.h>void main(){int n,k,i;float a,s=0;printf("输入n和a\n\n");scanf("%d%f",&n,&a);for(i=0;i<n;i++){k=pow(10,i);s=s+(n-i)*a*k;}printf("和s=%f\n\n",s); }6-4#include <iostream>void main(){int n,s,S=0,i,j;printf("输入n\n\n");scanf("%d",&n);for(i=1;j<=n;i++){s=1;for(j=1;j<=i;j++){s=s*j;}S+=s;}printf("和S=%d\n\n",S); }6-5#include <iostream>void main(){int i,m,n,t;int s1=0,s2=0;float s3=0,s,l;printf("输入m,n,t的值\n\n");scanf("%d%d%d",&m,&n,&t);for(i=1;i<=m;i++){s1+=i;}for(i=1;i<=n;i++){s2+=i*i;}for(i=1;i<=t;i++){l=1.0/i;s3+=l;}s=s1+s2+s3;printf("和s=%f",s);}6-6#include <iostream>void main(){int m,n,k,i,j;printf("水仙花数为:\n");for(i=100;i<=999;i++){j=i;m=j%10;j=j/10;n=j%10;k=j/10;if(i==m*m*m+n*n*n+k*k*k) printf("%d ",i);}}6-7#include <iostream>#include <math.h>void main(){int i,j,k,s;for(i=1;i<=1000;i++){s=0;for(j=1;j<i;j++){if(i%j==0) s+=j;}if(s==i){printf("\n\n");printf("%d its factors are ",i); for(j=1;j<i;j++){if(i%j==0) printf("%d ",j);}}}}6-8#include <iostream>void main(){int n,i;float f1,f2,s,temp;printf("输入n\n\n");scanf("%d",&n);f1=2.0;f2=3.0;s=f1;for(i=1;i<=n-1;i++){s+=f2/f1;temp=f2;f2=f1+f2;f1=temp;}printf("前%d项和为%f",n,s);}6-9#include <iostream>#include <math.h>void main(){int i,n,l=100;float m,s=0;printf("输入n\n\n");scanf("%d",&n);m=l;for(i=1;i<=n;i++){s+=2*m;m=m*0.5;}printf("第%d次落地时经过%f米\n\n",n,s-l); printf("第%d次落地后反弹%f米\n\n",n,m); }6-10void main(){int m=1,n,i;printf("输入n\n\n");scanf("%d",&n);for(i=1;i<n;i++){m=(m+1)*2;}printf("一共摘了%d个桃子\n\n",m);}6-11#include <iostream>#include <math.h>void main(){float a,x1,x2;printf("输入a\n\n");scanf("%f",&a);x1=a/2;loop:x2=(x1+a/x1)/2;if(fabs(x1-x2)>1e-5){x1=x2;goto loop;}else printf("\n\na的平方根为%f\n\n",x2); }6-12#include <math.h>void main(){float f(float);float xpoint(float,float);float root(float,float);float x,x1,x2,f1,f2;do{printf("输入x1,x2\n\n");scanf("%f%f",&x1,&x2);f1=f(x1);f2=f(x2);}while(f1*f2>0);x=root(x1,x2);printf("方程在1.5附近的根为:%f\n\n",x); }float f(float x){float y;y=2*x*x*x-4*x*x+3*x-6;return(y);}float xpoint(float x1,float x2){float y;y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));return(y);}float root(float x1,float x2){float x,y,y1;y1=f(x1);do{x=xpoint(x1,x2);y=f(x);if(y*y1>0){y1=y;x1=x;}elsex2=x;}while(fabs(y)>1e-4);return(x);}6-13#include <iostream>#include <math.h>void main(){float f(float);float root(float,float);float x,x1,x2,f1,f2;do{printf("输入x1,x2\n\n");scanf("%f%f",&x1,&x2);f1=f(x1);f2=f(x2);}while(f1*f2>0);x=root(x1,x2);printf("方程的根为:%f\n\n",x); }float f(float x){float y;y=2*x*x*x-4*x*x+3*x-6;return(y);}float root(float x1,float x2){float x,y;do{y=f((x1+x2)/2);if(y<-1e-4){x1=(x1+x2)/2;}else if(y>1e-4){x2=(x1+x2)/2;}else x=(x1+x2)/2;}while(fabs(y)>1e-4);return(x);}6-14#include <iostream>void 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");}}6-15#include <iostream>void main(){char i,j,k;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("\nA--%c\nB--%c\nC--%c\n",i,j,k); }}}第七章7-1#include <iostream>#include <math.h>void main(){int i,j;int a[101];printf("素数为:\n\n");for(i=1;i<=100;i++){a[i]=i;}for(i=3;i<=100;i++){for(j=2;j<=sqrt(a[i]);j++){if(a[i]%j==0){a[i]=0;break;}}}for(i=2;i<=100;i++){if(a[i]!=0) printf("%d ",a[i]); }}7-2#include <iostream>void main(){int a[10],i,j,temp;printf("输入10个整数\n\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(i=0;i<10;i++){for(j=i+1;j<10;j++){if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}}printf("排序后的输出为:\n\n"); for(i=0;i<10;i++){printf("%d ",a[i]);}printf("\n\n");}7-3#include <iostream>void main(){int a[9],i,s=0;printf("输入一个3*3整型矩阵\n\n"); for(i=0;i<9;i++){scanf("%d",&a[i]);}for(i=0;i<9;i+=4){s+=a[i];}printf("对角线元素之和为:%d\n\n",s); }7-4#include <iostream>void main(){int a[11]={1,2,3,4,5,6,7,8,9,10};int i,j,n,temp1,temp2;printf("输入一个数n\n\n");scanf("%d",&n);if((a[0]-a[9])>0){if(n<=a[9]){a[10]=n;}else{for(i=0;i<10;i++)if(a[i]<n){temp1=a[i];a[i]=n;for(j=i+1;j<11;j++) {temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}}if((a[9]-a[0])>0){if(n>=a[9]){a[10]=n;}else{for(i=0;i<10;i++){if(a[i]>n){temp1=a[i];a[i]=n;for(j=i+1;j<11;j++) {temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}for(i=0;i<11;i++){printf("%d ",a[i]);}}7-5将一个数组中的值按逆序重新排列#include <iostream>#define N 5void main(){int a[N];int i,temp;printf("输入5个个数\n\n");for(i=0;i<N;i++){scanf("%d",&a[i]);}for(i=0;i<=N/2;i++){temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}for(i=0;i<N;i++){printf("%d ",a[i]);}printf("\n\n");}7-6输出杨辉三角形(要求输出10行)#include <iostream>#include <stdio.h>void main(){int a[10][10]={1};int i,j;for(i=1;i<10;i++){for(j=0;j<=i;j++){a[i][0]=a[i-1][0];a[i][j]=a[i-1][j-1]+a[i-1][j];}}for(i=0;i<10;i++){for(j=0;j<=i;j++){printf("%4d",a[i][j]);}printf("\n\n");}}7-7输出“魔方阵”。
C语言程序设计-谭浩强-第三版-课后习题答案1.5请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:mian(){printf(“**************************”);printf(“\n”);printf(“Very Good!\n”);printf(“\n”);printf(“**************************”);}1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。
解:mian(){int a,b,c,max;printf(“请输入三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf(“最大数为:“%d”,max);}第三章3.6写出以下程序运行的结果。
main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c”,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。
因此,"China"应译为"Glmre"。
请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
c语言程序设计第三版谭浩强课后习题答案
《C语言程序设计第三版谭浩强课后习题答案》
C语言程序设计是计算机科学领域中的重要一环,而谭浩强的《C语言程序设
计第三版》更是备受学生和程序员们的青睐。
在学习这门课程时,课后习题是
非常重要的一部分,通过解答习题可以加深对知识点的理解和掌握。
本文将为大家提供《C语言程序设计第三版谭浩强课后习题答案》,希望能够帮
助大家更好地学习和掌握C语言程序设计这门课程。
1. 第一章习题答案
1.1 习题1
答案:C语言程序设计是一门非常重要的编程语言,它可以用来编写各种类型
的程序,包括系统软件、应用软件、嵌入式软件等。
1.2 习题2
答案:C语言程序设计的优点包括语法简洁、执行效率高、灵活性强、可移植
性好等。
2. 第二章习题答案
2.1 习题1
答案:C语言程序的基本结构包括头文件、全局变量声明、函数声明、主函数、自定义函数等。
2.2 习题2
答案:在C语言程序中,注释的作用是对程序进行说明和解释,提高程序的可
读性。
3. 第三章习题答案
3.1 习题1
答案:C语言中的标识符是用来表示变量、函数、数组等的名称,它由字母、数字和下划线组成,且不能以数字开头。
3.2 习题2
答案:C语言中的关键字是指被编程语言保留用作特定用途的单词,比如int、float、if、else等。
通过以上习题答案的解答,相信大家对C语言程序设计的理解和掌握会更加深入。
希望大家在学习过程中能够多加练习,不断提升自己的编程能力。
祝大家学习顺利,编程愉快!。
1.5#include <stdio.h>void main(){printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");printf(" Very good! \n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");}1.6#include <stdio.h>void main(){float max(float x,float y,float z);float a,b,c;printf("请分别输入a,b,c:\n");scanf("%f,%f,%f",&a,&b,&c);printf("max=%f",max(a,b,c));}float max(float x,float y,float z){float m,n;m=x>y? x: y;n=m>z? m: z;return(n);}3.6#include <stdio.h>void main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%c b%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c\n”,c4,c5);}3.9.1#include <stdio.h>void main(){double x=2.5,y=4.7,z;int a=7;z=x+a%3*(int)(x+y)%2/4;printf("该表达式的值为:%f",z);}3.9.2#include <stdio.h>void main(){int a=2,b=3;float x=3.5,y=2.5,z;z=(float)(a+b)/2+(int)x%(int)y;printf("该表达式的值为:%f",z);}4.5#include <stdio.h>void main(){int a=5,b=7;double x=67.8564,y=-789.124;char c='A';long n=1234567;unsigned u=65535;printf("%d%d\n",a,b);printf("%3d%3d\n",a,b);printf("%f,%f\n",x,y);printf("%-10f,%-10f\n",x,y);printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);printf("%e,%10.2e\n",x,y);printf("%c,%d,%o,%x\n",n,n,n);printf("%ld,%lo,%x\n",n,n,n);printf("%u,%o,%x,%d\n",u,u,u,u);printf("请输入r,h的值:\n");scanf("%f,%f",&r,&h);l=2*pi*r;s1=pi*r*r;s2=4*s1;v1=4/3*pi*r*r*r;v2=s1*h;printf("圆周长为:%.2f\n",l);printf("圆面积为:%.2f\n",s1);printf("圆球表面积为:%.2f\n",s2); printf("圆球体积为:%.2f\n",v1); printf("圆柱体积为:%.2f\n",v2);}5.5 #include <stdio.h>void main(){float x,y;printf("请输入x的值:\n");scanf("%f",&x);if(x<1)y=x;elseif(x>=1&&x<10)y=2*x-1;elsey=3*x-11;printf("x与y的值分别为:\n%f,%f",x,y); printf("\n");}5.6 #include <stdio.h>void main(){float b;int a;printf("请输入该同学的成绩:\n");scanf("%f",&b);while (b<0||b>100){printf("输入有误,请重新输入:\n");scanf("%f",&b);}a= int(b/10);if(a<6) a=5;switch(a){case 10:case 9: printf("该同学为等级:A");break;case 8: printf("该同学为等级:B");break;case 7: printf("该同学为等级:C");break;case 6: printf("该同学为等级:D");break;case 5: printf("该同学为等级:E");break;}}#include <stdio.h>#include <math.h>void main(){int x,y,m,n,i=1,j=0;printf("请给出一个不多于5位的正整数:\n");scanf("%d",&x);while(x<=0||x>=100000){ printf("输入有误\n请给出一个不多于5位的正整数:\n");scanf("%d",&x);}for(n=0;n<5;n++){y=int(x/pow(10,n));if(y>0&&y<10)m=n+1;}printf("它是%d位数\n",m);printf("从高到低位依次为\n");do{printf(" %d",int(x/pow(10,m-i))%10);i++;}while(m-i>=0);printf("\n逆序输出为\n");do{printf(" %d",int(x/pow(10,j))%10);j++;}while(j-m<0);printf("\n");}6.1输入两个正整数m和n,求其最大公约数和最小公倍数。
1.1请参照本章例题,编写一个c程序,输出以下信息:廿**廿***甘**廿**脊*并********甘**甘**Very good!甘**甘**************************解:程序如下所示。
番include <stdio.h> int main ()( printf ("**************************\n\n"); printf (" Very Good!\n\n");printf ("**************************\n n); return 0;运行结果如下:****************************** Very good!#******#**#******#**#***#**#**1.2编写一个C程序,输入a、b、c3个值,输出其中最大者。
解:程序如下所示。
番include <stdio.h>int main(){int a,b, c,max;printf ("please input a,b,c: \n");scanf %d",&a,Sb/ &c);max=a;if (max<b)max=b;if (max<c)max=c;printf ("The largest number is % d\n*\max);return 0;运行结果如下:please input a,b,c:38,93,-84The largest number is 931.3上机运行本章3个例题,熟悉所用系统的上机方法与步骤。
解:略。
1.4上机运行你为本章习题1.1和4题1.2所编写的程序。
解:略。
2. 1假如我国国民生产总值的年增长率为10%,汁界10年后我国国民生产总值与现在相比增长多少。
汁箅公式为:P=(l + r)n「为年增长率,〃为年数,P为与现在相比的百分比。