c语言程序设计教程答案高职高专(c语言程序设计实用教程答案)

程序设计 1633
本篇文章给大家谈谈c语言程序设计教程答案高职高专,以及c语言程序设计实用教程答案对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、c语言程序设计能力教程答案

本篇文章给大家谈谈c语言程序设计教程答案高职高专,以及c语言程序设计实用教程答案对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

c语言程序设计能力教程答案

1 【C语言】《C语言程序设计教程(第二版)》习题答案

说 明

1. 本文所指的《C语言程序设计教程(第二版)》是李凤霞主编、北京理

工大学出版社出版的,绿皮。

2 第1章 程序设计基础知识

一、单项选择题(第23页)

1-4.CBBC 5-8.DACA

二、填空题(第24页)

1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言 7.有穷性 8.直到型循环 9.算法 10.可读性 11.模块化 12.对问题的分析和模块的划分

三、应用题(第24页)

2.源程序:

main()

{int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */ brprintf("cock hen chick\n"); brfor(i=1;i=20;i++) brfor(j=1;j=33;j++) brfor(k=1;k=33;k++) brif (i+j+k*3==100i*5+j*3+k==100) brprintf(" %d %d %d\n",i,j,k*3);}

执行结果:

cock hen chick

4 18 78

8 11 81

12 4 84

3.现计算斐波那契数列的前20项。

递推法 源程序:

main()

{long a,b;int i; bra=b=1; brfor(i=1;i=10;i++) /*要计算前30项,把10改为15。*/ br{printf("%8ld%8ld",a,b); bra=a+b;b=b+a;}}

递归法 源程序:

main()

{int i; brfor(i=0;i=19;i++) brprintf("%8d",fib(i));}

fib(int i)

{return(i=1?1:fib(i-1)+fib(i-2));}

执行结果:

1 1 2 3 5 8 13 21 34 55

89 144 233 377 610 987 1597 2584 4181 6765

4.源程序:

#include "math.h";

main()

{double x,x0,deltax; brx=1.5; brdo {x0=pow(x+1,1./3); brdeltax=fabs(x0-x); brx=x0; br}while(deltax1e-12);

printf("%.10f\n",x);}

执行结果:

1.3247179572

5.源程序略。(分子、分母均构成斐波那契数列)

结果是32.66026079864

6.源程序:

main()

{int a,b,c,m; brprintf("Please input a,b and c:"); brscanf("%d %d %d",a,b,c); brif(ab){m=a;a=b;b=m;}

if(ac){m=a;a=c;c=m;}

if(bc){m=b;b=c;c=m;}

printf("%d %d %d\n",a,b,c);}

执行结果:

Please input a,b and c:123 456 789

789 456 123

7.源程序:

main()

{int a; brscanf("%d",a); brprintf(a%21==0?"Yes":"No");}

执行结果:

42

Yes

3 第2章 C语言概述

一、单项选择题(第34页)

1-4.BDCB 5-8.AABC

二、填空题(第35页)

1.主 2.C编译系统 3.函数 函数 4.输入输出 5.头 6. .OBJ 7.库函数 8.文本

三、应用题(第36页)

5.sizeof是关键字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是标识符。

8.源程序:

main()

{int a,b,c; brscanf("%d %d",a,b); brc=a;a=b;b=c; brprintf("%d %d",a,b);}

执行结果:

12 34

34 12

4 第3章 数据类型与运算规则

一、单项选择题(第75页)

1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB

二、填空题(第77页)

1.补码 2.±(10^-308~10^308) 3.int(整数) 4.单目 自右相左 5.函数调用 6.a或b 7.1 8.65,89

三、应用题(第78页)

1.10 9

2.执行结果:

11

12

1

5 第4章 顺序结构程序设计

一、单项选择题(第90页)

1-5.DCDAD 6-10.BACBB

二、填空题(第91页)

1.一 ;2. 5.169000 3.(1)-2002500 (2)I=-200,j=2500 (3)i=-200

j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf("%lf%lf%lf",a,b,c); 9. 13 13.000000,13.000000 10.a=a^c;c=c^a;a=a^c;(这种算法不破坏b的值,也不用定义中间变量。)

三、编程题(第92页)

1.仿照教材第27页例2-1。

2.源程序:

main()

{int h,m; brscanf("%d:%d",h,m); brprintf("%d\n",h*60+m);}

执行结果:

9:23

563

3.源程序:

main()

{int a[]={-10,0,15,34},i;

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

printf("%d\370C=%g\370F\t",a[i],a[i]*1.8+32);}

执行结果:

-10℃=14°F 0℃=32°F 15℃=59°F 34℃=93.2°F

4.源程序:

main()

{double pi=3.14159265358979,r=5; brprintf("r=%lg A=%.10lf S=%.10lf\n",r,2*pi*r,pi*pi*r);}

执行结果:

r=5 A=31.4159265359 S=49.3480220054

5.源程序:

#include "math.h";

main()

