谁有C语言程序设计(第三版)杜友福主编的答案啊

谁有C语言程序设计(第三版)杜友福主编的答案啊,第1张

C语言程序设计(第三版)习题答案

习题一

一、名词解释

(1)程序P1 (2)程序设计P1 (3)机器语言P1(4)高级语言P2

(5)汇编程序P3 (6)编译程序P4 (7)算法P5(8)结构化程序设计方法P10

二、简答题

1. 设计程序时应遵循哪些基本原则?P4

答:正确性、可靠性、简明性、有效性、可维护性、可移植性。

2. 算法具有哪些特点?

答:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。

3. 算法的表示形式有哪几种?

答:自然语言、伪代码、传统流程图、N-S流程图、计算机语言。

4. 结构化程序设计方法的三种基本结构是什么?

答:顺序结构、选择结构和循环结构。

5. 传统流程图与N-S流程图最大的区别是什么?

答:N-S流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。

三、用传统流程图或N-S流程图表示求解以下问题的算法。

1. 从键盘输入10个整数,求出其中的最小数并输出。

2. 求1 2 3 … 100的值。

3. 求10~50的所有素数之和。

4. 求下列分段函数的值。

四、请参照本章例题,编写一个简单的C程序,输出以下三行信息。

**************************

Yangtze University

**************************

#include <stdio.h>

void main()

{

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

printf("Yangtze University\n")

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

}

习题二

一、选择题

1~10: B C D C D D B C A A

11~20: D A C D B D B A C D

二、填空题

1.字母 L 或字母 l

2. %c(或字符) 、%d(或整数)

3. 在程序运行过程中,其值可以在一定的范围内变化的量

4. '\0'

5. 小数形式、 指数形式

6. 关键字 、 预定义标识符 、 用户标识符

7. 字母 、 数字 、 下划线 、 数字

8. 18

9. 2 、 1 、 30

10. 双精度实数或double

11. 赋值 、 逗号 、 20 、 20 、 20 、 4

12. 4 、 4

习题三

一、选择题

1~10: B C C B C C C D C C

注:第4题答案D为: 10 22↙

33↙

二、填空题

1. printf 、 scanf

2. h

3. "]"

4. '\0'

5. e 、 E

6. 6

7. s 、 c

8. *

9. - 、

10. i

三、编程题

1. 编写程序,从键盘输入一个以秒为单位的时间数,将其换算成几小时几分几秒,然后进

行输出。例如输入的时间为4258秒,则输出结果为:1小时10分58秒。

#include <stdio.h>

void main()

