《C语言程序设计》课后习题答案(第四版)谭浩强

《C语言程序设计》课后习题答案(第四版)谭浩强
《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言1

1.1什么是计算机程序1

1.2什么是计算机语言1

1.3C语言的发展及其特点3

1.4最简单的C语言程序5

1.4.1最简单的C语言程序举例6

1.4.2C语言程序的结构10

1.5运行C程序的步骤与方法12

1.6程序设计的任务14

1-5 #include

int main ( )

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

printf(" Very Good!\n\n");

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

return 0;

}

1-6#include

int main()

{int a,b,c,max;

printf("please input a,b,c:\n");

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

max=a;

if (max

max=b;

if (max

max=c;

printf("The largest number is %d\n",max); return 0;

}

第2章算法——程序的灵魂16

2.1什么是算法16

2.2简单的算法举例17

2.3算法的特性21

2.4怎样表示一个算法22

2.4.1用自然语言表示算法22

2.4.2用流程图表示算法22

2.4.3三种基本结构和改进的流程图26

2.4.4用N S流程图表示算法28

2.4.5用伪代码表示算法31

2.4.6用计算机语言表示算法32

2.5结构化程序设计方法34

习题36

第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37

3.2数据的表现形式及其运算39

3.2.1常量和变量39

3.2.2数据类型42

3.2.3整型数据44

3.2.4字符型数据47

3.2.5浮点型数据49

3.2.6怎样确定常量的类型51

3.2.7运算符和表达式52

3.3C语句57

3.3.1C语句的作用和分类57

3.3.2最基本的语句——赋值语句59

3.4数据的输入输出65

3.4.1输入输出举例65

3.4.2有关数据输入输出的概念67

3.4.3用printf函数输出数据68

3.4.4用scanf函数输入数据75

3.4.5字符数据的输入输出78

习题82

3-1 #include

#include

int main()

{float p,r,n;

r=0.1;

n=10;

p=pow(1+r,n);

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

return 0;

}

3-2-1

#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-2-2

#include

#include

int main()

{double 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-2-3

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

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

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

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

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

return 0;

}

3-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;

}

3-4

#include

int main()

{int c1,c2;

c1=197;

c2=198;

printf("c1=%c,c2=%c\n",c1,c2);

printf("c1=%d,c2=%d\n",c1,c2);

return 0;

}

3-5

#include

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

printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);

return 0;

}

3-6

#include

int main()

{char c1='C',c2='h',c3='i',c4='n',c5='a';

c1=c1+4;

c2=c2+4;

c3=c3+4;

c4=c4+4;

c5=c5+4;

printf("passwor is %c%c%c%c%c\n",c1,c2,c3,c4,c5);

return 0;

}

3-7

#include

int main ()

{float h,r,l,s,sq,vq,vz;

float pi=3.141526;

printf("请输入圆半径r,圆柱高h∶");

scanf("%f,%f",&r,&h); //要求输入圆半径r和圆柱高h l=2*pi*r; //计算圆周长l

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("圆周长为: l=%6.2f\n",l);

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

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

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

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

return 0;

}

3-8-1

#include

int main()

{

int c1,c2; //整型定义

printf("请输入两个整数c1,c2:");

scanf("%d,%d",&c1,&c2);

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

printf("%c,%c\n",c1,c2);

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

printf("%d,%d\n",c1,c2);

return 0;

}

3-8-2

#include

int main()

{

char c1,c2; //定义字符型变量int i1,i2; //定义整型变量printf("请输入两个字符c1,c2:");

scanf("%c,%c",&c1,&c2);

i1=c1; //赋值给整型变量i2=c2;

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

printf("%c,%c\n",i1,i2);

printf("按整数输出结果:\n");

printf("%d,%d\n",c1,c2);

return 0;

}

3-8-3

#include

int main()

{

char c1,c2; //定义为字符型

int i1,i2; //定义为整型

printf("请输入两个整数i1,i2:");

scanf("%d,%d",&i1,&i2);

c1=i1; //将整数赋值给字符变量c2=i2;

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

printf("%c,%c\n",c1,c2);

printf("按整数输出结果:\n");

printf("%d,%d\n",c1,c2);

return 0;

}

3-8

#include

int main()

{

char c1,c2;

printf("请输入两个字符c1,c2:");

c1=getchar();

c2=getchar();

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

putchar(c1);

putchar(c2);

printf("\n");

printf("用printf语句输出结果为:");

printf("%c %c\n",c1,c2);

return 0;

}

