求C语言程序设计的答案

Python016

求C语言程序设计的答案,第1张

2分,共60分)下列各题A、B、C、D四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

1.微型计算机的运算器、控制器及内存储器组合在一起,称之为()(本题分值:1分)

D

A.ALU

B.CPU

C.MPU

D.主机

2.下列存储器中,存取速度最快的是()(本题分值:1分)

D

A.软盘

B.硬盘

C.光盘

D.内存

3.系统软件中最重要的是()(本题分值:1分)

A

A.操作系统

B.语言处理程序

C.工具软件

D.数据库管理系统

4、CPU处理的数据基本单位为字,一个字的字长()(本题分值:1分)

D

A.为8个二进制位

B.为16个二进制位

C.为32个二进制位

D.与CPU芯片的型号有关

5.打印当前屏幕内容应使用的控制键是()(本题分值:1分)

D

A.Scroll-Lock

B.Num-Lock

C.PgDn

D.PrtSc(Print Screen)

6.能将高级语言源程序转换成目标程序的是()(本题分值:1分)

C

A.调试程序

B.解释程序

C.编译程序

D.编辑程序

7.二进制数1110111.11转换成十进制数是()(本题分值:1分)

B

A.119.375

B.119.75

C.119.125

D.119.3

8.十六进制数FF.1转换成十进制数是()(本题分值:1分)

A

A.255.0625

B.255.125

C.127.0625

D.127.125

9.中国国家计算机网络设施是()(本题分值:1分)

A

A.NCFC

B.CERNET

C.ISDN

D.Internet

10.控制键^C的功能为()(本题分值:1分)

A

A.终止当前操作

B.系统复位

C.暂停标准输出设备的输出

D.结束命令行

11.COMMAND.COM为命令处理程序,DOS系统启动后,它()(本题分值:1分)

B

A.驻留在外存,需要时装入内存

B.常驻内存,包含所有内部命令

C.不能处理外部命令

D.不能处理后缀为.EXE的可执行文件

12.为了将所有扩展名为.PAS的文件改成扩展名为.P,应使用命令()(本题分值:1分)

C

A.REN *.PAS .?AS

B.REN PAS P

C.REN *.PAS *.P

D.REN *.PAS *.P??

13.设当前盘中文件XY.C的路径为\A\B\XU,当前目录为\A\B。为了查看文件XY.C的内容,应使用命令()(本题分值:1分)

A

A.TYPE XU\XY.C

B.TYPE \XU\XY.C

C.DIR XU\XY.C

D.DIR \A\B\XU\XY.C

14.要将提示符改成当前盘当前目录后加一个大于号“>”,应使用命令()(本题分值:1分)

B

A.PROMPT

B.PROMPT $ p $ g

C.PROMPT $ $

D.PROMPT C\>

15.在多媒体计算机系统中,CD-ROM属于()(本题分值:1分)

D

A.感觉媒体

B.表示媒体

C.表现媒体

D.存储媒体

16.设当前盘为C盘,将A盘根目录下的文件目录信息存放到当前盘当前目录下的文件AB中,应使用命令()(本题分值:1分)

C

A.TYPE A:\>AB

B.DIR >AB

C.DIR A:\>AB

D.DIR \>AB

17.在位运算中,操作数每右移一位,其结果相当于()(本题分值:1分)

B

A.操作数乘以2

B.操作数除以2

C.操作数除以16

D.操作数乘以16

18.在当前盘当前目录下有一个文件A.BAT,其内容为

CD \

MD \XYZ\AB\B\C

CD XYZ\AB\B

在正确执行上述文件后,接着执行下列命令时,不会发生错误的是()(本题分值:1分)

C

A.MD C

B.RD \XYZ

C.RD C

D.RD B

19.下列命令组中两个DOS命令互相等价的是()(本题分值:1分)

D

A.TYPE AB.TXT与DIR AB.TXT

B.DISKCOMP A:B:与COMP A:.* B:*.

C.TYPE AB.TXT>>XY.TXT与COPY AB.TXT XY.TXT

D.TYPE AB.TXT>XY.TXT与COPY AB.TXT XY.TXT

20.设A盘为启动盘,其目录结构为

根目录

DOS子目录COMAND.COM

USER子目录 AUTOEXEC.BAT

其文件AUTOEXEC.BAT的内容如下:

MD \XYZ

CD \DOS\USER

则由A盘启动成功后,A盘的当前目录是()(本题分值:2分)

C

A.\DOS\USER

B.\XYZ

C.根目录

D.\DOS

21.C语言提供的合法关键字是()(本题分值:1分)

C

A.switch

B.cher

C.case

D.default

22.在C语言中,合法的字符常量是()(本题分值:1分)

B

A.′\084′

B.′\x43′

C.′ab′

D.′\0′

23.若已定义x和y为double类型,则表达式: x=1,y=x+3/2的值是()(本题分值:1分)

C

A.1

B.2

C.2.0

D.2.5

24.合法的数组定义是()(本题分值:1分)

D

A.int a[]=〃string〃

B.int a[5]=

C.char a=〃string〃

D.char a[]=

25.设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是()(本题分值:1分)

A

A.10<a<15

B.a==11||a==12||a==13||a==14

C.a>10&&a<15

D.!(a<=10)&&!(a>=15)

26.若t为double类型,表达式t=1,t+5,t++的值是()(本题分值:1分)

C

A.1

B.6.0

C.2.0

D.1.0

27.若有定义和语句:

char s[10]s=〃abcd〃printf(〃%s\n〃,s)

则结果是(以下μ代表空格)()(本题分值:1分)

D

A.输出abcd

B.输出a

C.输出abcdμμμμμ

D.编译不通过

28.若有定义和语句:

int **pp,*p,a=10,b=20

pp=&pp=&ap=&bprintf(〃%d,%d\n〃,*p,**pp)

则输出结果是()(本题分值:1分)

D

A.10,10

B.10,20

C.20,10

D.20,20

29.若有以下定义和语句:

int u=010,v=0x10,w=10

printf(〃%d,%d,%d\n〃,u,v,w)

则输出结果是()(本题分值:1分)

A

A.8,16,10

B.10,10,10

C.8,8,10

D.8,10,10

30.若有以下定义和语句:

char c1=′b′,c2=′e′

printf(〃%d,%c\n〃,c2-c1,c2-′a′+′A′)

则输出结果是()(本题分值:1分)

B

A.2,M

B.3,E

C.2,E

D.输出项与对应的格式控制不一致,输出结果不确定

31.若有定义:int a[3][4];,()不能表示数组元素a[1][1]。(本题分值:1分)

D

A.*(a[1]+1)

B.*(&a[1][1])

C.(*(a+1))[1]

D.*(a+5)

32.若i、j已定义为int型,则以下程序段中内循环体的总的执行次数是()(本题分值:1分)

for(i=5i>0i--)

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

A

A.20

B.24

C.25

D.30

33.若有以下定义和语句:

char *s1=〃12345〃,*s2=〃1234〃

printf(〃%d\n〃,strlen(strcpy(s1,s2)))

则输出结果是()(本题分值:1分)

A

A.4

B.5

C.9

D.10

34.若有以下定义和语句:

int a[10]=,*p=a

则不能表示a数组元素的表达式是()(本题分值:1分)

B

A.*p

B.a[10]

C.*a

D.a[p-a]

35.下面程序的输出结果是()(本题分值:2分)

C

A.k=3 a=2 b=3

B.k=3 a=3 b=2

C.k=2 a=3 b=2

D.k=2 a=2 b=3

36.下面程序的输出结果是()(本题分值:1分)

main()

{unsigned a=32768

printf(〃a=%d\n〃,a)}

C

A.a=32768

B.a=32767

C.a=-32768

D.a=-1

37.执行下面语句后的输出结果为()(本题分值:1分)

int i=-1

if(i<=0) printf(〃****\n〃)

else printf(〃%%%%\n〃)

D

A.****

B.%%%%

C.%%%%c

D.有语法错误,不能正确执行

38.对于条件表达式(M)?(a++):(a--),其中的表达式M等价于()(本题分值:1分)

C

A.M==0

B.M==1

C.M!=0

D.M!=1

39.下述程序段的输出结果是()(本题分值:1分)

int x=10

int7nbspy=x++

printf(〃%d,%d〃,(x++,y),y++)

A

A.11,10

B.11,11

C.10,10

D.10,11

40.若有以下的定义:

int a[]=,*p=a

则值为3的表达式是()(本题分值:1分)