{double a,b,c; brscanf("%lf%lf%lf",a,b,c); brif (a+bca+cbb+ca) br{double s=(a+b+c)/2; brprintf("SS=%.10lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));}

else printf("Data error!");}

执行结果:

4 5 6

SS=9.9215674165

6.源程序:

main()

{int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56; brprintf("a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n",a,b,c,d,e,f);}

7.源程序:

main()

{int a,b,c,m; brscanf("%d %d %d",a,b,c); brm=a;a=b;b=c;c=m; brprintf("%d %d %d\n",a,b,c);}

执行结果:

5 6 7

6 7 5

8.源程序:

main()

{int a,b,c; brscanf("%d %d %d",a,b,c); brprintf("average of %d,%d and %d is %.2f\n",a,b,c,(a+b+c)/3.); br执行结果: br6 7 9 braverage of 6,7 and 9 is 7.33 br9.不能。修改后的源程序如下: brmain() br{int a,b,c,x,y; brscanf("%d %d %d",a,b,c); brx=a*b;y=x*c; brprintf("a=%d,b=%d,c=%d\n",a,b,c); brprintf("x=%d,y=%d\n",x,y);}

6 第5章 选择结构程序设计

一、单项选择题(第113页)

1-4.DCBB 5-8.DABD

二、填空题(第115页)

1.非0 0 2.k==0

3.if (abs(x)4) printf("%d",x);else printf("error!");

4.if((x=1x=10||x=200x=210)x1)printf("%d",x);

5.k=1 (原题最后一行漏了个d,如果认为原题正确,则输出k=%。)

6. 8! Right!11 7.$$$a=0 8.a=2,b=1

三、编程题(第116页)

1.有错。正确的程序如下:

main()

{int a,b,c; brscanf("%d,%d,%d",a,b,c); brprintf("min=%d\n",ab?bc?c:b:ac?c:a);}

2.源程序:

main()

{unsigned long a; brscanf("%ld",a); brfor(;a;printf("%d",a%10),a/=10);}

执行结果:

12345

54321

3.(1)源程序:

main()

{int x,y; brscanf("%d",x); brif (x-5x0)y=x; brif (x=0x5)y=x-1; brif (x=5x10)y=x+1; brprintf("%d\n",y);}

(2)源程序:

main()

{int x,y; brscanf("%d",x); brif(x10) if(x-5) if(x=0) if(x=5)y=x+1; brelse y=x-1; else y=x; brprintf("%d\n",y);}

(3)源程序:

main()

{int x,y; brscanf("%d",x); brif(x10) if(x=5)y=x+1; brelse if(x=0)y=x-1; brelse if(x-5)y=x; brprintf("%d\n",y);}

(4)源程序:

main()

{int x,y; brscanf("%d",x); brswitch(x/5) br{case -1:if(x!=-5)y=x;break; brcase 0:y=x-1;break; brcase 1:y=x+1;}

printf("%d\n",y);}

4.本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。

现给出Delphi源程序和C++ Builder源程序。

Delphi源程序:

procedure TForm1.Button1Click(Sender: TObject);

begin

edit3.Text:=format('%.0f天',[strtodate(edit2.text) -strtodate(edit1.text)]);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit2.Text:=datetostr(now);

button1click(form1)

end;

C++ Builder源程序:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Edit3-Text=IntToStr(StrToDate(Edit2-Text)-StrToDate(Edit1-Text))+"天";

}

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Edit2-Text=DateToStr(Now());

Button1Click(Form1);

}

执行结果:(运行于Windows下)

5.源程序:

main()

{unsigned a,b,c; brprintf("请输入三个整数:"); brscanf("%d %d %d",a,b,c); brif(abca==ba==c)printf("构成等边三角形\n"); brelse if(a+bca+cbb+ca) brif(a==b||a==c||b==c)printf("构成等腰三角形\n"); brelse printf("构成一般三角形\n"); brelse printf("不能构成三角形\n");}

执行结果:

请输入三个整数:5 6 5

构成等腰三角形

6.源程序:

main()

{int x,y; brscanf("%d",x); brif(x20)y=1; brelse switch(x/60) br{case 0:y=x/10;break; brdefault:y=6;}

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

7.源程序:

main()

{unsigned m;float n; brscanf("%d",m); brif(m100)n=0; brelse if(m600)n=0.06; brelse n=(m/100+0.5)/100; brprintf("%d %.2f %.2f\n",m,m*(1-n),m*n);}

执行结果:

450

450 429.75 20.25

8. 2171天(起始日期和终止日期均算在内)

本题可利用第4小题编好的程序进行计算。把起始日期和终止日期分别打入“生日”和“今日”栏内,单击“实足年龄”按钮,将所得到的天数再加上1天即可。

9.源程序:

#include "math.h";

main()

{unsigned long i; brscanf("%ld",i); brprintf("%ld %d\n",i%10,(int)log10(i)+1);}

执行结果:

99887

7 5

10.源程序:

main()

{unsigned long i;unsigned j[10],m=0; brscanf("%ld",i); brfor(;i;){j[m++]=(i+2)%10;i/=10;}

for(;m;m--)i=i*10+j[m-1];

printf("%ld\n",i);}

执行结果:

6987

8109

(注:要加密的数值不能是0或以0开头。如果要以0开头需用字符串而不能是整数。)

7 第6章 循环结构程序设计

一、单项选择题(第142页)

1-4.BCCB 5-8.CBCA

二、填空题(第143页)

1.原题可能有误。如无误,是死循环 2.原题有误。如果把b=1后面的逗号改为分号,则结果是8。 3.20 4.11 5. 2.400000 6.*#*#*#$ 7.8 5 2 8.①d=1.0 ②++k ③k=n 9.①x=0 ②xamin

三、编程题(第145页)

1. 源程序:

main()

{int i=1,sum=i; brwhile(i101){sum+=i=-i-2;sum+=i=-i+2;}

printf("%d\n",sum);}

执行结果:

51

2.源程序:

main()

{double p=0,n=0,f;int i; brfor(i=1;i=10;i++) br{scanf("%lf",f); brif (f0)p+=f; else n+=f;}

printf("%lf %lf %lf\n",p,n,p+n);}

3.源程序:

main()

{unsigned a; brscanf("%ld",a); brfor (;a;printf("%d,",a%10),a/=10); brprintf("\b \n");}

执行结果:

23456

6,5,4,3,2

4.源程序:

main()

{unsigned long a,b,c,i; brscanf("%ld%ld",a,b); brc=a%1000; brfor(i=1;ib;i++)c=c*a%1000; brif(c100)printf("0"); brif(c10)printf("0"); brprintf("%ld\n",c);}

执行结果:

129 57

009

5.略

6.原题提供的计算e的公式有误(前面漏了一项1)。正确的公式是e= 1 + 1 + 1/2! + 1/3! + … + 1/n! + …

(1)源程序:

main()

{double e=1,f=1;int n; brfor(n=1;n=20;n++){f/=n;e+=f;}

printf("e=%.14lf\n",e);}

执行结果:

e=2.71828182845905

(2)源程序:

main()

{double e=1,f=1;int n; brfor(n=1;f1e-4;n++){f/=n;e+=f;}

printf("e=%.4f\n",e);}

执行结果:

e=2.7183

7.源程序:

main()

{unsigned long a=0,b=1,c=0;int i,d; brscanf("%d",d); brfor (i=1;i=(d+2)/3;i++) brprintf("%10ld%10ld%10ld",a,b,(a+=b+c,b+=c+a,c+=a+b));}

本题还可以用递归算法(效率很低),源程序如下:

unsigned long fun(int i)

{return i=3?i:fun(i-1)+fun(i-2)+fun(i-3);}

main()

{int i,d; scanf("%d",d); brfor(i=1;i=d;i++) brprintf("%10ld",fun(i));}

执行结果:

15

1 2 3 6 11 20 37 68

125 230 423 778 1431 2632 4841

8.源程序:

main()

{int i; brfor(i=1010;i=9876;i+=2) brif(i/100%11i%100%11i/10%100%11i/1000!=i%10i/1000!=i/10%10i/100%10!=i%10)printf(" %d",i);}

执行结果:

1024 1026 1028 1032 1034 1036 …… …… 9874 9876

9.源程序:

main()

{int i,j,k; brprintf("apple watermelon pear\n"); brfor(i=1;i=100;i++) brfor(j=1;j=10;j++) brif((k=100-i-j)*2==400-i*4-j*40) brprintf("%4d%7d%9d\n",i,j,k);}

执行结果:

apple watermelon pear

5 5 90

24 4 72

43 3 54

62 2 36

81 1 18

10.源程序:

#include "stdio.h";

#define N 4 /* N为阶数,可以改为其他正整数 */

main()

{int m=N*2,i,j; brfor(i=1;im;printf("\n"),i++) brfor(j=1;jm; brputchar(N-abs(i-N)=abs(j++-N)?' ':'*'));}

如果把N值改为5,则执行结果如下:

*

***

*****

*******

*********

*******

*****

***

*

求c语言程序设计第三版和c语言程序设计实验与习题指导答案

c语言程序设计第三版指导答案

 

附录F  课后题参考答案 

习  题  1 

1.1  填空题 

1.函数 

2.主函数main();主函数main() 3.主函数main() 4.函数首部;函数体 5.{;} 

6.顺序结构;选择结构;循环结构 7..c;.obj;.exe 

1.2  思考题 

1.答:结构化程序设计是指,为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。顺序结构,选择结构,循环结构 

2.答:算法是对具体问题求解步骤的一种描述。计算机算法的表达工具通常采用以下几种方法:①用自然语言表示算法;②用流程图表示算法;③用伪代码表示算法;④用程序设计语言表示算法。 

3.略 4.略 5.略 1.3  编程题 1.答: 

#include "stdio.h" main() 

{  float a=10, b=20, h=5, s;    s=(a+b)*h/2; 

   printf("s=%f " , s ); } 

2.答: 

#include "stdio.h" 

main() 

{  printf("******************************");    printf("*        hello  world         *");    printf("******************************"); }

习  题  2 

2.1  单选题 

DBDCA  DCABB  CA 

2.2  填空题 

1.2.000000  

 

2.1;0.500000 

3.9;2 4.6 5.100;d 6.(1)20     

(2)0   

 

 (3)60 7.(1)10;6;4     

(2)6;9;15  

 (3)3;60;83 

8.55或 '7' 

9.x=4;y=6;z=3;m=463 

2.3  改错题(略) 

习  题  3 

3.1  单选题 

BDABC  ADCAC  BBA 

3.2  填空题 

1.3 2.261 3.10 

4.2, 1;互换a,b的值 5.6.6 6.003 7.7 

8.5.0,4,c=3Enter 

9.i=10,j=20Enter 

10.   (1)65   (2)65,A   (3)3.14,123.46 

  (4)3.141600e+000,1.234560e+002   (5)8765.432100   (6)8.765432e+003

11.a=2b=5x=8.8y=76.34c1=65c2=97 12.%d/%d;%d/%d=%.2f\n 

3.3  改错题(略) 3.4  编程题 

1.答: 

#include "stdio.h" main() { 

  int x,y; 

  scanf("%d%d",x,y);   printf("\t\tx\ty\n"); 

  printf("十进制数\t%d\t%d\n",x,y);   printf("八进制数\t%o\t%o\n",x,y);   printf("十六进制数\t%X\t%x\n",x,y); } 

2.答: 

#include "stdio.h" main() { 

  char ch; 

  printf("请输入一个大写英文字母");   scanf("%c",ch); 

  printf("大写英文字母是%c\n",ch);   printf("它的前导字符是%c\n",ch-1);   printf("它的后续字符是%c\n",ch+1); } 