第4章选择结构程序设计85

4.1选择结构和条件判断85

4.2用if语句实现选择结构87

4.2.1用if语句处理选择结构举例87

4.2.2if语句的一般形式89

4.3关系运算符和关系表达式91

4.3.1关系运算符及其优先次序91

4.3.2关系表达式92

4.4逻辑运算符和逻辑表达式92

4.4.1逻辑运算符及其优先次序93

4.4.2逻辑表达式94

4.4.3逻辑型变量96

4.5条件运算符和条件表达式97

4.6选择结构的嵌套99

4.7用switch语句实现多分支选择结构102

4.8选择结构程序综合举例105

习题111

4-4-1

#include

int main()

{

int a,b,c;

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

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

if (a

if (b

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

else

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

else if (a

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

else

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

return 0;

}

4-4-2

#include

int main()

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

return 0;

}

4-5-2

#include

#include

#define M 1000

int main()

{

int i,k;

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

scanf("%d",&i);

while (i>M)

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

scanf("%d",&i);

}

k=sqrt(i);

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

return 0;

}

4-5

#include

#include

#define M 1000

int main()

{

int i,k;

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

scanf("%d",&i);

if (i>M)

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

scanf("%d",&i);

}

k=sqrt(i);

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

return 0;

}

4-6.

#include

int main()

{ int x,y;

printf("输入x:");

scanf("%d",&x);

if(x<1) /* x<1 */

{ y=x;

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

}

else if(x<10) /* 1=

{ y=2*x-1;

printf("x=%d, y=2*x-1=%d\n",x,y);

}

else /* x>=10 */

{ y=3*x-11;

printf("x=%d, y=3*x-11=%d\n",x,y);

}

return 0;

}

4-7-1

#include

int main()

{

int x,y;

printf("enter x:");

scanf("%d",&x);

y=-1;

if(x!=0)

if(x>0)

y=1;

else

y=0;

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

return 0;

}

4-7-2

#include

int main()

{

int x,y;

printf("please enter x:");

scanf("%d",&x);

y=0;

if(x>=0)

if(x>0) y=1;

else y=-1;

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

return 0;

}

4-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;

}

4-9

#include

#include

int main()

{

int num,indiv,ten,hundred,thousand,ten_thousand,place; //分别代表个位,十位,百位,千位,万位和位数

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

scanf("%d",&num);

if (num>9999)

place=5;

else if (num>999)

place=4;

else if (num>99)

place=3;

else if (num>9)

place=2;

else place=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)

{case 5: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;

case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);

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

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

break;

case 3:printf("%d,%d,%d",hundred,ten,indiv);

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

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

break;

case 2:printf("%d,%d",ten,indiv);

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

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

break;

case 1:printf("%d",indiv);

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

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

break;

}

return 0;

}

4-10-1

#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;

}

4-10-2

#include

int main()

{

int i;

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

int branch;

bon1=100000*0.1;

bon2=bon1+100000*0.075;

bon4=bon2+200000*0.05;

bon6=bon4+200000*0.03;

bon10=bon6+400000*0.015;

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

scanf("%d",&i);

branch=i/100000;

if (branch>10) branch=10;

switch(branch)

{ case 0:bonus=i*0.1;break;

case 1:bonus=bon1+(i-100000)*0.075;break;

case 2:

case 3: bonus=bon2+(i-200000)*0.05;break;

case 4:

case 5: bonus=bon4+(i-400000)*0.03;break;

case 6:

case 7:

case 8:

case 9: bonus=bon6+(i-600000)*0.015;break;

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

}

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

return 0;

}

4-11

#include

int main()

{int t,a,b,c,d;

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

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

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

return 0;

}

4-12

#include

int main()

{

int h=10;

float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;

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

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

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

d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);

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

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

if (d1>1 && d2>1 && d3>1 && d4>1) h=0; /*判断该点是否在塔外*/

printf("该点高度为%d\n",h);

return 0;

}

第5章循环结构程序设计114

5.1为什么需要循环控制114

5.2用while语句实现循环115

5.3用do…while语句实现循环117

5.4用for 语句实现循环120

5.5循环的嵌套124

5.6几种循环的比较125

5.7改变循环执行的状态125

5.7.1用break语句提前终止循环126

5.7.2用continue语句提前结束本次循环127