A

A.p+=2,*(p++)

B.p+=2,*++p

C.p+=3,*p++

D.p+=2,++*p

41.假定所有变量均已正确说明,下列是程序段运行后x的值是()(本题分值:2分)

a=b=c=0x=35

if(!a) x--

else if(b)

if(c) x=3

else x=4

B

A.34

B.4

C.35

D.3

42.在以下一组运算中,优先级最高的运算符是()(本题分值:2分)

C

A.<=

B.=

C.%

D.&&

43.若有以下定义和语句:

int w[2][3],(*pw)[3]pw=w

则对w数组元素的非法引用是()(本题分值:2分)

A

A.*(w[0]+2)

B.*(pw+1)[2]

C.pw[0][0]

D.*(pw[1]+2)

44.若有以下程序片段: char str[ ]=〃ab\n\012\\\\〃printf(〃%d〃,strlen(str))

上面程序片段的输出结果是()(本题分值:2分)

C

A.3

B.4

C.6

D.12

45.函数调用:strcat(strcpy(str1,str2),str3)的功能是()(本题分值:2分)

C

A.将串str1复制到串str2中后再连接到串str3之后

B.将串str1连接到串str2之后再复制到串str3之后

C.将串str2复制到串str1中后再将串str3连接到串str1之后

D.将串str2连接到串str1之后再将串str1复制到串str3中

46.以下对C语言函数的有关描述中,正确的是()(本题分值:2分)

A

A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.C函数既可以嵌套定义又可以递归调用

C.函数必须有返回值,否则不能使用函数

D.C程序中有调用关系的所有函数必须放在同一个源程序文件中

47.以下叙述中不正确的是()(本题分值:2分)

C

A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值

B.在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C.在C中,外部变量的隐含类别是自动存储类别

D.在C中,函数形参可以说明为register变量

48.设有以下定义或语句,则输出的结果是(用small模式编译,指针变量占2个字节)()(本题分值:2分)

struct date

{long *cat

struct date *next

double dog

}too;

printf(〃%d〃,sizeof(too))

D

A.20

B.16

C.14

D.12

49.设有定义:struct sk

data,*p

若有p=&data,则对data中的a域的正确引用是()(本题分值:2分)

B

A.(*p).data.a

B.(*p).a

C.p->data.a

D.p.data.a

50.以下对枚举类型名的定义中正确的是()(本题分值:2分)

B

A.enum a=

B.enum a

C.enum a=

D.enum a

二、填空题(每空2分,共40分)请将答案分别写在答题卡中序号至的横线上,答在试卷上不得分。

1、与十进制数101等值的二进制数为。(本题分值:2分)

1100101

2、DOS命令分为内部命令与外部命令,XCOPY命令属于命令。(本题分值:2分)

外部

3、设当前盘为A盘,当前系统提示符为“>”,在不改变当前盘的情况下,显示C盘的当前目录路径,应使用命令。 (本题分值:2分)

CD C:

4、自动批处理文件名必须是。(本题分值:2分)

AUTOEXEC.BAT

5、设在当前盘当前目录下有两个文件W.TXT与P.TXT,现要将文件P.TXT连接到文件W.TXT的后面,若使用COPY命令,则完整的命令为。(本题分值:2分)

COPY W.TXT+P.TXT W.TXT

6、表示条件10<x<100或x<0的C语言表达式是。(本题分值:2分)

(x>10&&x<100)||x<0

或(10<x&&x<100)||x<0

或x<0 ||(x>10&&x<100)

或0>x ||(10<x&&x<100)

7、以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最笾怠G胩羁铡?br>#define N 3

#define M 4

void LineMax(int x[N][M])

{ int i,j,p

for(i=0i<Ni++)

{p=0

for(j=1j<Mj++)

if(x[i][p]<x[i][j])

printf(〃The max value in line is %d\n〃,)

}

}

main()

}

(本题分值:6分)

p=j

x[i][p]

LineMax(x)

8、以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。

main()

{float x[1000],sum=0.0,ave,a

int n=0,i

printf(〃Enter mark:\n〃)scanf(〃%f〃,&a)

while(a>= 0.0 &&n<1000)

{sum+=x[n]=

n++scanf(〃%f〃,&a)

}

ave=

printf(〃Output:\n〃)

printf(〃ave=%f\n〃,ave)

for(i=0i<ni++)

if() printf(〃%f\n〃,x[i])

}