3.答: 

#include "stdio.h"   main()   { 

  int x,a,b,c,y; 

  printf("请输入一个三位整数\n");   scanf("%d",x);   a=x/100; 

  b=(x-a*100)/10;   c=x%10; 

  y=c*100+b*10+a; 

  printf("反向输出该整数:%d\n",y);   } } 

4.答: 

#include "stdio.h" main() 

{  int hour; 

  double salary, salaryday; 

  scanf("%d,%lf", hour, salaryday ); 

  salary=hour*salaryday- hour*salaryday*0.1; 

printf("%8.2lf\n", salary); } 

5.答: 

#include "stdio.h" main() { 

  int a,b,c,t; 

  printf("请输入三个整数\n");   scanf("%d%d%d",a,b,c); 

  printf("交换前a=%d,b=%d,c=%d\n",a,b,c);   t=a;a=c;c=b;b=t; 

  printf("交换后a=%d,b=%d,c=%d\n",a,b,c); } 

习  题  4 

4.1  单选题 

BADDD  ACBBB  BA 

4.2  填空题 

1.1 

2.(1)a0 || b0     

 

 

 

 

 (2)x0  x=10   (3)a==1.5  b==1.5  c==1.5    

(4)pa || pb || pc  

3.(1)0    (2)1    (3)1    (4)0    (5)1 