5.7.3break语句和continue语句的区别128

5.8循环程序举例131

习题140

5-2

#include

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

{

int sign=1,count=0; // sign用来表示数值的符号,count用来统计循环次数double pi=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); // 输出循环次数

return 0;

}

5-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;

}

5-4

#include

int main()

{

char c;

int letters=0,space=0,digit=0,other=0;

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

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

{

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

letters++;

else if (c==' ')

space++;

else if (c>='0' && c<='9')

digit++;

else

other++;

}

printf("字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n",letters,space,digit,other);

return 0;

}

5-5

#include

int main()

{

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

return 0;

}

5-6

#include

int main()

{double s=0,t=1;

int n;

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

{

t=t*n;

s=s+t;

}

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

return 0;

}

5-7

#include

int main()

{

int n1=100,n2=50,n3=10;

double k,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);

return 0;

}

5-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;

}

5-9-1

#define M 1000 /*定义寻找范围*/

#include

int main()

{

int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;

int i,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 */

{case 1:

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

case 2:

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

case 3:

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

case 4:

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

case 5:

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

case 6:

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

case 7:

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

case 8:

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

case 9:

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

case 10:

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

}

}

if (s==0)

{

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

}

}

return 0;

}

5-9-2

#include

int main()

{int m,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,its factors are ",m);

for (i=1;i

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

printf("\n");

}

}

return 0;

}

5-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;

}

5-11

#include

int main()