(本题分值:8分)

a

a

sum/n或sum/(float)n或sum/(double)n

x[i]<ave或!(x[i]>=ave)或ave>x[i]

9、执行以下程序,输入-10的结果是,输入5的结果是,输入10的结果是,输入30的结果是。

(本题分值:8分)

0

5

10

5

10、以下程序的功能是。

main()

int sum=0,i

for(i=0i<10i++)

if(num[i]>0)

sum=num[i]+sum;

printf(〃sum=%6d〃,sum)

}

(本题分值:2分)

计算数组num中大于零的数据之和

11、以下程序可以把从键盘上输入十进制数(long型)以二到十六进制数的形式输出,请填空。

#include

main()

{char

b[16]=

int c[64],d,i=0,base

long n

printf(〃Enter a number:\n〃)scanf(〃%1d〃,&n)

printf(〃Enter new base:\n〃)scanf(〃%1d〃,&base)

do

{c[i]=

i++

n=n/base

}while(n!=0)

printf(〃The result is:\n〃)

for(--ii>=0--i)

{?d=c[i]

printf(〃%c〃,b)

}

}

(本题分值:4分)

n%base

[d]

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 */ <br>printf("cock hen chick\n")<br>for(i=1i<=20i++) <br>for(j=1j<=33j++) <br>for(k=1k<=33k++) <br>if (i+j+k*3==100&&i*5+j*3+k==100) <br>printf(" %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,bint i<br>a=b=1<br>for(i=1i<=10i++) /*要计算前30项,把10改为15。*/ <br>{printf("%8ld%8ld",a,b)<br>a=a+bb=b+a}}

递归法 源程序:

main()

{int i<br>for(i=0i<=19i++) <br>printf("%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<br>x=1.5<br>do {x0=pow(x+1,1./3)<br>deltax=fabs(x0-x)<br>x=x0<br>}while(deltax>1e-12)

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

执行结果:

1.3247179572

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

结果是32.66026079864

6.源程序:

main()

{int a,b,c,m<br>printf("Please input a,b and c:")<br>scanf("%d %d %d",&a,&b,&c)<br>if(a<b){m=aa=bb=m}

if(a<c){m=aa=cc=m}

if(b<c){m=bb=cc=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<br>scanf("%d",&a)<br>printf(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<br>scanf("%d %d",&a,&b)<br>c=aa=bb=c<br>printf("%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

0

0

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^cc=c^aa=a^c(这种算法不破坏b的值,也不用定义中间变量。)

三、编程题(第92页)

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

2.源程序:

main()

{int h,m<br>scanf("%d:%d",&h,&m)<br>printf("%d\n",h*60+m)}

执行结果:

9:23

563

3.源程序:

main()

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

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

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<br>printf("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<br>scanf("%lf%lf%lf",&a,&b,&c)<br>if (a+b>c&&a+c>b&&b+c>a) <br>{double s=(a+b+c)/2<br>printf("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=5float d=1.2,e=2.23,f=-43.56<br>printf("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<br>scanf("%d %d %d",&a,&b,&c)<br>m=aa=bb=cc=m<br>printf("%d %d %d\n",a,b,c)}

执行结果:

5 6 7

6 7 5

8.源程序:

main()

{int a,b,c<br>scanf("%d %d %d",&a,&b,&c)<br>printf("average of %d,%d and %d is %.2f\n",a,b,c,(a+b+c)/3.)<br>执行结果: <br>6 7 9 <br>average of 6,7 and 9 is 7.33 <br>9.不能。修改后的源程序如下: <br>main() <br>{int a,b,c,x,y<br>scanf("%d %d %d",&a,&b,&c)<br>x=a*by=x*c<br>printf("a=%d,b=%d,c=%d\n",a,b,c)<br>printf("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>=1&&x<=10||x>=200&&x<=210)&&x&1)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<br>scanf("%d,%d,%d",&a,&b,&c)<br>printf("min=%d\n",a>b?b>c?c:b:a>c?c:a)}

2.源程序:

main()

{unsigned long a<br>scanf("%ld",&a)<br>for(aprintf("%d",a%10),a/=10)}

执行结果:

12345

54321

3.(1)源程序:

main()

{int x,y<br>scanf("%d",&x)<br>if (x>-5&&x<0)y=x<br>if (x>=0&&x<5)y=x-1<br>if (x>=5&&x<10)y=x+1<br>printf("%d\n",y)}

(2)源程序:

main()

{int x,y<br>scanf("%d",&x)<br>if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1<br>else y=x-1else y=x<br>printf("%d\n",y)}

(3)源程序:

main()

{int x,y<br>scanf("%d",&x)<br>if(x<10) if(x>=5)y=x+1<br>else if(x>=0)y=x-1<br>else if(x>-5)y=x<br>printf("%d\n",y)}

(4)源程序:

main()

{int x,y<br>scanf("%d",&x)<br>switch(x/5) <br>{case -1:if(x!=-5)y=xbreak<br>case 0:y=x-1break<br>case 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下) http://img378.photo.163.com/nxgt/41463572/1219713927.jpg

5.源程序:

main()

{unsigned a,b,c<br>printf("请输入三个整数:")<br>scanf("%d %d %d",&a,&b,&c)<br>if(a&&b&&c&&a==b&&a==c)printf("构成等边三角形\n")<br>else if(a+b>c&&a+c>b&&b+c>a) <br>if(a==b||a==c||b==c)printf("构成等腰三角形\n")<br>else printf("构成一般三角形\n")<br>else printf("不能构成三角形\n")}

执行结果:

请输入三个整数:5 6 5

构成等腰三角形

6.源程序:

main()

{int x,y<br>scanf("%d",&x)<br>if(x<20)y=1<br>else switch(x/60) <br>{case 0:y=x/10break<br>default:y=6}

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

7.源程序:

main()

{unsigned mfloat n<br>scanf("%d",&m)<br>if(m<100)n=0<br>else if(m>600)n=0.06<br>else n=(m/100+0.5)/100<br>printf("%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<br>scanf("%ld",&i)<br>printf("%ld %d\n",i%10,(int)log10(i)+1)}

执行结果:

99887

7 5

10.源程序:

main()

{unsigned long iunsigned j[10],m=0<br>scanf("%ld",&i)<br>for(i){j[m++]=(i+2)%10i/=10}

for(mm--)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 ②x<amin

三、编程题(第145页)

1. 源程序:

main()

{int i=1,sum=i<br>while(i<101){sum+=i=-i-2sum+=i=-i+2}

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

执行结果:

51

2.源程序:

main()

{double p=0,n=0,fint i<br>for(i=1i<=10i++) <br>{scanf("%lf",&f)<br>if (f>0)p+=felse n+=f}

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

3.源程序:

main()

{unsigned a<br>scanf("%ld",&a)<br>for (aprintf("%d,",a%10),a/=10)<br>printf("\b \n")}

执行结果:

23456

6,5,4,3,2

4.源程序:

main()

{unsigned long a,b,c,i<br>scanf("%ld%ld",&a,&b)<br>c=a%1000<br>for(i=1i<bi++)c=c*a%1000<br>if(c<100)printf("0")<br>if(c<10)printf("0")<br>printf("%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=1int n<br>for(n=1n<=20n++){f/=ne+=f}

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

执行结果:

e=2.71828182845905

(2)源程序:

main()

{double e=1,f=1int n<br>for(n=1f>1e-4n++){f/=ne+=f}

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

执行结果:

e=2.7183

7.源程序:

main()

{unsigned long a=0,b=1,c=0int i,d<br>scanf("%d",&d)<br>for (i=1i<=(d+2)/3i++) <br>printf("%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,dscanf("%d",&d)<br>for(i=1i<=di++) <br>printf("%10ld",fun(i))}

执行结果:

15

1 2 3 6 11 20 37 68

125 230 423 778 1431 2632 4841

8.源程序:

main()

{int i<br>for(i=1010i<=9876i+=2) <br>if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf(" %d",i)}

执行结果:

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

9.源程序:

main()

{int i,j,k<br>printf("apple watermelon pear\n")<br>for(i=1i<=100i++) <br>for(j=1j<=10j++) <br>if((k=100-i-j)*2==400-i*4-j*40) <br>printf("%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<br>for(i=1i<mprintf("\n"),i++) <br>for(j=1j<m<br>putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'))}

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

*

***

*****

*******

*********

*******

*****

***

*