4.c=1 5.-4 6.1 7.5, 0, 3 8.5 9.123 

10.( cvb= ='y'||cvb= ='Y')(work=3||college=='y'|| college=='Y')age=35 

4.3  改错题(略) 4.4  编程题 

1.答 

#include "stdio.h" 

#include "math.h" main() { 

  double a,b,c,p,area; 

  scanf("%lf%lf%lf",a,b,c); 

  printf("三角形的三边为:%.llf,%.1lf,%.1lf\n",a,b,c);  if (a+bca+cbb+ca)  {p=(a+b+c)/2;

area=sqrt(p*(p-a)*(p-b)*(p-c)); 

  printf("三角形的面积为%.2lf\n",area);  }  else 

  printf("不能构成三角形\n"); } 

2.答: 

#include "stdio.h" main() 

{ int x,y; 

  scanf("%d,%d",x,y);   if(x*x+y*y1000)  

     printf("%d\n",(x*x+y*y)/100);   else 

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

3.答: 

#include "stdio.h" #include "math.h" main() 

{ double x,y; 

  scanf("%lf",x);   if(x-2)       y=x*x-sin(x);   else if (x=2)     y=pow(2,x)+x;   else     y=sqrt(x*x+x+1); 

  printf("x=%.2lf y=%.2lf\n",x,y); } 

4.答: 

#include "stdio.h" main( ) 

{ long ge,shi,qian,wan,x;    scanf("%ld",x);    wan=x/10000; 

   qian=x%10000/1000;    shi=x%100/10; 

   ge=x%10; 

   if (ge==wanshi==qian)       /*个位等于万位并且十位等于千位*/     printf("this number is a huiwen\n");    else      

 printf("this number is not a huiwen\n"); 

5.答: 

#include "stdio.h"  main() 

{  float p,w,s,d,f; 

scanf("%f,%,%f",p,s,w);    if (s3000) d=0.15    else if( s=2000) d=0.1;    else if(s=1000) d=0.08;    else if(s=500) d=0.05;    else if(s=250) d=0.02;    else  d=0    f=p*w*s*(1-d);    printf("%f",f); } 

6.答: 

#include "stdio.h" main() 

{  int year,money;    char x; 

   printf("是否是本公司产品(y/n):");    scanf("%c",x); 

   if(x=='y'||x=='Y') 

      {printf("产品使用的年限:");       scanf("%d",year); 

     if(year=1) money=0; 

    else if(year8) money=50;     else money=100; 

  

  printf("产品保修额是:%d\n",money); 

   } 

   else  

   {  money=200; 

     printf("不是本公司产品,产品保修额是:%d\n",money);    } } 

7.答: 

#include "stdio.h" main() 

{  int money,num1,num2; 

   printf("请输入取款额(≤2000):");    scanf("%d",money); 

   if(money2000) printf("请输入取款额数≤2000!\n");    else      if(money%50==0)      { num1=money/100;        num2=(money-num1*100)/50;         printf("需支付100元:%d张\n",num1);        printf("需支付50元:%d张\n",num2);       }    else       printf("输入钱数必须是50的倍数!\n"); }

习  题  5 

5.1  单选题 

CDABA  ABDDB  DBCB 

5.2  填空题 

1.2 0 2.333  

3.(1)i10 或 i=9    (2)j%3!=0 

4.(1)flag*(float)k/(k+1) 或1.0*flag*k/(k+1)   (2)flag=-flag 5.(1)max=x   

 

  

(2)x!=-1    (3)scanf("%d", x) 

6.(1)x=9或x10    

(2)y=9-x 

5.3  改错题(略) 5.4  编程题 

1.答: 

(1)for循环,其他略 

#include "stdio.h" 

main() 

{ int i,s=0; 

  for(i=1;i=100;i++)   s+=i*i; 

  printf("%d\n",s); } 

(2)for循环,其他略 

#include "stdio.h" main() 

{ int i=1,p=1;   double s=1;   do   { 

      s+=1.0/p;       p*=++i; 

  }while(1.0/p1e-6);   printf("%lf",s); } 

2.答: 

#include "stdio.h" main() 

{  int m,n,t,a,b; 

   scanf("%d,%d" ,m,n)     if (mn)

{ t=m m=n n=t }    a=m;    b=n;    t=m%n     while(t) 

   { m=n  n=t t=m%n;}    printf("%d",n); } 

3.答: 

#include "stdio.h" main() 

{  int x,y,s=1; 

   scanf("%d,%d",x,y)     for( y0 y--)s*=x  

   printf("%d,%d,%d\n ",s%10,s/10%10,s/100%10); } 

4.答: 

#include "stdio.h" main() 

{ int x,y,z; 

  for( x=1  x20 x++)   for( y=1 y33 y++)   { z=100-x-y  

        if ((z%3)==0 (5*x+3*y+z/3)==100)     printf("x=%d,y=%d,z=%d\n",x,y,z)    } } 

5.答: (a) 

#include "stdio.h" main() 

{ int j,k  

   for( j=1 j=4 j++) 

  {  for(k=1;k=4-j;k++)printf(" ");    printf("****")           printf("\n")    } } 

(b) 

#include "stdio.h" main() 

{  int j,k  

   for( j=1 j=4 j++) 

  {for(k=1;k=4-j;k++)printf(" ");      for(k=1 k=2*j-1 k++)      printf("*")          printf("\n")    } } 

6.答: 

程序分析:利用for循环控制在100~999之间,对每个数分解出个位、十位、百位。 

#include stdio.h main() {   int i,j,k,n;   printf("water flower'number is:");   for(n=100;n1000;n++)   {     i=n/100;/*分解出百位*/     j=n/10%10;/*分解出十位*/     k=n%10;/*分解出个位*/     if(n==i*i*i+j*j*j+k*k*k)     {      printf("%-5d",n);     }   }   printf("\n"); } 

7.答: 

#include stdio.h main() {   int x;   for(x=1000;x=3;x--)   if(x%3==1x%5==2x%7==3)   { 

      printf("该校的学生人数是:%d人\n",x);       break;   } } 

