帮忙给个《C语言程序设计》 练习题 答案这次考试题就在其中。。。。

帮忙给个《C语言程序设计》 练习题 答案这次考试题就在其中。。。。,第1张

1A(B 中第四个选项首行是数字,D选型有关键字) 2D 3A 4A 5C(我在TC上运行的) 6A 7D 8D(0147是8进制转换成十进制即103即‘g’) 9D(属自动类型转换) 10 D 11C 12A(条件运算符运算方式是从右向左的) 13B(算术运算符-的优先级高于关系运算符<=,最后是逻辑判断 为真1,假0)14C

15 D(考察逗号运算符) 16D

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 <stdioh>

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 <stdioh>

void main()

{

int x,h,m,s;

scanf("%d",&x);

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

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

}

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

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

#include <stdioh>

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=a;a=c;c=b;b=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 0500000

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 <stdioh>

void main()

{

int a,m;

scanf("%d",&a);

switch(a/10)

{

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

case 4:case 5:m=1;break;

case 6:m=2;break;

case 7:m=3;break;

case 8:m=4;break;

default:m=5;break;

}

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

}

方法2

#include <stdioh>

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 <stdioh>

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 <stdioh>

void main()

{

char ch;

scanf("%c",&ch);

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

ch=ch-32;

printf("%c\n",ch);

}

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

#include <stdioh>

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 <stdioh>

void main()

{

int income;

float tax;

scanf("%d",&income);

if(income<=3500) tax=0;

else if(income<=5000) tax=003(income-3500);

else tax=003(5000-3500) 010(income-5000);

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

}

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

#include <stdioh>

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=10 、 k=k 1 、 k<=10

三、选择题

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

四、编程题

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

#include <stdioh>

void main()

{

int a,b,c,k;

for(k=100;k<=999;k )

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

{

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

if(k==aaa bbb ccc)

{

printf("]",k);

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

}

}

printf("\n");

}

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

#include <stdioh>

void main()