{

int x,h,m,s

scanf("%d",&x)

h=x/3600m=x600/60s=x`

printf("%ds=%d:%d:%d!\n",x,h,m,s)

}

2. 编写程序,读入三个整数给变量a、b、c,然后交换它们中的数,把a中原来的值给b,

把b中原来的值给c,把c中原来的值给a。

#include <stdio.h>

void main()

{

int a,b,c,t

printf("input a b c:")

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

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

t=aa=cc=bb=t

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

}

习题四

一、填空题

1. 1 、 0

2. ! % + <= != && || =

3. x==0

4. 0 、 2

5. 20 、 0 、 0

二、选择题

1~7:D D C A D D C

三、程序阅读题

1. 595959

2. 0.500000

3. 1

4. 2

5. 6

6. a=2,b=1

7. pass

warn

8.1

四、编程题

1. 设a为整型变量且其值大于零,请将以下if语句改写成switch语句。

if(a<60) m=1

else if(a<70) m=2

else if(a<80) m=3

else if(a<90) m=4

else m=5

方法1

#include <stdio.h>

void main()

{

int a,m

scanf("%d",&a)

switch(a/10)

{

case 0:case 1:case 2:case 3:

case 4:case 5:m=1break

case 6:m=2break

case 7:m=3break

case 8:m=4break

default:m=5break

}

printf("m=%d\n",m)

}

方法2

#include <stdio.h>

void main()

{

int a,m

scanf("%d",&a)

m=0

switch(a/10)

{

default:m

case 8:m

case 7:m

case 6:m

case 5:case 4:case 3:case 2:

case 1:case 0:m

}

printf("m=%d\n",m)

}

2. 编写程序,从键盘输入一个整数,打印出它是奇数还是偶数。

#include <stdio.h>

void main()

{

int a

scanf("%d",&a)

if(a%2==1)

printf("%d is a odd number!\n",a)

else

printf("%d is a even number!\n",a)

}

3. 编写程序,从键盘输入一个字符,判别它是否是小写字母,如果是,将它转换为大写字母;如果不是,不转换。然后输出最后得到的字符。

#include <stdio.h>

void main()

{

char ch

scanf("%c",&ch)

if(ch>='a' &&ch<='z')

ch=ch-32

printf("%c\n",ch)

}

4. 编写程序,从键盘输入一个不多于4位的正整数,打印出它是几位数。

#include <stdio.h>

void main()

{

int x,n

scanf("%d",&x)

if(x>1000) n=4

else if(x>100) n=3

else if(x>10) n=2

else n=1

printf("%d\n",n)

}

5. 当一个人的月收入在3500元以下时免税;月收入在3500元到5000元之间时,超过3500的部分纳税3%;月收入在5000元以上时,3500至5000之间的部分纳税3%,超过5000的部分纳税10%。编写程序从键盘输入月收入income,计算并输出应交税款tax。

#include <stdio.h>

void main()

{

int income

float tax

scanf("%d",&income)

if(income<=3500) tax=0

else if(income<=5000) tax=0.03*(income-3500)

else tax=0.03*(5000-3500) 0.10*(income-5000)

printf("tax=%f\n",tax)

}

6. 回文是指正读和反读都一样的数或字符串。例如:12321、55455、35553等都是回文。请编写一个程序,从键盘上读取一个包含五位数字的长整数,并判断它是否是回文。(提示:用除法运算和求余运算把一个数的个位、十位、百位、千位等分别分离出来。)

#include <stdio.h>

void main()

{

long x

int a,b,d,e

scanf("%ld",&x)

a=x/10000

b=x000/1000

d=x0/10

e=x

if(a==e &&b==d)

printf("%ld is huiwen!\n",x)

else

printf("%ld is not huiwen!\n",x)

}

习题五

一、阅读题

1.8

2.4321

3.X

4.-1

5.23

6.52

7.5

8.3

二、填空题

1. 18

2. 2

3. b=i 1

4. 17

5. i<=9、 j%3!=0

6. d=1.0 、 k=k 1 、 k<=10

三、选择题

1~8:A D D A B D D A

四、编程题

1. 编写程序,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方之和等于该数本身。例如,407是一个“水仙花数”,因为407=43 03 73。(注:若将题意改为打印出最大的或最小的“水仙花数”,则应将循环语句作如何调整?)。

#include <stdio.h>

void main()

{

int a,b,c,k

for(k=100k<=999k )

//求最大的“水仙花数”改用:for(k=999k>=100k--)

{

a=k/100b=k/10c=k

if(k==a*a*a b*b*b c*c*c)

{

printf("]",k)

//求最大或最小”水仙花数”时增加一个语句:break

}

}

printf("\n")

}

2. 编写程序,输出1980~2880年所有闰年的年号。每输出5个年号换一行。

#include <stdio.h>

void main()

{

int k,flag,n=0

for(k=1980k<=2880k )

{

flag=(k%4==0)&&(k0!=0)||(k@0==0)

if(flag)

{

printf("]",k)

n

if(n==0)

printf("\n")

}

}

printf("\n")

}

3. 编写程序,求1-3 5-7 …-99 101的值。

#include <stdio.h>

void main()

{

int n,t=1,s=1

for(n=3n<=101n =2)

{ t=-ts=s t*n}

printf("s=%d\n",s)

}

4. 编写程序,计算并输出下列级数的前n项之和Sn。n的值从键盘输入。

#include <stdio.h>

void main()

{

int fz,fm,n,i

float s,t

fz=2fm=1s=0

scanf("%d",&n)

for(i=1i<=ni )

{

t=(1.0*fz)/fm

s=s t

fz=fz fm

fm=fz-fm

}

printf("s=%f\n",s)

}

5.编写程序,求e的值e=1 1/1! 1/2! 1/3! 1/4! … 1/n!

#include <stdio.h>

void main()

{

int n,i

float t,fm=1,e=1

scanf("%d",&n)

for(i=1i<=ni )

{ fm=fm*it=1.0/fm e=e t }

printf("n=%d,e=%f\n",n,e)

}

6. 已知某球从80米高度自由落下,落地后反复d起,每次d起的高度都是上次高度的一半。求此球8次落地所经过的总路程。

#include <stdio.h>

void main()

{

int n

float s=80,h=s/2

for(n=2n<=8n )

{

s=s 2*h

h=h/2

}

printf("s=%f\n",s)

}

7. 用牛顿迭代法求高次方程f(x)=2x3-4x2 5x-18=0的根(约为2.466)。

注:牛顿迭代公式为:x2=x1-f(x1)/f’(x1),其中f’(x1)为导函数在点x1的值。

#include <stdio.h>

#include <math.h>

void main()

{

float x,f,f1

x=8 // x的初值可为任意值

do

{ f=2*x*x*x-4*x*x 5*x-18f1=6*x*x-8*x 5x=x-f/f1

}while(fabs(f)>0.00001)

printf("x=%f,f=%f\n",x,f)

}

8. 有这样一些真分数:其分子和分母都是两位正整数,且分子的个位数与分母的十位数相同,如果把该分数的分子的个位数与分母的十位数同时去掉,所得到的新的分数正好与原分数的值相等,如26/65=2/5。试编程求出所有满足上述条件的真分数。

#include <stdio.h>

void main()

{

int a,b,c // 设这个分数为ab/bc

for(a=1a<=9a )

for(b=1b<=9b )

for(c=1c<=9c )

if((a<c)&&(1.0*a/c==(a*10.0 b)/(b*10.0 c)))

printf("%d/%d=%d%d/%d%d=%f\n",a,c,a,b,b,c,1.0*a/c)

}

9. 编写程序,求数列:1,(1 1/2),(1 1/2 1/3),(1 1/2 1/3 1/4),(1 1/2 1/3 1/4 1/5),…的前10项之和。

#include <stdio.h>

void main()

{

float s,t

int i

s=0,t=0

for(i=1i<=10i )

{ t=t 1.0/is=s t}

printf("s=%f\n",s)

}

10. 编写程序,求3到100之间的所有素数之和。

#include <stdio.h>

void main()

{

int s,i,k,flag

s=0

for(i=3i<=100i )

{

flag=1

for(k=2k<ik )

if(i%k==0)

{ flag=0break}

if(flag)

{ s=s iprintf("M",i)}

}

printf("\nsum=%d\n",s)

}

11. 编写程序,求Fibonacci数列中大于800的最小的一个数(结果为987)。

#include <stdio.h>

void main()

{

int f1=1,f2=1,f3

while(f3<=800)

{

f3=f1 f2

f1=f2

f2=f3

}

printf("Fibonacci数列中大于800的最小数是]\n",f3)

}

习题六

一、选择题

1~10:D D C B A B C D C D

11~20:A B B C C D C A B B

21~30:B B D D D D C D C A

注:第16题答案C为:字符串"SHORT"与"SHORT "相等

第19题题目为:已知:char str1[10],str2[10]={"books"}则在程序中能够将字符串

"books"赋给数组str1的正确语句是 。

第21题题目为:设有:char str1[20]="abcde",str2[20]="xyz"则执行语句:

printf("%d",strlen(strcpy(str1,str2))的结果是 。

第28题答案D为: aaaa

bbbb

cccc dddd

二、填空题

1.9 、 0

2.先行后列

3.

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=3<Enter> 

9.i=10,j=20<Enter> 

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=aa=cc=bb=t 

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

习  题  4 

4.1  单选题 

BADDD  ACBBB  BA 

4.2  填空题 

1.1 

2.(1)a>0 || b>0     

 

 

 

 

 (2)x>0 && x<=10   (3)a==1.5 && b==1.5 && c==1.5    

(4)p<a || p<b || p<c  

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+b>c&&a+c>b&&b+c>a)  {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*y>1000)  

     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==wan&&shi==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 (s>3000) 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(year<8) 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(money>2000) 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)i<10 或 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或x<10    

(2)y=9-x 

5.3  改错题(略) 5.4  编程题 

1.答: 

(1)for循环,其他略 

#include "stdio.h" 

main() 

{ int i,s=0 

  for(i=1i<=100i++)   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/p>1e-6)   printf("%lf",s) } 

2.答: 

#include "stdio.h" main() 

{  int m,n,t,a,b 

   scanf("%d,%d" ,&m,&n)     if (m<n)

{ 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( y>0 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  x<20 x++)   for( y=1 y<33 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=1k<=4-jk++)printf(" ")    printf("****")           printf("\n")    } } 

(b) 

#include "stdio.h" main() 

{  int j,k  

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

  {for(k=1k<=4-jk++)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=100n<1000n++)   {     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=1000x>=3x--)   if(x%3==1&&x%5==2&&x%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=0j<10j++) 

  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=0j<Nj++) 

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

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

  for(j=0j<Nj++) 

       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=0j<Mj++) 

        for(k=0k<Mk++)           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=0j<Mj++)     gets(a[j])

for(j=0j<Mj++) 

  for(k=0a[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=0j<5j++)      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-a<N 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=0j<10j++) 

       scanf("%d", a+j)    for(j=0j<10j++) 

     { 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=0j<10j++)    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-1k<jk++,j--) 

   {  t=*(p+k) *(p+k)=*(p+j) *(p+j)=t}    for (k=0 k<M k++)    {  for(j=0 j<N 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=0k<5k++)     {str1[k]=ch[k]     gets(str1[k])}    for(k=0k<7k++) 

   {  t=k 

      for(j=k+1j<5j++)      if(strcmp(*(str1+t),*(str1+j))>0) t=j      c=*(str1+t) 

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

   for(k=0k<5k++)     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=1k<=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=1k<argc 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 k<20 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 k<19 k++) 

       for(j=0;j<20-k;j++) 

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

           { temp=s[j];s[j]=s[j+1];s[j+1]=temp;}        printf("the sorted numbers:\n")        for(k=0;k<20;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) 

#include<stdio.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) 

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

(3) 

#include<stdio.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) 

#include<stdio.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) 

#include<stdio.h> #include<math.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) 

#include<stdio.h> #include<math.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) 

#include<stdio.h> #include<math.h> int main(void) {  doublex,y  printf("Enter x:")  scanf("%lf",&x) 

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

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

(4) 

#include<stdio.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的阶乘 

#include<stdio.h> int main(void) {  inti,n,product  printf("Enter n:")  scanf("%d",&n)  product=1  for(i=1i<=ni++){   product=product*i  }  printf("product=%d\n",product)  return 0 }


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11034649.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存