8.答: 

#include stdio.h main() {    int x=12,i=1;    while(1) 

   {  if((x+20+i)==2*(x+i)) break;        i++;    }    printf("小明母亲在%d年后比小明的年龄大一倍\n",i);    printf("那时小明年龄是:%d岁,小明母亲年龄是:%d岁\n",x+i,x+20+i); } 

习  题  6 

6.1  单选题 

DBCCB   BDC

C语言程序设计教程(第3版) 

  278 

6.2  填空题 

1.c 2.60 3.1000  10 4.16  

6.3  编程题 

1.答: 

#include "stdio.h" #include "math.h" 

#define  F(a)  a*a+ sqrt(3*a*a+2*a+1) main() 

{   float  x, f; 

    scanf("%f", x ); 

    f=4.5/F(exp(x))+F(cos(x))+F(sqrt(x))/F(x*x)      printf("%f\n", f); } 

习  题  7 

7.1  单选题 

BCADA  CCCDA  BCBDB 

7.2  填空题 

1.(1)2 3 4 5   (2)10010    (3)QuickC  

 

(4)10000        01000        00100        00010        00001   (5)Language 

(6)Language Programming 2.(1)j+=2   (2)a[i]a[j] 3.(1)i=1    (2)x[i-1] 

7.3  改错题(略) 7.4  编程题 

1.答: 

#define N 10  

#include "stdio.h" main()  

{ int a[N]={1,2,3,4,5,6,7,8,9,10,osum=0, qsum=0,j;   for(j=0;j10;j++) 

  if( j%2) qsum+=a[j];

else osum+=a[j]; 

 printf("osum=%d,qsum=%d\n", osum,qsum); } 

2.答: 

#define N 10 

#include "stdio.h"  main() 

{ int a[N]={10,20,30,40,50,60,70,80,90}, j, k, x;   scanf("%d",x);   for(j=0;jN;j++) 

        if (xa[j]) break; if(j==N) a[N-1]=x;  else 

{for(k=N-1; kj; k--)      a[k]=a[k-1]; a[j]=x;} 

  for(j=0;jN;j++) 

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

3.答: 

#define M 3 

#include "stdio.h" main() 

{  int a[M][M]={{1,2,3},{2,4,5},{3,5,6}},j,k,flag=1;;    for( j=0;jM;j++) 

        for(k=0;kM;k++)           if (a[j][k]!=a[k][j]) { flag=0; break;}    if (flag) printf("ok");    else printf("NO"); } 

4.答: 

#include "stdio.h" #include "string.h" main() 

{  char c1[10],c2[10],j;    gets(c1); gets(c2); 

   for(j=0; (c1[j]==c2[j])  c1[j]  c2[j]; j++);    if (c1[j]c2[j]) printf("%d\n",1);    if (c1[j]c2[j]) printf("%d\n",-1);    if (c1[j]==c2[j]) printf("%d\n",0); } 

5.答: 

#include "stdio.h" #include "string.h" #define M 3 #define N 80 main() 

{  char a[M][N],j,k,n[5]={0};    for(j=0;jM;j++)     gets(a[j]);

for(j=0;jM;j++) 

  for(k=0;a[j][k];k++) 

    if( a[j][k]='A'  a[j][k]='Z') n[0]++; 

    else if (a[j][k]='a'  a[j][k]='z') n[1]++;     else if (a[j][k]='0'  a[j][k]='9') n[2]++;     else if (a[j][k]==' ' ) n[3]++;     else     n[4]++; 

    for(j=0;j5;j++)      printf("%4d", n[j]); } 

习  题  8 

8.1  单选题 

DBDAC  BACCC 

8.2  填空题 

1.(1)2, 1     (2)10#30#   (3)FOUR, P    (4)60 

2.(1)49  

  (2)2      

(3)2    

 

  (4)     

 

(5)     

8.3  改错题(略) 8.4  编程题 

1.答: 

#include "stdio.h" 

main() 

{  int n1,n2,n3,t;    int *p1,*p2,*p3; 

   printf("please input 3 number:n1,n2,n3:");    scanf("%d,%d,%d",n1,n2,n3);    p1=n1; 

   p2=n2;    p3=n3; 

   if(*p1* p2) { t=*p1;*p1=*p2;*p2=t;} 

   if(*p1*p3) { t=*p1;*p1=*p3;*p3=t;}    if(*p2*p3) { t=*p2;*p2=*p3;*p3=t;} 

   printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3); } 

2.答: 

#include "stdio.h" #define N 3 main() 

{  int a[N],*p=a;    for(;p-aN; p++)    scanf("%d",p);    p=a+N-1; 

   for(;p-a=0; p--)      printf("%d ",*p); } 

3.答: 

#include "stdio.h" main() 

{  int a[10]; 

   int j,minl=0,maxl=0;    for(j=0;j10;j++) 

       scanf("%d", a+j);    for(j=0;j10;j++) 

     { if(a[maxl]*(a+j))  maxl=j;      if(a[minl]*(a+j))  minl=j;    } 

   j=a[0]; a[0]=a[minl];a[minl]=j;    j=a[9];a[9]=a[maxl];a[maxl]=j;    for(j=0;j10;j++)    printf("%d ", *(a+j)); } 

4.答: 

    输入阵列如下:   1   2   3   4                      5   6   7   8                      9   10  11  12     输出阵列如下: 

                     12  11  10  9                      8   7   6   5                      4   3   2   1 

#define M 3 

#define N 4 

#include "stdio.h" main() 

{  int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12},k,j,*p=a[0][0],t;    for(k=0,j=M*N-1;kj;k++,j--) 

   {  t=*(p+k); *(p+k)=*(p+j); *(p+j)=t;}    for (k=0 kM k++)    {  for(j=0 jN j++) 

   printf("%4d ",a[k][j]);      printf("\n");

 } } 