{

int k,flag,n=0;

for(k=1980;k<=2880;k )

{

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 <stdioh>

void main()

{

int n,t=1,s=1;

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

{ t=-t; s=s tn; }

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

}

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

#include <stdioh>

void main()

{

int fz,fm,n,i;

float s,t;

fz=2;fm=1;s=0;

scanf("%d",&n);

for(i=1;i<=n;i )

{

t=(10fz)/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 <stdioh>

void main()

{

int n,i;

float t,fm=1,e=1;

scanf("%d",&n);

for(i=1;i<=n;i )

{ fm=fmi; t=10/fm; e=e t; }

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

}

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

#include <stdioh>

void main()

{

int n;

float s=80,h=s/2;

for(n=2;n<=8;n )

{

s=s 2h;

h=h/2;

}

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

}

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

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

#include <stdioh>

#include <mathh>

void main()

{

float x,f,f1;

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

do

{ f=2xxx-4xx 5x-18; f1=6xx-8x 5; x=x-f/f1;

}while(fabs(f)>000001);

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

}

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

#include <stdioh>

void main()

{

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

for(a=1;a<=9;a )

for(b=1;b<=9;b )

for(c=1;c<=9;c )

if((a<c)&&(10a/c==(a100 b)/(b100 c)))

printf("%d/%d=%d%d/%d%d=%f\n",a,c,a,b,b,c,10a/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 <stdioh>

void main()

{

float s,t;

int i;

s=0,t=0;

for(i=1;i<=10;i )

{ t=t 10/i; s=s t; }

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

}

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

#include <stdioh>

void main()

{

int s,i,k,flag;

s=0;

for(i=3;i<=100;i )

{

flag=1;

for(k=2;k<i;k )

if(i%k==0)

{ flag=0; break; }

if(flag)

{ s=s i; printf("M",i); }

}

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

}

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

#include <stdioh>

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.

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

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

D

AALU

BCPU

CMPU

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

AScroll-Lock

BNum-Lock

CPgDn

DPrtSc(Print Screen)

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

C

A调试程序

B解释程序

C编译程序

D编辑程序

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

B

A119375

B11975

C119125

D1193

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

A

A2550625

B255125

C1270625

D127125

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

A

ANCFC

BCERNET

CISDN

DInternet

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

A

A终止当前 *** 作

B系统复位

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

D结束命令行

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

B

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

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

C不能处理外部命令

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

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

C

AREN PAS AS

BREN PAS P

CREN PAS P

DREN PAS P

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

A

ATYPE XU\XYC

BTYPE \XU\XYC

CDIR XU\XYC

DDIR \A\B\XU\XYC

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

B

APROMPT

BPROMPT $ p $ g

CPROMPT $ $

DPROMPT C\>

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

D

A感觉媒体

B表示媒体

C表现媒体

D存储媒体

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

C

ATYPE A:\>AB

BDIR >AB

CDIR A:\>AB

DDIR \>AB

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

B

A *** 作数乘以2

B *** 作数除以2

C *** 作数除以16

D *** 作数乘以16

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

CD \

MD \XYZ\AB\B\C

CD XYZ\AB\B

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

C

AMD C

BRD \XYZ

CRD C

DRD B

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

D

ATYPE ABTXT与DIR ABTXT

BDISKCOMP A:B:与COMP A: B:

CTYPE ABTXT>>XYTXT与COPY ABTXT XYTXT

DTYPE ABTXT>XYTXT与COPY ABTXT XYTXT

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

根目录

DOS子目录 COMANDCOM

USER子目录 AUTOEXECBAT

其文件AUTOEXECBAT的内容如下:

MD \XYZ

CD \DOS\USER

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

C

A\DOS\USER

B\XYZ

C根目录

D\DOS

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

C

Aswitch

Bcher

Ccase

Ddefault

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

B

A′\084′

B′\x43′

C′ab′

D′\0′

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

C

A1

B2

C20

D25

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

D

Aint a[]=〃string〃;

Bint a[5]=;

Cchar a=〃string〃;

Dchar a[]=;

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

A

A10<a<15

Ba==11||a==12||a==13||a==14

Ca>10&&a<15

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

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

C

A1

B60

C20

D10

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=&p;p=&a;p=&b;printf(〃%d,%d\n〃,p,pp);

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

D

A10,10

B10,20

C20,10

D20,20

29若有以下定义和语句:

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

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

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

A

A8,16,10

B10,10,10

C8,8,10

D8,10,10

30若有以下定义和语句:

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

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

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

B

A2,M

B3,E

C2,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=5;i>0;i--)

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

A

A20

B24

C25

D30

33若有以下定义和语句:

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

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

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

A

A4

B5

C9

D10

34若有以下定义和语句:

int a[10]=,p=a;

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

B

Ap

Ba[10]

Ca

Da[p-a]

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

C

Ak=3 a=2 b=3

Bk=3 a=3 b=2

Ck=2 a=3 b=2

Dk=2 a=2 b=3

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

main()

{unsigned a=32768;

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

C

Aa=32768

Ba=32767

Ca=-32768

Da=-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

AM==0

BM==1

CM!=0

DM!=1

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

int x=10;

int7nbspy=x++;

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

A

A11,10

B11,11

C10,10

D10,11

40若有以下的定义:

int a[]=,p=a

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

A

Ap+=2,(p++)

Bp+=2,++p

Cp+=3,p++

Dp+=2,++p

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

a=b=c=0;x=35;

if(!a) x--;

else if(b);

if(c) x=3;

else x=4;

B

A34

B4

C35

D3

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]

Cpw[0][0]

D(pw[1]+2)

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

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

C

A3

B4

C6

D12

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中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

BC函数既可以嵌套定义又可以递归调用

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

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

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

A20

B16

C14

D12

49设有定义:struct sk

data,p;

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

B

A(p)dataa

B(p)a

Cp->dataa

Dpdataa

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

B

Aenum a=;

Benum a;

Cenum a=;

Denum a;

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

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

1100101

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

外部

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

CD C:

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

AUTOEXECBAT

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

COPY WTXT+PTXT WTXT

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=0;i<N;i++)

{p=0;

for(j=1;j<M;j++)

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=00,ave,a;

int n=0,i;

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

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

{sum+=;x[n]=;

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

}

ave= ;

printf(〃Output:\n〃);

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

for(i=0;i<n;i++)

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=0;i<10;i++)

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(--i;i>=0;--i)

{d=c[i];

printf(〃%c〃,b);

}

}

(本题分值:4分)

n%base

[d]

《C语言程序设计》作业与思考题解答

说明:习题中P119:27 表示《C/C++上机实践及习题选解》中第119页的27题,其它以此类推,书后有解答。非《C/C++上机实践及习题选解》中的习题提供习题参考答案。

习题解答

作业一

1.合法的标识符: a12 A21 sum2 _fun C_program

不合法的标识符:f(x) $a21 21a while tan@sohucom

2

main( )

{ int i, j, s;

i=2; j=3;

s=ij;

printf(“ %d %d=%d”,i,j,s)

}

作业二

1指出下列哪些为C语言正确的整型(int)常量、实型(float)常量、字符型(char)常量?

正确的整型(int)常量:0 -325 128 03456

正确的实型(float)常量: 00 2 12e-3 5e2

正确的字符型(char)常量: ‘b’ ‘104’ ‘108’ ‘ ’ ‘8’

2表达式的结果 (1) 1

(2) 0

(4) 0

(5) 95

(9) ‘A’

(11) 2

(12) 45

3 Y=sin(2x)+(a+b)/(ab)/(1+a/b)+aa/2

4.设m为整数,用逻辑表达式表示:能同时被3与7整除或者被5除余2且小于100的整数。

m%3= =0 && m%7= =0 || m%5= =2 && m<100

作业三

1.华氏温度通过公式C=5/9(f-32)转换成摄氏温度。试编程并上机调试运行:从键盘上输入华氏温度,利用公式计算后输出摄氏温度(要求:保留一位小数;记录调试过程中遇到的问题及解决方法)。

#include

main( )

{ float f,c;

scanf(“%f”,&f);

c=50/9(f-32);

printf(“c=%1f”,c);

}

2

用IF语句:

#include

#include

main( )

{ float x,y;

scanf(“%f”,&x);

if (x<0) y=fabs(x);

else if (x<10) y=x;

else if (x<20) y=3-x/5;

else if (x<40) y=3x-10;

else y=0;

printf(“y=%f’,y);

}

用switch 语句:

#include

#include

main( )

{ float x,y;

scanf(“%f”,&x);

if (x<0) y=fabs(x);

else switch ( int(x/10) )

{ case 0: y=x; break;

case 1: y=3-x/5;break;

case 2,3: y=3x-10; break;

defaut y=0;

}

printf(“y=%f’,y);

}

3 解答见P151;

4.程序如下:

#include

#include

main()

{

int i=0;

char ch;

ch=getchar();

while (ch!=' ')

{ if (ch=='(') i++;

if (ch==')') i--;

if (i<0) break;

ch=getchar();

}

if (i==0) printf("(与)匹配") ;

else if (i<0) printf(" 缺) ") ;

else printf("缺少)");

}

5 程序如下:

#include

main()

{

int i,j,k,m=0;

for (i=1;i<10;i++)

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

{ k=100-i10-j5;

if (k>0) { printf(" i=%-3dj=%-3dk=%-3d",i,j,k);

m++;

if (m%4==0) putchar(' ');

}

}

printf(" m=%d ",m);

}

6 在横线上填写合适语句,完善程序,使之完成如下功能:从键盘上输入一个不多于7位的正整数,统计其中2的个数,并求各位数字中的最小数。

#include

main( )

{int count,min,temp;

long n;

min=9; count=0;

scanf( “%ld” ,&n);

do

{ temp= n % 10 ;

if (temp= =2) count++;

if (min>temp) min=temp;

n=n/10;

}while ( n );

printf(“count=%d,min=%d”,count,min)

}

作业四

1.p128: 46 解答见p156

2 p128: 411 解答见p158

3编写一递归函数计算mn ,并从键盘输入m,n的值(如4,3),求mn 的值(上机调试)。

funm_n(int m,int n)

{

int y;

if (n==1) y=m;

else y=mfunm_n(m,--n);

return y;

}

main()

{int m,n,y;

printf("Input integer(m,n):");

scanf("%d,%d",&m,&n);

y=funm_n(m,n);

printf(" %d^%-d=%-d",m,n,y);

}

4P128: 412 (3); 答案:12345678

5.求3-100中的素数,要求编写一函数来判断某数是否为素数。

main()

{

int prime,i,n=0;

for (i=3;i<=100;i++)

{ prime=prime_num(i);

if (prime) { if (n%10==0) printf(" ");printf("%4d",prime);n++;}

}

}

prime_num(int m)

{ int k=2,r;

do {

r=m % k;

if (r==0) break;

k++;

}while(k<m); p=""> </m);>

if (r!=0) return m;

else return 0;

}

6 结果如下:

main0:x=12,y=2

fun: x=6,y=25

main:x=12,y=2

fun:x=7,y=26

main:x=12,y=2

作业五

1从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。

#include

#include

main()

{

int i=0,c[52]={0},m=0;

char str[80];

printf("Input a string:");

scanf("%s",str);

while (str[i])

{ if (str[i]>='A' && str[i] <='Z') c[str[i]-'A']++;

if (str[i]>='a' && str[i] <='z') c[str[i]-'a'+26]++;

i++;

}

for (i=0;i<26;i++)

if (c[i]){ if (m%8==0) putchar(' ');m++;

printf("%c:%-d ",i+'A',c[i]);

}

for (i=0;i<26;i++)

if (c[i+26]){if (m%8==0) putchar(' ');m++;

printf("%c:%-d ",i+'a',c[i+26]);

}

}

2 P132: 515 程序见p167

3.从键盘上输入8个数,用选择法按由大到小的顺序排列并输出,要求用指针实现。

#include

#include

main()

{

int data[8],i,p1,p2,temp;

p1=data;

printf("Input 8 numbers:");

for (i=0;i<8;i++)

{ scanf("%d",p1);/ 或 &(p1) / ;

p1++;

}

for (p1=data;p1<data+8-1;p1++) p=""> </data+8-1;p1++)>

for (p2=p1+1;p2<data+8;p2++) p=""> </data+8;p2++)>

if (p1<p2){ temp=p1; p1=p2; p2=temp;}

for (i=0,p1=data;i<8;i++,p1++)

printf("%6d",p1 ) ;

}