{

double sn=100,hn=sn/2;

int n;

《c++程序设计》谭浩强课后习题答案

第一章 1.5题 #include using namespace std; int main() { cout<<"This"<<"is"; cout<<"a"<<"C++"; cout<<"program."; return 0; 1.6题 #include using namespace std; int main() { int a,b,c; a=10; b=23; c=a+b; cout<<"a+b="; cout< using namespace std; int main() { int a,b,c; int f(int x,int y,int z); cin>>a>>b>>c; c=f(a,b,c); cout< using namespace std; int main() { int a,b,c; cin>>a>>b; c=a+b; cout<<"a+b="< using namespace std; int main() { int a,b,c; int add(int x,int y); cin>>a>>b; c=add(a,b);

(完整版)谭浩强c程序设计课后习题答案

谭浩强c++程序设计课后答案 娄警卫

第一章1.5题 #include using namespace std; int main() { cout<<"This"<<"is"; cout<<"a"<<"C++"; cout<<"program."; return 0; 1.6题 #include using namespace std; int main() { int a,b,c; a=10; b=23; c=a+b; cout<<"a+b="; cout< using namespace std; int main() { int a,b,c; int f(int x,int y,int z); cin>>a>>b>>c; c=f(a,b,c); cout< using namespace std; int main() { int a,b,c; cin>>a>>b; c=a+b; cout<<"a+b="< using namespace std; int main() { int a,b,c; int add(int x,int y); cin>>a>>b; c=add(a,b); cout<<"a+b="<

C语言程序设计第三版谭浩强课后习题答案完整版

1.5 #include void main() { printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf(" Very good! \n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); } 1.6 #include 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 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 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 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 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);

C语言程序设计第三版谭浩强课后习题答案完整版

1.6 编写一个程序,输入a、b、c 三个值,输出其中最大值。 课后习题答案完整版 第一章 1.5 请参照本章例题,编写一个C 程序,输出以下信息: ************************** Very Good! ************************** 解:mian() {int a,b,c,max; printf( “请输入三个数a,b,c:\n ” ); scanf( “%d,%d,%”d ,&a,&b,&c); C语言程序设计第三版谭浩强 解: mian() {printf( ”); “************************** printf( “”X “ n” ); printf( “Very Good!” \ n”); printf( “”X “ n” ); printf( “************************** ); max=a; if(max

{char #include c1='a',c2='b',c3= 'c',c4= ' \101 ',c5= ' 116'; printf( “a%cb%c n”,c1,c2,c 3); printf( “ b%c %c” ,c4,c5); } 解: aa 口bb 口口口cc 口口口口口口abc A 口N 3.7 要将"China" 译成密码,译码规律是:用原来字母后面的第 4 个字母代替原来的字母.例如,字母"A" 后面第 4 个字母是"E" . "E"代替"A"。因此,"China"应译为"Glmre" 。请编一程序,用赋初值的方法使cl 、c2、c3、c4、c5 五个变量的值分别为, ' C'、h'、i '、n'、a'经过运算,使cl、c2、c3、c4、c5分别变为'G'、' I '、' m >' r'、’ e',并输出。main() { char c1=' C' ,c2=' h' ,c3= ' i ' ,c4= ' n' ,c 5=' a' ; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf(" 密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是GImre 3.9 求下面算术表达式的值。 解: 1 )x+a%3*(int)(x+y)%2/4

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强课后习题答案完整版Last revision on 21 December 2020

C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 请参照本章例题,编写一个C程序,输出以下信息: ************************** Very Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“Very Good!\n”); printf(“\n”); printf(“**************************”); } 编写一个程序,输入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 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",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 求下面算术表达式的值。

C程序设计第四版谭浩强完整版课后习题答案

C程序设计第四版谭浩强完整版课后习题答案集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

C程序设计(第四版)(谭浩强)第一章课后习题答案 P006 向屏幕输出文字. #include<>代码均调试成功,若有失误大多不是代码问题.自已找找. int main() { printf("Welcome to \n"); return 0; } P008 求两个数的和. #include<> int main() { int a,b,sum; a=5; b=4; sum=a+b; printf("The sum is %d .\n",sum);

return 0; } P008 调用函数比较两个数的大小. #include<> int main() { int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("The max is %d .\n",c); return 0; } int max(int x,int y) { int z; if (x>y) z=x; else z=y; return(z); }

P015 三个数的大小.(数字0表示课后练习题) #include<> int main() { int a,b,c,d; int max(int x , int y , int z); printf("Please input 3 numbers :\n"); scanf("%d %d %d",&a,&b,&c); d=max(a,b,c); printf("The max is :%d .\n",d); } int max(int x , int y , int z) { int m; if (x>y && x>z) m=x; if (y>x && y>z) m=y; if (z>y && z>x) m=z; return (m); }

《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6#include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

2.5结构化程序设计方法34 习题36

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery 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 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",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.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 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。 (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=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII)

C程序设计第四版谭浩强完整版课后习题答案

C程序设计第四版谭浩强完整版课后习题答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C程序设计(第四版)(谭浩强)第一章课后习题答案 #include<>代码均调试成功,若有失误大多不是代码问题.自已找找. int main() { printf("Welcome to \n"); return 0; } #include<> int main() { int a,b,sum; a=5; b=4; sum=a+b; printf("The sum is %d .\n",sum); return 0; } P008 调用函数比较两个数的大小. #include<> int main() { int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("The max is %d .\n",c); return 0; } int max(int x,int y) { int z; if (x>y) z=x; else z=y; return(z); }

P015 三个数的大小.(数字0表示课后练习题) #include<> int main() { int a,b,c,d; int max(int x , int y , int z); printf("Please input 3 numbers :\n"); scanf("%d %d %d",&a,&b,&c); d=max(a,b,c); printf("The max is :%d .\n",d); } int max(int x , int y , int z) { int m; if (x>y && x>z) m=x; if (y>x && y>z) m=y; if (z>y && z>x) m=z; return (m); } C程序设计(第四版)(谭浩强)第2章课后 习题答案 算法——程序的灵魂 P017 计算机1-5相乘的积. #include<> int main() { int i,s=1; for(i=1;i<6;i++) { s=s*i; n",s); return 0; } #include<> int main() { int i,s=1; for(i=1;i<12;i++) 可以是i=i+2 { if(i%2!=0) s=s*i; else continue; }

《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言1 什么是计算机程序1 什么是计算机语言1 语言的发展及其特点3 最简单的C语言程序5 最简单的C语言程序举例6 语言程序的结构10 运行C程序的步骤与方法12 程序设计的任务14 1-5 #include <> int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6#include <> int main() {int a,b,c,max; printf("please input a,b,c:\n");

scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

数据类型42 整型数据44 字符型数据47 浮点型数据49 怎样确定常量的类型51 运算符和表达式52 语句57 语句的作用和分类57 最基本的语句——赋值语句59 数据的输入输出65 输入输出举例65 有关数据输入输出的概念67 用printf函数输出数据68 用scanf函数输入数据75 字符数据的输入输出78 习题82 3-1 #include <> #include <> int main() {float p,r,n; r=; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0;

c面向对象程序设计课后习题答案(谭浩强版)

第一章5: #include using namespace std; int main() { cout<<"This"<<"is"; cout<<"a"<<"C++"; cout<<"program."< using namespace std; int main() { int a,b,c; a=10; b=23; c=a+b; cout<<"a+b="; cout< using namespace std; int main() { int a,b,c; int f(int x,int y,int z); cin>>a>>b>>c; c=f(a,b,c); cout<

else m=y; if (z using namespace std; int main() { int a,b,c; cin>>a>>b; c=a+b; cout<<"a+b="< using namespace std; int main() {int add(int x,int y); int a,b,c; cin>>a>>b; c=add(a,b); cout<<"a+b="< using namespace std; int main() {void sort(int x,int y,int z); int x,y,z; cin>>x>>y>>z;

谭浩强C++课后习题答案

第1章 谭浩强C++课后习题答案 1.请根据你的了解,叙述C++ 的特点。C++ 对C有哪些发展? 【解】略。 2.一个C++的程序是由哪几部分构成的?其中的每一部分起什么作用? 【解】略。 3.从拿到一个任务到得到最终结果,一般要经过几个步骤? 【解】略。 4.请说明编辑、编译、连接的作用。在编译后得到的目标文件为什么不能直接运行? 【解】编译是以源程序文件为单位进行的,而一个完整的程序可能包含若干个程序文件,在分别对它们编译之后,得到若干个目标文件(后缀一般为.obj),然后要将它们连接为一个整体。此外,还需要与编译系统提供的标准库相连接,才能生成一个可执行文件(后缀为.exe)。不能直接运行后缀为.obj的目标文件,只能运行后缀为.exe的可执行文件。 5.分析下面程序运行的结果。 #include using namespace std; int main( ) { cout<<" This "<<" is "; cout<<" a "<<" C++ "; cout<<"program. " << endl; return 0; } 【解】输出的结果为 ThisisaC++program.

C++面向对象程序设计题解与上机指导 4 6.分析下面程序运行的结果。 #include using namespace std; int main( ) { int a,b,c; a=10; b=23; c=a+b; cout<<" a+b="; cout< using namespace std; int main( ) { int a,b,c; int f(int x,int y,int z); cin>>a>>b>>c; c=f(a,b,c); cout<

C程序设计(第四版)(谭浩强)完整版 课后习题答案

C程序设计(第四版)(谭浩强)第一章课后习题答案 P006 1.1 向屏幕输出文字. #include//预编译. 代码均调试成功,若有失误大多不是代码问题.自已找找. int main() { printf("Welcome to https://www.360docs.net/doc/1c18643271.html,\n"); return 0; //与int main对应,为了程序可移植性,建议全用int main + return 0;. } P008 1.2 求两个数的和. #include int main() { int a,b,sum; a=5; b=4; sum=a+b; printf("The sum is %d .\n",sum); return 0; } P008 1.3 调用函数比较两个数的大小. #include int main() { int max(int x,int y); //被调用函数在主函数后面,用前先声明. int a,b,c; scanf("%d,%d",&a,&b); //输入时要按格式来,此处的逗号,用空格会发生错误. c=max(a,b); //a,b作为实参传入被调用函数中. printf("The max is %d .\n",c); return 0;

} int max(int x,int y) //定义了两个形参. { int z; //z属于局部变量,可与主函数中相同名字. if (x>y) z=x; else z=y; return(z); //z作为整个程序的出口值,赋给主函数中的c. } P015 0.6 三个数的大小.(数字0表示课后练习题) #include int main() { int a,b,c,d; //d是用于存储最大值的. int max(int x , int y , int z); //测试可知,在VS2008中,可以不预先声明. printf("Please input 3 numbers :\n"); scanf("%d %d %d",&a,&b,&c); d=max(a,b,c); //调用函数中有三个形参,这里需要传入三个实参,才可运算. printf("The max is :%d .\n",d); // d可以换成max(a,b,c). } int max(int x , int y , int z) { int m; if (x>y && x>z) //求三者之大的一种方法. m=x; if (y>x && y>z) m=y; if (z>y && z>x) m=z; return (m); //返回值m给主函数中的d. } C程序设计(第四版)(谭浩强)第2章课 后习题答案 算法——程序的灵魂

c语言程序设计第三版谭浩强课后习题答案.doc

c 语言程序设计第三版谭浩强课后习题 答案 【篇一:c 语言程序设计第三版谭浩强课后习题答案完 整版】 ude 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=xy? x: y; n=mz? m: z; return(n); } 3.6 #include stdio.h void main() { char c1= ’a’,c2= ’b’,c3= ’1c0’1’,c4,c=5’= 1’16’; printf( “a%c b%c n”,c1,c2,c3); printf( “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

C程序设计(第四版)_谭浩强_第四章_课后习题答案

选择结构程序设计 P086 4.1 一无二次方程求根的二分支. #include #include int main() { double a,b,c,disc,x1,x2,p,q; scanf("%lf %lf %lf",&a,&b,&c); disc=b*b-4*a*c; if(disc<0) //这是选择结构和其判断条件的示例. printf("This equation hasn't real roots\n"); else { p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf("x1=%7.2f\nx2=%7.2f",x1,x2); } return 0; } P087 4.2 二个数按大小输出. #include int main() //此程序代表按大小顺序输出. { float a,b,t; scanf("%f %f",&a,&b); //出错时,注意检查这里是否按格式输入了.比如有个逗号. if(a>b) { t=a; a=b; b=t; } printf("%5.2f,%5.2f\n",a,b);

return 0; } P088 4.3 三个数按大小输出. #include int main() //此程序代表按大小顺序输出. { float a,b,c,t; scanf("%f %f %f",&a,&b,&c); if(a>b) //此处执行后,a为小者. { t=a; a=b; b=t; } if(a>c) //此处执行后,a为小者. { t=a; a=c; c=t; } if(b>c) //上面已经搞定a是最小者,现在对比得出次小者,并且已经归到变量中. { t=b; b=c; c=t; } printf("%5.2f,%5.2f%5.2f\n",a,b,c); return 0; } P099 4.4 判断输入字符,并最终按小写输出. #include int main() { char ch; scanf("%c",&ch);

语言程序设计第二版谭浩强章课后习题答案清华大学出版社

原题:打印出下题的结果 main() { int a=5,b=7; float x=,y=; 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("%,%,%4f,%4f,%3f,%3f\n",x,y,x,y,x,y); printf("%e,%\n",x,y); printf("%c,%d,%o,%x\n",c,c,c,c); printf("%ld,%lo,%x\n",n,n,n); printf("%u,%o,%x,%d\n",u,u,u,u); printf("%s,%\n","COMPUTER","COMPUTER"); } 结果: 57 5 7 , , , ,,,, +01, +02 A,65,101,41 1234567,4553207,d687 65535,177777,ffff,-1 COMPUTER, COM 4-6 原题: 用下面的scanf函数输入数据,使a=3,b=7,x=,y=,c1='A',c2='a'。问在键盘上如何输入main() { int a,b; float x,y; char c1,c2; scanf("a=%d,_b=%d",&a,&b); scanf("_%f_%e",&x,7y); scanf("_%c_%c",&c1,&c2);

答案: 输入格式为: a=3,b=7 A a 4-7 原题:用下面的scanf函数输入数据使a=10,b=20,c1='A',c2='a',x=,y= z=,请问在键盘上如何输入数据 scanf("%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z); 答案: 输入格式为: 10 , 友情提示:10与20之间是3个空格,而那个是随便一个浮点数即可。 4-8 原题: 设圆半径r=,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积,用scanf输入数据,输出结果,输出时要求有文字说明,取小数点后2位数字,请编写程序。 答案: #define PI main() { int h; float r; float cubage1,cubage2,per,area,facearea; clrscr(); printf("please input the circle's radii\n"); scanf("%f",&r); clrscr(); printf("please input the cylinder's height\n"); scanf("%d",&h); per=2*PI*r; area=PI*r*r; facearea=4*PI*r*r; cubage1=4/3*PI*r*r*r; cubage2=area*h; clrscr();

c++程序设计谭浩强课后习题答案(完整版)

c++程序设计谭浩强课后习题答案(完整版) -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

第八章 #include using namespace std; class Time {public: //成员改为公用的 int hour; int minute; int sec; }; Time t; void set_time(void) //在 main 函数之前定义 { cin>>t.hour; cin>>t.minute; cin>>t.sec; } void show_time(void) //在 main 函数之前定义 { cout< using namespace std; class Time {public: void set_time(void) {cin>>hour; cin>>minute; cin>>sec; } void show_time(void)

{cout< using namespace std; class Time {public: void set_time(void); void show_time(void); private: int hour; int minute; int sec; }; void Time::set_time(void) {cin>>hour; cin>>minute; cin>>sec; } void Time::show_time(void) {cout<

相关文档
最新文档