5.答: 

#include "stdio.h" main() { 

   int len; 

   char str[20],*p=str; 

   printf("please input a string:\n");    scanf("%s",str);    len=0; 

   while(*p!='\0')    { 

      len++;       p++;    } 

      printf("the string has %d characters.\n",len); } 

6.答: 

#include "string.h" #include "stdio.h" main() { 

   char *str1[5],ch[5][20],k,t,j,*c; void sort(char **);    for(k=0;k5;k++)     {str1[k]=ch[k];     gets(str1[k]);}    for(k=0;k7;k++) 

   {  t=k; 

      for(j=k+1;j5;j++)      if(strcmp(*(str1+t),*(str1+j))0) t=j;      c=*(str1+t); 

    *(str1+t)=*(str1+k)      *(str1+k)=c     } 

   for(k=0;k5;k++)     puts(str1[k]); } 

习  题  9 

9.1  单选题 

CBBAD  DBCCD  DCABC  BCCBA  DCDAB

9.2  填空题 

1.120 2.x 3.3,2,2,3   4.fac /i 5.8,17 6.9 7.1.0/(i*i)   8. 

    fun-in:30,20,10     fun-end:1015,35,1050      10,20,30 9.012345   10.93636  11.(1)r+b[k]  (2)*x 

12.7 5 3 1 9 13.15 

14.(1)*x    (2)t 15.(1)'\0'    (2)n++ 16.024 

9.3  改错题(略) 9.4  编程题 

1.答: 

void  zhuan( ) 

{  char ch; 

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

   {    if(ch='a'  ch='z') ch=ch-32;         putchar(ch);    } } 

2.答: 

double expp(int n) { int k, fac=1;  double sum=1; 

  for(k=1; k=n; k++)   { fac*=k; 

     sum+=1.0/fac    } 

  return(sum); } 

3.答: 

int  xy3( int x, int y)

{ int k, num=1; 

  for(k=1;k=y  k++)     num*=x  

  num=num%1000    return num  } 

4.答: 

int age( int n) { int c; 

  if(n==1) c=10  

  else c=age(n-1)+2    return c  } 

5.答: 

#include "stdio.h" 

 main() 

{  int a,b,c,d; 

   void fun(int a,int b,int *c, int *d);    scanf("%d%d",a,b);    fun(a,b,c,d); 

   printf("%d %d",c,d); 

void fun(int a,int b,int *c, int *d) {  if (b) 

    { *c=a/b; *d=a%b;} } 

6.答: 

#include "stdio.h" 

main(int argc,char *argv[]) {  int k; 

    printf("argc=%d\n",argc);     for (k=1;kargc; k++)          printf("%s\n",argv[k]); } 

习  题  10 

10.1  单选题 

CDBBB  BBBAD  CCBDC   

10.2  填空题 

1.所有结构体成员所占存储空间的总和 2.与占用存储空间最大的那个成员相等 

附录F  课后题参考答案 

 

  285 

3.(1)struct satype  (2)3   (3)sa.a   (4)9   (5)psa=sa 4.80 5.struct node 6.0 

10.3  编程题 

1.答: 

#include "stdio.h" 

struct student { 

  long  num; 

  char  name[20];   char  sex;   float  score; }; main() 

{ struct  student  s[20], temp;   int j,k, man=0, woman=0; 

  float summan=0,sumwoman=0, aveman, avewoman;   for(k=0; k20; k++) 

  { scanf("%ld %s %c%f",s[k].num,s[k].name,s[k].sex,s[k].score);     if(s[k].sex=='m')  

    { summan+=s[k].score; man++;}     else  

    { sumwoman+=s[k].score;woman++ }     } 

    aveman=summan/man; 

    avewoman=sumwoman/woman; 

    printf("%d\t%f\t%d\t%f\n",man,aveman,woman,avewoman);     for(k=0; k19; k++) 

       for(j=0;j20-k;j++) 

           if(s[j].scores[j+1].score) 

           { temp=s[j];s[j]=s[j+1];s[j+1]=temp;}        printf("the sorted numbers:\n");        for(k=0;k20;k++) 

           printf("%ld\t%s\t%c\t%5.1f\n",s[k].num,s[k].name,s[k].sex,s[k].score); } 

习  题  11 

11.1  单选题 

BADD 

11.2  填空题 

1.3d3d330 2.(1)28 

 (2)20   (3)0   (4)--9 

3.(1)251 

 (2)42   

(3)209  

 (4)–295  (5)848 

习  题  12 

12.1  单选题 

BCDCA  ADA 

12.2  填空题 

1.rewind(文件指针) 2."d1.dat","rb" 3.stdin 

4.文本文件;二进制文件 5.(1)"w"    

(2)str[i]--32  

 

 (3)"r" 

6.fopen  7.Hello 8.(1)"r"   

 

(2)fgetc(fp)  

 

  (3)time++

  

  

 C语言程序设计实验与习题指导课后程序设计答案

 P18 

(1) 

#includestdio.h int main(void) {  intcelsius,fahr;  fahr=150;  celsius=5*fahr/9-5*32/9;  printf("fahr=%d,celsius=%d\n",fahr,celsius);  return 0; } 

(2) 

#includestdio.h int main(void) {  intcelsius,fahr;  celsius=26;  fahr=9*celsius/5+32;  printf("celsius=%d,fahr=%d\n",celsius,fahr);  return 0; } 

(3) 

#includestdio.h int main(void) {  intaverage,math,eng,comp;  math=87;  eng=72;  comp=93;  average=(math+eng+comp)/3;  printf("math=%d,eng=%d,comp=%d,average=%d\n",math,eng,comp,average);  return 0; } 

(4) 

#includestdio.h int main(void) {  intn,a,b,c;  n=152

 c=n%10; 

 b=(n/10)%10;  a=n/100; 

 printf("整数%d的个位数字是%d,十位数字是%d,百位数字是%d\n",n,c,b,a);  return 0; 

P27 

(1) 

#includestdio.h #includemath.h int main(void) {  intcelsius,fahr;  printf("Enter celsius:");  scanf("%d",celsius);  fahr=9*celsius/5+32;  printf("fahr%d\n",fahr);  return 0; } 

(2) 

#includestdio.h #includemath.h int main(void) {  intmoney,year;  doublerate,interest;  printf("Enter money,year,rate:");  scanf("%d%d%lf",money,year,rate);  interest=money*pow(1+rate,year)-money;  printf("interest=%.2f\n",interest);  return 0; } 

(3) 

#includestdio.h #includemath.h int main(void) {  doublex,y;  printf("Enter x:");  scanf("%lf",x); 

 if(x0){   y=pow(x+1,2)+2*x+1/x;  }  else{   y=sqrt(x);  } 

 printf("y=f(%f)=%.2f\n",x,y);  return 0; 

(4) 

#includestdio.h int main(void) {  intx,y;  printf("Enter num1:");  scanf("%d",x);  printf("Enter num2:");  scanf("%d",y);  printf("%d+%d=%d\n",x,y,x+y);  printf("%d-%d=%d\n",x,y,x-y);  printf("%d*%d=%d\n",x,y,x*y);  printf("%d/%d=%d\n",x,y,x/y);  printf("%d%%%d=%d\n",x,y,x%y);  return 0; } 

10的阶乘 

#includestdio.h int main(void) {  inti,n,product;  printf("Enter n:");  scanf("%d",n);  product=1;  for(i=1;i=n;i++){   product=product*i;  }  printf("product=%d\n",product);  return 0; }

求C语言程序设计习题集与上机指导-第三版 (及答案)......

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(maxb)

max=b;

if(maxc)

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ㄩㄩㄩㄩㄩㄩabc

AㄩN

3.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’,并输出。

解:

#include stdio.h

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)