4.从键盘上输入一个4 4整数矩阵,以主对角线()为对称轴,将左下角元素中较大元素代替右上角对应元素,并将右上角元素(含对角线元素)输出。

#include

#include

main()

{

int d[4][4],i,j,temp;

printf("Input 16 numbers:");

for (i=0;i<4;i++)

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

scanf("%d",&d[i][j]) ;

for (i=0;i<4;i++)

for (j=0;j<i;j++) p=""> </i;j++)>

if (d[i][j]>d[j][i]) d[j][i]=d[i][j];

for (i=0;i<4;i++)

{ printf(" ");

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

if (j>=i) printf("%6d",d[i][j] ) ;

else printf("%6c",' ') ;

}

}

5.盘上输入两个字符串a,b,下面程序将a,b的对应字符中的较大者存放在数组c的对应位置上,填空完善之。

#include

#include

main( )

{int k=0;

char a[80],b[80],c[80]={‘’},p,q;

p=a; q=b;

gets(a); gets(b);

while (p!=0 || q!=0 )

{ if ( p!=0 ) c[k]=p;

else c[k]=q;

p++; q++; k++;

if ( p !=0 ) strcat(c,p);

else strcat(c,q);

puts(c);

}

作业六

1.P134:65 程序见p178

2.P135:67 程序见p181

3.P134:618 程序见p196

以上就是关于帮忙给个《C语言程序设计》 练习题 答案 这次考试题就在其中。。。。全部的内容,包括:帮忙给个《C语言程序设计》 练习题 答案 这次考试题就在其中。。。。、谁有C语言程序设计(第三版)杜友福主编的答案啊、求C语言程序设计的答案等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9996122.html

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

发表评论

登录后才能评论

评论列表(0条)

保存