c2=ˊbˊ_or_98(ASCII)

main()

{int a=3,b=4,c=5;

long int u=51274,n=128765;

float x=1.2,y=2.4,z=3.6;

char c1=’a’,c2=’b’;

printf("a=%2d b=%2d c=%2d\n",a,b,c);

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

printf("x+y=%5.2f y+z=%5.2f z+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)");

}

4.7用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入?

main()

{

int a,b;float x,y;char c1c2;

scanf("a=%d_b=%d",a,b);

scanf("_x=%f_y=%e",x,y);

scanf("_c1=%c_c2=%c",c1,c2);

}

a=3_b=7

_x=8.5_y=71.82

_c1=A_c2=a

4.8设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。

main()

{float r,h,C1,Sa,Sb,Va,Vb;

scanf("%f,%f",r,h);

C1=2*3.14*r;

Sa=3.14*r*r;

Sb=4*Sa;

Va=4*3.14*r*r*r/3;

Vb=Sa*h;

printf("C1=%.2f\n",C1);

printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb);

}

4.9输入一个华氏温度,要求输出摄氏温度。公式为

c=5(F-32)/9

输出要求有文字说明,取位2小数。

main()

{float F,c;

scanf("%f",F);

c=5*(F-32)/9;

printf("c=%.2f",c);

}

4.10编程序,用getchar函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整形?抑二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:

char c1,c2;

int c1,c2;

是否无条件的等价?

#include"stdio.h"

main()

{char c1,c2;

c1=getchar();c2=getchar();

putchar(c1);putchar(’\n’);putchar(c2);putchar(’\n’);

and Settings/Administrator/桌面/C语言程序设计第三版谭浩强课后习题答案完整版.txt(第 1/19 页)[2010-5-10 9:14:34]

and Settings/Administrator/桌面/C语言程序设计第三版谭浩强课后习题答案完整版.txt

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(maxb)

max=b;

if(maxc)

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ㄩㄩㄩㄩㄩㄩabc

AㄩN

3.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’,并输出。

解:

#include stdio.h

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)

c2=ˊbˊ_or_98(ASCII)

main()

{int a=3,b=4,c=5;

long int u=51274,n=128765;

float x=1.2,y=2.4,z=3.6;

char c1=’a’,c2=’b’;

printf("a=%2d b=%2d c=%2d\n",a,b,c);

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

printf("x+y=%5.2f y+z=%5.2f z+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)");

}

4.7用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入?

main()

{

int a,b;float x,y;char c1c2;

scanf("a=%d_b=%d",a,b);

scanf("_x=%f_y=%e",x,y);

scanf("_c1=%c_c2=%c",c1,c2);

}

a=3_b=7

_x=8.5_y=71.82

_c1=A_c2=a

4.8设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。

main()

{float r,h,C1,Sa,Sb,Va,Vb;

scanf("%f,%f",r,h);

C1=2*3.14*r;

Sa=3.14*r*r;

Sb=4*Sa;

Va=4*3.14*r*r*r/3;

Vb=Sa*h;

printf("C1=%.2f\n",C1);

printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb);

}

4.9输入一个华氏温度,要求输出摄氏温度。公式为

c=5(F-32)/9

输出要求有文字说明,取位2小数。

main()

{float F,c;

scanf("%f",F);

c=5*(F-32)/9;

printf("c=%.2f",c);

}

4.10编程序,用getchar函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整形?抑二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:

char c1,c2;

int c1,c2;

是否无条件的等价?

#include"stdio.h"

main()

{char c1,c2;

c1=getchar();c2=getchar();

putchar(c1);putchar(’\n’);putchar(c2);putchar(’\n’);

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;

}

}

第五章

5.8 企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10% ;利润高于10万元,低于20万元(100000I≤200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5% ;200000I≤400000时,其中20万元仍按上述办法提成(下同),高于20万元的部分按5%提成;400000I≤600000时,高于40万元的部分按3%提成;600000〈I≤1000000时,高于60万的部分按1.5%提成;I1000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序;(2)用switch语句编程序。

解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按7.5%提成。

(1) 用if语句编程序。

#include stdio.h

main()

{ long i;

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

bon1=100000*0.1; /*利润为10万元时的奖金*/

bon2=bon1+100000*0.075; /*利润为20万元时的奖金*/

bon4=bon2+200000*0.05; /*利润为40万元时的奖金*/

bon6=bon4+200000*0.03; /*利润为60万元时的奖金*/

bon10=bon6+400000*0.015; /*利润为100万元时的奖金*/

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

scanf("%ld",i);

if(i=100000)

bonus=i*0.1; /*利润在10万元以内按0.1提成奖金*/

else if(i=200000)

bonus=bon1+(i-100000)*0.075; /*利润在10万至20万元时的奖金*/

else if(i=400000)

bonus=bon2+(i-200000)*0.05; /*利润在20万至40万元时的奖金*/

else if(i=600000)

bonus=bon4+(i-400000)*0.03; /*利润在40万至60万元时的奖金*/

else if(i=1000000)

bonus=bon6+(i-600000)*0.015; /*利润在60万至100万元时的奖金*/

else

bonus=bon10+(i-1000000)*0.01; /*利润在100万元以上时的奖金*/

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

}

此题的关键在于正确写出每一区间的奖金计算公式。例如利润在10万元至20万时,奖金应由两部分组成:①利润为10万元时应得的奖金。即100000ⅹ0.1;②10万元以上部分应得的奖金。即(num-100000)ⅹ0.075。同理,20万~40万这个区间的奖金也应由两部分组成:①利润为20万元时应得的奖金,即100000ⅹ0.1ⅹ10万ⅹ0.075;②20万元以上部分应得的奖金,即(num-200000)ⅹ0.05。程序中先把10万、20万、40万、60万、100万各关键点的奖金计算出来,即bon1、bon2、bon4、bon6、hon10;然后再加上各区间附加部分的奖金。

(2) 用switch语句编程序。

输入利润i,确定相应的提成等级branch

根据branch确定奖金值

0 奖金=i*0.1

1 奖金=bon1+(i-105)*0.075

2 奖金=bon2+(i-2*105)*0.05

3

4 奖金=bon4+(i-4*105)*0.03

5

6 奖金=bon6+(i-6*105)*0.015

7

8

9

10 奖金=bon10+(i-106)*0.01

输出奖金

#include stdio.h

main()

{ long i;

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

int c;

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("%ld",i);

c=i/100000;

if(c10) c=10;

switch(c)

{ case 0: bonus=1*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",bonus);

}

5.9 输入4个整数,要求按由大到小的顺序输出。

解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。

#include stdio.h

main()

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

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

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

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

if(ab) {t=a; a=b; b=t;}

if(ac) {t=a; a=c; c=t;}

if(ad) {t=a; a=d; d=t;}

if(bc) {t=a; b=c; c=t;}

if(bd) {t=b; b=d; d=t;}

if(cd) {t=c; c=d; d=t;}

printf("排序结果如下:\n");

跪求《C语言程序设计》课本习题答案!!!

习题1参考答案

一、选择题 1. A 2. D

二、填空题

1. BASIC、FORTRAN、AL_GOL60和COBOL 2. 8

3. 关键字

4. 编辑、编译、链接和运行

三、简答题 1.答:

(1)C语言具有结构化的控制语句。C语言提供了结构化程序所必需的基本控制语句,实现了对逻辑流的有效控制。

(2)C语言具有丰富的数据结构类型。C语言除提供整型、实型、字符型等基本数据类型外,还提供了用基本数据类型构造出的各种复杂的数据结构,如数组、结构、联合等。C语言还提供了与地址密切相关的指针类型。此外,用户还可以根据需要自定义数据类型。 (3)C语言具有丰富的运算符。C语言提供了多达34种运算符,丰富的数据类型与丰富的运算符相结合,使C语言的表达力更具灵活性,同时也提高了执行效率。

(4)C语言简洁、紧凑,使用方便、灵活,程序书写自由,有9种控制语句。

(5)C语言既具有高级语言的功能,又具有低级语言的许多功能,通常被称为中级计算机语言。它既是成功的系统描述语言,又是通用的程序设计语言。 (6)C语言与汇编语言相比,可移植性好。

(7)功能强大。C语言具有低级语言的一些功能,所以,生成目标代码质量高,程序执行效率高。现在许多系统软件都用C语言来描述,可以大大提高了编程效率。

2.答:运行一个C语言程序,一般需要经过如下几个步骤:①上机输入并编辑源程序;②编译源程序;③与库函数连接;④生成可执行目标程序;⑤运行目标程序。 3.答:

(1)操作系统的设计与实现。C语言是一种应用非常广泛的结构化高级程序设计语言,既适合编写应用软件,又适合编写系统软件。

关于c语言程序设计教程答案高职高专和c语言程序设计实用教程答案的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码