admin 管理员组

文章数量: 887031


2023年12月18日发(作者:wordpress唯美个人博客主题)

1

目录

第 1-3 章 C 语言基础知识习题 ................................................................................................ 2

1 选择题 ............................................................................................................................. 2

2 填空题 ............................................................................................................................. 7

3 答案及部分解析 ............................................................................................................. 9

第 4 章 选择结构习题 ............................................................................................................. 11

1 选择题 ........................................................................................................................... 11

2 填空题 ........................................................................................................................... 17

3 答案及部分解析 ........................................................................................................... 23

第 5 章 循环结构习题 ............................................................................................................. 26

1 选择题 ........................................................................................................................... 26

2 填空题: ....................................................................................................................... 32

3 答案及部分解题分析 ................................................................................................... 39

第 6 章 数组习题 ..................................................................................................................... 41

1. 单项选择题 .................................................................................................................. 41

2. 填空题 .......................................................................................................................... 44

3. 判断题 .......................................................................................................................... 45

4. 程序填空题 .................................................................................................................. 45

5. 阅读程序,分析程序的功能。 .................................................................................. 49

第 7 章 函数习题 ..................................................................................................................... 55

1. 单项选择题 .................................................................................................................. 55

2. 填空题 .......................................................................................................................... 56

3. 判断题 .......................................................................................................................... 57

4. 程序填空题 .................................................................................................................. 58

5. 写出下列程序运行结果 .............................................................................................. 59

第 8 章 指针习题 ..................................................................................................................... 67

1 选择题 ........................................................................................................................... 67

2 填空题 ........................................................................................................................... 69

1

第 1-3 章 C 语言基础知识习题

1 选择题

1. 以下不是 C 语言的特点的是( )。

A、语言简洁紧凑

B、能够编制出功能复杂的程序C、C 语言可以直接对硬件操作D、C 语言移植性好

2. 下列字符序列中,不可用作 C 语言标识符的是( )。

A.abc123 B.no.1 C._123_ D._ok

3. 正确的 C 语言标识符是 ( )。

A.

_buy_2 B.2_buy C.?_buy D.buy?

4. 请选出可用作 C 语言用户标识符的一组标识符( )。

A.

void B.a3_b3 C.For D.2a

define _123 -abc DO

WORD IF Case sizeof

5. 下列符号中,不属于转义字符的是( )。

A. B.0xAA C.t D.0

6. 不属于 C 语言关键字的是( )。

A.

int B.break C.while D.character

7. 是 C 语言提供的合法关键字的是( )。

A.

Float B.signed C.integer D.Char

8. 以下不能定义为用户标示符的是( )。

A.

scanf B.Void C._3com_ D.int

9. 一个 C 程序是由( )。

A.

一个主程序和若干子程序组成

B.

一个或多个函数组成C.若干过程组成

D. 若干子程序组成

10. C 语言程序的基本单位是( )。

A.

程序行 B.语句 C.函数 D.字符

11. 下 列 说 法 中 , 错 误 的 是 ( )。A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外

C.主函数只能调用用户函数或系统函数,用户函数可以相互调用

D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数

12. 以下说法中正确的是( )。

A.C 语言程序总是从第一个定义的函数开始执行

B.在 C 语言程序中,要调用的函数必须在 main( )函数中定义

C.C 语言程序总是从 main( )函数开始执行

1

D.C 语言程序中的 main( )函数必须放在程序的开始部分

13. C 编译程序是( )。

A.C 程序的机器语言版本

B.

一组机器语言指令

C.

将 C 源程序编译成目标程序

D.

由制造厂家提供的一套应用软件

14.以下选项中,合法的用户标识符是( )。

A.long B._2abc C.3dmax D.

15.以下选项中,合法的实型常数是( )。

A.5E2.0 B.E-3 C.2E0 D.1.3E

16.

已知大写字母 A 的 ASCII 码值是 65, 小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量’101’是( )。

A.字符 A B.字符 a C.字符 c D.非法的常量17.以下选项中, 合法转义字符的选项是( )。

A.’’ B.’018’ C.’xab’ D.’abc’

18.以下选项中,正确的字符常量是( )。

A.”F” B.’’’ C.’W’ D.’’

19.

以下选项中可作为 C 语言合法整数的是

A.10110B B.0386 C.0Xffa D.x2a2

20.下列变量定义中合法的是

A.short _a=1-.le-1; B.double b=1+5e2.5;

C.long do=0xfdaL; D.float 2_and=1-e-3;

21.

与数学式子

9xn

2x  1

对应的 C 语言表达式是( )。

B.9*x**n/(2*x-1)

D.9*pow(n,x)/(2*x-1)

A.9*x^n/(2*x-1)

C.9*pow(x,n)*(1/(2*x-1))

22.

若有代数式

3ab

cd

,则不正确的 C 语言表达式是( )。

B.3*a*b/c/d

D.a*b/d/c*3

A.

a/c/d*b*3

C.3*a*b/c*d

23.

已知各变量的类型说明如下:

int m=8,n, a, b;

unsigned long w=10;

double x=3.14, y=0.12;

则以下符合 C 语言语法的表达式是( )。

A.a+=a-=(b=2)*(a=8) B. n=n*3=18

C.x%3 D.y=float (m)

24.

以下符合 C 语言语法的赋值表达式是( )。

A.a=9+b+c=d+9 B.a=(9+b, c=d+9)

C.a=9+b, b++, c+9 D.a=9+b++=c+9

25.

已知字母 A 的 ASCII 码为十进制数 65,且 S 为字符型,则执行语句 S=’A’+’6’-’3’;

后,S 中的值为( )。

A.

’D’ B.68 C.不确定的值 D.’C’

26.在 C 语言中,要求运算数必须是整型的运算符是( )。

A./ B.++ C.*= D.%

27.

若有说明语句:char s=’72’;则变量 s( )。1

A.包含一个字符

B.

包含两个字符

C.包含三个字符

D.说明不合法,s 的值不确定

28.

若有定义:int m=7; float x=2.5, y=4.7; 则表达式 x+m%3*(int)(x+y)%2/4 的值是( )。A.2.500000 B.2.750000 C.3.500000 D.0.000000

29.

在 C 语言中,char 型数据在内存中的存储形式是( )。

A.

补码 B.反码 C.原码 D.ASCII 码

30.

设变量 x 为 float 类型,m 为 int 类型,则以下能实现将 x 中的数值保留小数点后两位,

第三位进行四舍五入运算的表达式是( )。

A.x=(x*100+0.5)/100.0

B.m=x*100+0.5, x=m/100.0

C.x=x*100+0.5/100.0

D.x=(x/100+0.5)*100.0

31.表达式 13/3*sqrt(16.0)/8 的数据类型是( )。

A.

int B.float C.double D.不确定32.设以下变量均为 int 类型,则值不等于 7 的表达式是( )。

A.(m=n=6, m+n, m+1)

B.(m=n=6, m+n, n+1)

C.(m=6, m+1, n=6, m+n)

D.(m=6, m+1, n=m, n+1)

33.假设所有变量均为整型,则表达式(x=2, y=5, y++, x+y)的值是( )。

A.7 B.8 C.6 D.2

34.已知 s 是字符型变量,下面不正确的赋值语句是( )。

A.s=’012’; B.s= ’u+v’;

C.s=’1’+’2’; D.s=1+2;

35.

已知 s 是字符型变量,下面正确的赋值语句是( )。A.s=’abc’; B.s=’08’;

C.s=’xde’; D.s=””;

36.

若有以下定义,则正确的赋值语句是( )。int x,y;

float z;

A.x=1,y=2, B.x=y=100

C.x++; D.x=int (z);

37.

设 x、y 均为 float 型变量,则不正确的赋值语句是( )。A.++x ; B.x*=y-2;

C.y=(x%3)/10; D.x=y=0;

38.

下列语句中符合 C 语言的赋值语句是( )。

A.a=7+b+c=a+7; B.a=7+b++=a+7;

C.a=7+b,b++,a+7 D.a=7+b,c=a+7;

39.putchar 函数可以向终端输出一个( )。

A.整型变量表达式值。 B.字符串

C.实型变量值。 D.字符或字符型变量值。40.以下程序段的输出结果是( )。

int a=12345; printf(”%2dn”, a);

1

A.12 B.34 C.12345 D.提示出错、无结果

41.若 x 和 y 均定义为 int 型,z 定义为 double 型,以下不合法的 scanf()函数调用语句为

( )。A.scanf(”%d%lx,%le”,&x,&y,&z); B.scanf (”%2d*%d%lf ”,

&x, &y, &z); C.scanf(”%x%*d%o”,

&x,&y);

D。scanf(”%x%o%6.2f”, &x,&y,&z);

42.有如下程序段:

int x1,x2;

char y1,y2;

scanf(”%d%c%d%c”,&x1,&y1,&x2,&y2);

若要求 x1、x2、y1、y2 的值分别为 10、20、A、B,正确的数据输入是( )。(注:└┘代表空格)

A.10A└┘20B B.10└┘A20B

C.10

└┘A└┘20└┘ B D.10A20└┘B

43.

若变量已正确说明为 float 类型, 要通过语句 scanf(”%f %f%f”, &a, &b, &c);给 a 赋予

10.0, b 赋予 22.0, c 赋予 33.0, 不正确的输入形式为( )。

A.10<回车> B.10.0,22.0,33.0<回车>

22<回车>

33

C.10.0<回车> D.10 22<回车>

22.0 33.0<回车> 33<回车>

44.

有如下程序,若要求 x1、x2、y1、y2 的值分别为 10、20、A、B,正确的数据输入是

( )。(注:└┘代表空格)

int x1,x2;

char y1,y2;

scanf(”%d%d”,&x1,&x2);

scanf(”%c%c”, &y1,&y2);

A.1020AB B.10└┘20└┘ABC

C.10└┘20 D.10└┘20AB

AB

45.

已有定义 int a=-2;和输出语句:printf(”%8lx”,a);以下正确的叙述是( )。

A.整型变量的输出格式符只有%d 一种

B.

%x 是格式符的一种,它可以适用于任何一种类型的数据

C.

%x 是格式符

D.

%8lx 不是错误的格式符,其中数字 8 规定了输出字段的宽度46.有如下程序段,对应正确的数据输入是( )。

float x,y; scanf(”%f%f”,

&x,&y);

printf(”a=%f,b=%f”, x,y);

A.2.04<回车> B.2.04,5.67<回车>

5.67<回车>

C.A=2.04,B=5.67<回车> D.2.055.67<回车>

47.

有如下程序段,从键盘输入数据的正确形式应是( )。(注:└┘代表空格)

float x,y,z;

scanf(“x=%d,y=%d,z=%d”,&a,&y,&z);

1

A.123 B.x=1,y=2,z=3

C.1,2,3 D.x=1└┘ y=2└┘ z=3

48.

以 下 说 法 正 确 的 是 ( )。A.输入项可以为一个实型常量,如 scanf(”%f”,3.5);

B.只有格式控制,没有输入项,也能进行正确输入,如 scanf(”a=%d,b=5d”);

C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如 scanf(”%4.2f”,&f);

D.当输入数据时,必须指明变量的地址,如 scanf(”%f”,&f);

49.

根据定义和数据的输入方式,输入语句的正确形式为:( )。(注:└┘代表空格) 已有定义:float x,y;

数据的输入方式:1.23<回车>

4.5<回车>

A.scan(”%f,%f”,&x,&y); B.scanf(”%f%f”,&x,&y);

C.scanf(”%3.2f└┘%2.1f”,&x,&y); D.scanf(”%3.2f%2.1f”,&x,&y);

50.根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为( )。

#include ”stdio.h”

main()

{char s1,s2,s3;

输入语句;

printf(”%c%c%c”,s1,s2,s3);

}

输入形式:A└┘B└┘C<回车> (注:└┘代表空格)

输出形式:A└┘B

A.scanf(”%c%c%c”,&s1,&s2,&s3);

B.scanf(”%c└┘%└┘c%c”,&s1, &s2,&s3);

C.scanf(”%c,%c,%c”,&s1,&s2,&s3);

D.scanf(”%c%c”, &s1, &s2,&s3);

51.

以下程序的执行结果是:( )。#include ”stdio.h”

main()

{ int x=2,y=3;

printf(”x=%%d,y=%%dn”,x,y);

}

A. x=%2,y=%3 B. x=%%d,y=%%d

C. x=2,y=3 D. x=%d,y=%d

52.

以下程序的输出结果是( )。(注:└┘代表空格)

#include ”stdio.h”

main()

{ printf(”nstring1=%15s*”, ”programming”);

printf(”nstring2=%-5s*”, ”boy”);

printf(”string3=%2s*”, ”girl”);

}

A.

string1=programming└┘└┘└┘└┘* B.string1=└┘└┘└┘└┘programming*

string2=boy* string2=boy└┘└┘*string3=gi*

string3=gi*

C.string1=programming└┘└┘└┘└┘* D.string1=└┘└┘└┘└┘programming*

string2=└┘└┘boy*string3=girl* string2=boy└┘└┘*string3=girl*

53.

根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是( )。

1

#include ”stdio.h”

main()

{ int a;

float b;

输入语句输出语句

}

输入形式:1└┘2.3<回车> (注:└┘代表空格)

输出形式:a+b=3.300

A.scanf(”%d%f”,&a,&b); B.scanf(”%d%3.1f”,&a,&b);

printf(”na+b=%5.3f”,a+b); printf(”na+b=%f”,a+b);

C.scanf(”%d,%f”,&a,&b); D.scanf(”%d%f”,&a,&b);

printf(”na+b=%5.3f”,a+b) printf(”na+b=%f”,a+b);

54.

阅读以下程序,当输入数据的形式为:12,34,正确的输出结果为( )。#include ”stdio.h”

main()

{ int a,b;

scanf(”%d%d”, &a,&b);

printf(”a+b=%dn”,a+b);

}

A.

a+b=46 B.有语法错误

C.a+b=12 D.不确定值

55.

若有定义:int x,y; char s1,s2,s3; 并有以下输出数据:(注:└┘代表空格)

1└┘2< 回 车 >

U└┘V└┘W<回车>

则能给 x 赋给整数 1,给 y 赋给整数 2,给 s1 赋给字符 U,给 s2 赋给字符 V,给 s3 赋给字符 W 的正确程序段是( )。

A.

scanf(”x=%dy=%d”,&x,&y); s1=getchar();s2=getchar();s3=getchar();

B.scanf(”%d%d”,&x,&y); s1=getchar();s2=getchar();s3=getchar();

C.scanf(”%d%d%c%c%c”,&x,&y,&s1,&s2,&s3);

D.scanf(”%d%d%c%c%c%c%c%c”,&x,&y,&s1,&s1,&s2,&s2,&s3,&s3);

2 填空题

1. C 语言的符号集包括 、 、 。

2. 结构化设计中的三种基本结构是 、 、 。

3. C 语言源程序文件的后缀是 ,经过编译后生成文件的后缀是

接后生成文件的后缀是 。

4. C 语言的关键字都用 {大写或小写}。

5. 一个函数由两部分组成,它们是 、 。

6. 函数体一般包括 、 。

7. C 语言是通过 来进行输入和输出的。

8. 以下程序的执行结果 。

#include ”stdio.h”

main()

,经过链

1

{ short i=-1,j=1;

printf(”dec:%d,oct:%o,hex:%x,unsigned:%un”,i,i,i,i);

printf(”dec:%d,oct:%o,hex:%x,unsigned:%un”,j,j,j,j);

}

9. 以下程序的执行结果是 。

#include ”stdio.h”

main()

{ char s=’b’;

printf(”dec:%d,oct:%o,hex:%x,ASCII:%cn”, s,s,s,s);

}

10. 以下程序的执行结果是 。(注:└┘代表空格)

#include ”stdio.h”

main()

{ float pi=3.1415927;

printf(”%f,%.4f,%4.3f,%10.3f”,pi,pi,pi,pi);

printf(”n%e,%.4e,%4.3e,%10.3e”,pi,pi,pi,pi);

}

11. 以下程序的执行结果是: 。#include ”stdio.h”

main()

{ char c=’c’+5;

printf(”c=%cn”,c);

}

12. 以下程序输入 1└┘2└┘3 后的执行结果是 。(注:└┘代表空格)

#include ”stdio.h”

main()

{ int i,j;

char k;

scanf(”%d%c%d”,&i,&k,&j);

printf(”i=%d,k=%c,j=%dn”,i,k,j);

}

13.有以下程序,若输入 9876543210 后的执行结果是 ;若输入为:98└┘76└┘543210

后的执行结果是 ;若输入为:987654└┘3210 后的执行结果为: 。(注:└┘

代表空格)

#include ”stdio.h”

main()

{ int x1,x2;

char y1,y2;

scanf(”%2d%3d%3c%c”,&x1,&x2,&y1,&y2);

printf(”x1=%d,x2=%d,y1=%c,y2=%cn”,x,y);

}

14.

若 x 和 y 均为 int 型变量,则以下语句的功能是 。x+=y; y=x-y; x-=y;

15.

有一输入函数 scanf(”%d”,k);则不能使 float 类型变量k 得到正确数值的原因是: 。

16.

有如下程序段,输入数据:12345ffl678 后,u 的值是 【1】 ,v 的值是 【2】 。

int u;

float v;

scanf(“%3d%f”,&u,&v);

1

3 答案及部分解析

一.选择题答案

1.B 2.B

7.B 8.D

13.C 14.B

19.C 20.A

25.A 26.D

31.C 32.C

37.C 38.D

43.B 44.D

49.B 50.A

55.D

14.

解析:C 语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须3.A

9.B

15.C

21.C

27.A

33.B

39.D

45.D

51.D

4.B

10.C

16.A

22.C

28.A

34.B

40.C

46.A

52.D

5.B

11.A

17.A

23.A

29.D

35.C

41.D

47.B

53.A

6.D

12.C

18.C

24.B

30.B

36.C

42.A

48.D

54.D

为字母或下划线。而且不能与 C 语言规定的关键字同名。关键字如:auto, break,

case, char, const, continue, default, do, double, else, entry, extern, for, float, goto, if, int,

int, long, register, return, short, signed, sizeof, static, struct, unsigned, while, switch,

typedef, void, volatile, unior。这些关键字先不必硬背下来,随着后续的学习, 你将发现它们都是一些数据的类型、语句等,自然会随着学习的深入,而记下来。

15.

解析:用指数形式表示一个实型常数时,E 或 e 之前必须有数字,且 E 后面指数必须为整数。

16.解析:’101’为转义字符,相对应一个 ASCII 码字符。(101)8=(65)10=A.

17.解析:转义字符的特征是以“”开头,其后跟一些字符,如n, t, ’, , }, ”, b, f 等代表一些特殊的含义,而后如跟数字,可以为八进制或者十六进制,将其转换为对应的 ASCII 码值,就可以得出对应的字符。“”后跟八进制的写法:0nn, 或者nn,

表示“0”或者“”后只能跟 1 或 3 位 0——7 之间的数字;“”后跟十六进制的写法:xnn,或者nn, 表示“x”或者“”后只能跟 1 或 2 位 0——9 及 a——

f(A——F)之间的字符。选项 B 的错误在于 8 不是八进制;而选项 C 的错误在于没有“”;选项 D 的错误在于超长(多了一位)。

21.解析:B 的错误在于赋值语句的左侧只能为一个简单变量,如:n=3*(n=18); C 的错误在于%运算符只能适用于整型数据,D 的错误在于作类型转换时,应将类型加上括号,即为:y=(float) m

31.解析:逗号表达式的最终结果为最右端的表达式(即 x+y)的值,其运算顺序是从左自右的。第三个表达式 y++,其隐含有两步操作:先取 y 的原值,再执行 y=y+1 运算;

而本题中,虽然没有将 y 赋给某个变量(取其原值),但还是一定会执行加运算的。因而,经过第三个表达式,y 已经自加为 6,故 x+y 的值为 8,相对应得表达式最终结果为 8。若本题改为:(x=2, y=5, z=y++, x+z),则其结果应为 7。

二.填空题答案

1. 答案:英文字母、数字、一些有特定含义的标点符号

2. 答案:顺序结构、选择结构、循环结构

3. 答案:C,OBJ,EXE

4. 答案:小写

1

5.

6.

7.

8.

答案:函数说明部分和函数体

答案:变量定义部分和执行部分

答案:输入和输出函数

答案:dec:-1,oct:177777,hex:ffff,unsigned:65535

dec:1,oct:1,hex:1,unsigned:1

9. 答 案 :dec:98,oct:142,hex:62,ASCII:b

10.答案:3.141593,3.1416,3.142,

└┘└┘└┘└┘└┘3.142

3.141593e+00,3.1416e+00,3.142e+00,└┘└┘3.142e+00

(注:由于 c 编译系统不同,我们上机使用的机器,其第二个 printf 语句实际结果为:

3.14159e+00,3.142e+00,3.14e+00,└┘└┘3.14e+00,即:小数点后取 5 位。)

11.答案:c=h

12.答案:i=1,k=└┘,j=2

13.答案:第一种情况的执行结果:x1=98,x2=765,y1=4,y2=1

第二种情况的执行结果:x1=98,x2=76,y1=└┘,y2=3

第三种情况的执行结果:x1=98,x2=765,y1=4,y2=2

14.

答案:交换 x 和 y 的值

15.

答案:(1)格式符应为:%f;(2)变量前边未加取地址符&, 即应为 scanf(”%f”,&k);

16.答案:【1】123 【2】45.000000

··

第 4 章 选择结构习题

1 选择题

1. 已有定义:int x=3, y=4, z=5; 则表达式!(x+y)+z-1 && y+z/2 的值是()。

A.6 B.0 C.2 D.1

2. 设 a=5,b=6,c=7,d=8,m=2,n=2, 则执行(m=a>b) && (n=c>d)后 n 的值为()。

A.1 B.2 C.3 D.4

3. 设 x、y 和 z 都是 int 类型变量,且 x=3,y=4,z=5, 则下面的表达式中,值为 0 的表达式为()。

A.’x’ && ’y’ B.x<=y

C.x||y+z && y-z D.!((x

4. 为了避免嵌套的 if-else 语句的二义性,C 语言规定 else 总是与()组成配对关系。A.缩排位置相同的 if

B.

在其之前未配对的 if

C.在其之前未配对的最近的 if

D.同一行上的 if

5. 逻辑运算符两侧运算对象的数据类型()。

A.

只能是 0 或 1

B.

只能是 0 或非 0 正数C.只能是整型或字符型数据D.可以是任何类型的数据

6. 以下关于运算符优先顺序的描述中正确的是()。

A.关系运算符<算术运算符<赋值运算符<逻辑与运算符B.逻辑与运算符<关系运算符<算术运算符<赋值运算符C.赋值运算符<逻辑与运算符<关系运算符<算术运算符D.算术运算符<关系运算符<赋值运算符<逻辑与运算符

7. 下列运算符中优先级最高的是()。

A.< B.&& C.+ D.!=

8. 选择出合法的 if 语句(设 int x,a,b,c;)()。

A.if(a=b) c++;

B.

if(a=

C.

if(a<>b) c++;

D.

if(a=>b) c++;

9. 能正确表示“当 x 的取值在[-58,-40]和[40,58]范围内为真,否则为假”的表达式是()。

A.(x>= -58) && (x<= -40) && (x>=40) && (x<=58)

B.(x>= -58) || (x<= -40) || (x>=40) || (x<=58)

C.(x>= -58) && (x<= -40) || (x>=40) && (x<=58)

D.(x>= -58) | |(x<= -40) && (x>=40) || (x<=58)

10. 判断 char 型变量 s 是否为小写字母的正确表达式是()。 A.’a’

<= s<=’z’ B.(s>=’a’) & (s<=’z’)

C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s)

··

11. 若希望当 x 的值为奇数时,表达式的值为“真”,x 的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是()。

A.x%2==1 B.!(x%2==0)

C.!(x%2) D.x%2

12.已知 x=45, y=’a’, z=0; 则表达式(x>=z && y<’z’ || !y)的值是()。

A.0 B.语法错

C.1 D.“假”

13.

指出下列程序段所表示的逻辑关系是()。

if(a

{if(c==d)

x=10;

}

else

x=-10;

14.

10 a  b且c  d

A.

x 

 10a  b且c  d



10

a  b且c  d

B.

x 

a  b

 10

10

a  b且c  d

C.

x 

 10

a  b且c  d



10

a  b且c  d

D.

x 

 10

c  d

 1

x  0

有一函数:

y  0

x  0

,以下程序段中不能根据 x 值正确计算出 y 值的是()。

x  0

1

A.if (x>0) y=1;

else if (x==0) y=0;

else y= -1;

B.y=0;

if (x>0) y=1;

else if (x<0) y= -1;

C.y=0;

if (x>=0)

if(x>0) y=1;

else y= -1;

D.if (x>=0)

if (x>0) y=1;

else y=0;

else y= -1;

15.

执行以下语句后,y 的值为()。

int x,y,z;

x=y=z=0;

++x || ++y && ++z;

··

A.0 B.1 C.2 D.不确定值16.已知 int a=1,b=2,c=3; 以下语句执行后 a,b,c 的值是()。

if(a>b)

c=a; a=b; b=c;

A.a=1, b=2, c=3 B.a=2, b=3, c=3

C.a=2, b=3, c=1 D.a=2, b=3, c=2

17.请阅读以下程序:该程序()。

#include ”stdio.h”

main()

{ int x=-10, y=5, z=0;

if (x=y+z) printf(”***n” );

else printf(”$$$n”);

}

A.有语法错不能通过编译

B.可以通过编译但不能通过连接C.输出***

D. 输 出 $$$ 18.以下程序的运行结果是()。

#include ”stdio.h”

main()

{ int a=1;

if (a++>1) printf(”%dn”, a);

else printf(”%dn”, a--);

}

A.0 B.1 C.2 D.3

19.当 a=1,b=2,c=4,d=3 时,执行完下面一段程序后 x 的值是()。

if (a

if (c

else

if (a

if (b

else x=3;

else x=4;

else x=5;

A.1 B.2 C.3 D.4

20.执行以下程序段后,变量 x,y,z 的值分别为()。

int a=1,b=0, x, y, z;

x=(--a==b++)?--a:++b;

y=a++;

z=b;

A.x=0,y=0,z=0 B.x= -1,y= -1,z= 1

C.x=0,y=1,z=0 D.x= -1,y= 2, z= 1

21.

若 a、b、c、d、w 均为 int 类型变量,则执行下面语句后的 w 值是()。

a=1;b=2;c=3;d=4;

w=(a

A.1 B.2 C.3 D.4

22.

以下程序的输出结果是()。

··

#include ”stdio.h”

main()

{

int a=5, b=4, c=6, d; printf(”%dn”,

d=a>b? a>c?a:c :b);

}

A.5 B.4 C.6 D.不确定23.若 a、b、c1、c2、x、y 均为整型变量,正确的 switch 语句是()。

A.switch (a+b); B.switch a

{ case 1: y=a+b; break; { case c1: y=a-b; break;

case 0: y=a-b; case c2: x=a*d; break;

break; default: x=a+b;

} }

C.switch (a*a+b*b) D.switch(a-b)

{ case 3: { default: y=a*b; break;

case 1: y=a+b; break; case 3: x=a+b; break;

case 3: y=b-a; break; case 10: case 11: y=a-b; break;

} }

24.

执行下列程序,输入为 3 的数出结果是()。

#include ”stdio.h”

main()

{

int k; scanf(”%d”,

&k); switch(k)

{ case 1: printf(”%dn”, k++);

case 2: printf(”%dn”, k++);

case 3: printf(”%dn”, k++);

case 4: printf(”%dn”, k++);

break;

default: printf(”Full!n”);

}

}

A.3 B.4 C.3 D.4

5 4

25.

假定等级和分数有以下对应关系:

等级:A 分数:85——100

等级:B 分数:60——84

等级:C 分数:60 以下

对于等级 grade 输出相应的分数区间,能够完成该功能的程序段是()。

A.switch (grade)

{ case ’A’ :printf(”85——100n”);

case ’B’ :printf(”60——84n”);

case ’C’ :printf(”<60n”); default: printf(”grade is error!n”);

}

B.

switch (grade)

{ case ’A’ :printf(”85——100n”);

break;

case ’B’ :printf(”60——84n”);

case ’C’ :printf(”<60n”); default: printf(”grade is error!n”);

}

C.

switch (grade)

{ case ’A’ :printf(”85——100n”);

break;

case ’B’ :printf(”60——84n”);

break;

case ’C’ :printf(”<60n”); default: printf(”grade is error!n”);

}

D.

switch (grade)

{ case ’C’ :printf(”<60n”);

break;

case ’B’ :printf(”60——84n”);

break;

default: printf(”grade is error!n”);

break;

case ’A’ :printf(”85——100n”);

}

26.

有如下程序,写出该执行结果()。

#include ”stdio.h”

main()

{

float x=2.0, y;

if (x<0.0) y=0.0;

else if (x<10.0) y=1.0/x;

else y=1.0;

printf(”%fn”,y);

}

A.0.000000 B.0.250000 C.0.500000

27.

以下程序的运行结果是()。

#include ”stdio.h”

main()

{

int a=2,b= -1,c=2;

if (a

if (b<0)

c=0;

else c++;

printf(”%dn”,c);

}

A.0 B.1 C.2

28.运行以下程序后,如从键盘上输入 china#,则输出为()。#include ”stdio.h”

··

D.1.000000

D.3

main()

{

int v1=0,v2=0;

char ch;

while ( (ch=getchar()) != ’# ’)

switch (ch)

{ case ’a’:

case ’h’:

default: v1++;

case ’o’: v2++;

}

printf(”%d,%dn”, v1,v2);

}

A.2,0 B.5,0 C.5,5

29.

有以下程序,若输入为字符 s,则程序运行结果为()。#include ”stdio.h”

main()

{

char ch;

ch=getchar();

switch (ch)

{ case ’a’: printf(”a=%cn”,ch);

default: printf(”end!n”);

case ’b’: printf(”b=%cn”,ch);

case ’c’: printf(”c=%cn”,ch);

}

}

A.end! B.end! C.有语法错误

b=s

c=s 30.有以下程序,程序运行后的输出结果是()。

#include ”stdio.h”

main()

{

int a=15, b=21, m=0;

switch (a%3)

{ case 0: m++; break;

case 1: m++;

switch (b%2)

{ default: m++;

case 0: m++; break;

}

}

printf(”%dn”,m);

}

A.1 B.2 C.3

D.2,5

D.a=s

end!

··

D.4

··

2 填空题

1. 若从键盘输入 58,则输出结果是 。

#include ”stdio.h”

main()

{

int a; scanf(”%d”,

&a);

if (a>50) printf(”%d”, a);

if (a>40) printf(”%d”,a);

if (a>30) printf(”%d”,a);

}

2. 设 int x=9,y=8;表达式 x==y+1 的结果是 。

3. 定义 int x,y;执行 y=(x=1,++x,x+2);后, y 的值是 。

4. 定义 int x=10,y,z; 执行 y=z=x; x=y==z;后, x 的结果是

5. 设 int a=1,b=2,c,d,e; 执行

c=(-a++)+(++b);

d=(b--)+(++a)-a;

e=(a/(++b))-(a/(--a));

请问 a,b,c,d,e 的结果是: 。

6. 设 int a=2,b=3,c,d,e,f; 执行c=(a++>= --b); d=(a==++b);

e=(a--!=b);

f=(++a>b--);

请问 a,b,c,d,e,f 的结果是: 。

7. 以下程序的运行结果是 。

#include ”stdio.h”

main()

{

int a,b,c,s,w,t;

s=w=t=0;

a= -1; b=3; c=3;

if (c>0) s=a+b;

if (a<=0)

{ if (b>0)

if (c<=0) w=a-b;

}

else if (c>0) w=a-b;

else t=c;

printf(”%d %d %d”, s,w,t);

}

8. 以下程序的运行结果是 。

#include ”stdio.h”

main()

{

int a,b,c,d,e;

a=c=1;

··

b=20;

d=100;

if (!a) d=d++;

else if (!b)

if (d) d= --d;

else d= d--;

printf(”%dnn”, d);

}

9. 以下程序的运行结果是 。

#include ”stdio.h”

main()

{

int a, b= 250, c;

if ((c=b)<0) a=4;

else if (b=0) a=5;

else a=6;

printf(”t%dt%dn”,a,c);

if (c=(b==0))

a=5;

printf(”t%dt%dn”,a,c);

if (a=c=b) a=4;

printf(”t%dt%dn”,a,c);

}

10. 下面程序根据以下函数关系,对输入的每个 x 值,计算出 y 值。请在【】内填空。

x y

2

-1

x<=-1 x-1

#include ”stdio.h”

main()

{

int x,y;

scanf(”%d”, &x);

if (【1】) y=x*(x+2);

else if (【2】) y=1/x;

else if (x<=-1) y=x-1;

else 【3】;

if (y!= -1) printf(”%d”,y);

else printf(”error”);

}

11. 以下程序的功能是计算一元二次方程 ax2+bx+c=0 的根。请在【】内填入正确内容。#include ”stdio.h”

#include ”math.h”

main()

{

float a,b,c,t,disc,w,term1,term2;

printf(”enter a,b,c:”);

scanf(%f%f%f”,&a,&b,&c);

if (【1】)

··

if (【2】) printf(”no answer due to input errorn”);

else printf(”the single root is %fn”, - c/b);

else

{ disc=b*b-4*a*c;

w=2*a;

term1= -b/w;

t=abs(disc);

term2=sqrt(t)/w;

if (【3】)

printf(”complex rootn real part=%f imag part =%fn”, term1,term2);

else

printf(”real rootsn root1=%f root2=%fn”, term1+term2,term1-term2);

}

}

12. 以下程序根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。请在【】内填入正确内容。

#include ”math.h”

#include ”stdio.h”

main()

{

float a,b,c,s,area;

printf(”please input three edges of a triangle:”);

scanf(”%f%f%f”,&a,&b,&c);

if (【1】)

{ s=(a+b+c)/2;

area=sqrt(s*(s-A*(s-B*(s-c));

printf(”nthe area of the triangle is: %f”,area);

if ((a==b)&&(b==c))

printf(”等边三角形”);

else if (【2】)

printf(”等腰三角形”):

else if (【3】)

printf(”直角三角形”):

else printf(”一般三角形”):

}

else printf(”不能组成三角形”);

}

13. 以下程序的功能是判断输入的年份是否是闰年。请在【】内填入正确内容。#include ”stdio.h”

main()

{

int year, flag;

printf(”please input the year to jude whether it is a leap year:”);

scanf(”%d”,&year);

if (year%400==0) flag=1;

else if (【1】) flag=1;

else 【2】;

if (flag) printf(”%d is a leap yearn”,year);

··

else printf(”%d is not a leap year!n”,year);

}

14. 以下程序是对用户输入的字母进行大小写转换。请在【】内填入正确内容。#include ”stdio.h”

main()

{

char ch;

printf(”please input a letter:”);

scanf(”%c”,&ch);

if (【1】) ch=ch+32;

else if (ch>=’a’ && ch<=’z’)

【2】;

printf(” the converted letter is: %cn”,ch);

}

15. 以下程序是对从键盘输入的任何三个整数,求出其中的最小值。请在【】内填入正确内容。

#include ”stdio.h”

main()

{

int a,b,c,min;

printf(”please input three numbers:”);

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

if (【1】)

min=b;

else

min=a;

if (min>c)

【 2 】 ;

printf(”min=%dn”,min);

}

16. 以下程序实现这样的功能:商店卖西瓜,10 斤以上的每斤 0.15 元,8 斤以上的每斤 0.3 元,6斤以上的每斤 0.4 元,4 斤以上的每斤 0.6 元,4 斤以下的每斤 0.8 元,从键盘输入西瓜的重量和顾客所付钱数,则输出应付款和应找钱数。请在【】内填入正确内容。#include ”stdio.h”

main()

{

float weight, money, rate;

printf(”the paid money of the client is:”);

scanf(”%f”,&money);

printf(”the weight of the watermelon is:”);

scanf(”%f”,&weight);

if (【1】)

rate=0.15;

else if (weight>8)

rate=0.3;

else if (weight>6)

【 2 】 ;

else if (weight>4)

rate=0.6;

【3】

··

rate=0.8;

printf(”the account payable of the watermelon is %fn”, weight*rate);

printf(”the change for client is %fn”,money-weight*rate);

}

17. 以下程序段的运行结果是 。#include ”stdio.h”

main()

{

char ch1=’a’,ch2=’A’;

switch (ch1)

{ case ’a’:

switch (ch2)

{case ’A’: printf(”good!n”); break;

case ’B’: printf(”bad!n”); break;

}

case ’b’: printf(”joken”);

}

}

18. 根据以下函数关系,对输入的每个 x 值,计算出相应的 y 值。请在【】内填入正确内容。

x y

x<0 0

0<=x<10 x

10<=x<20 10

20<=x<40 -0.5x+20

#include ”stdio.h”

main()

{

int x, rate;

float y;

printf(”please input the value of x:”);

scanf(”%d”,&x);

if (【1】) rate= -1;

else rate=【2】;

switch(rate)

{ case –1: y=0; break;

case 0: y=x; break;

case 1: y=10; break;

case 2:

case 3: y=-0.5*x+20; break;

default: y= -2;

}

if (【3】) printf(”y=%fn”,y);

else printf(”the value of x is invalid!n”);

}

19. 以下程序实现的功能是:从键盘输入某年某月,输出该年份该月的天数。请在【】内填入正确内容。

#include ”stdio.h”

main()

{

··

int year, month, days, leap;

printf(”please input both year and month:”);

scanf(”%4d/%2d”,&year,&month);

switch (【1】)

{ case 1:

case 3:

case 5;

case 7:

case 8:

case 10:

case 12: days=31;

【2】

case 4:

case 6:

case 9:

case 11: days=30;

break;

case 2: if (year%400==0) leap=1;

else if (year%4==0 && year%100!=0) leap=1;

else 【3】;

if (leap)

days=29;

else

days=28;

}

printf(”%d 年%d 月的天数为%dn”, year, month, days);

}

20. 以下程序完成两个数的四则运算。请在【】内填入正确内容。#include ”stdio.h”

main()

{

float x,y;

char operator;

printf(”please input the expression:”);

scanf(”%f%c%f”,&x,&operator,&y);

switch (【1】)

{ case ’+’: printf(”%g%c%g=%gn”, x, operator, y, x+y);

【2】;

case ’-’: printf(”%g%c%g=%gn”, x, operator, y, x-y);

break;

case ’*’: printf(”%g%c%g=%gn”, x, operator, y, x*y);

break;

case ’/’: if (y==0.0)

printf(”除零错误!n”);

else

printf(”%g%c%g=%gn”, x, operator, y, x/y);

break;

【3】: printf(”表达式存在错误!n”);

}

··

}

21. 以下程序运行后的输出结果是

#include ”stdio.h”

main()

{

int x=10, y=20, t=0;

if (x==y) t=x; x=y; y=t;

printf(”%d,%dn”,x,y);

}

22. 执行以下语句后,x、y 和 z 的值分别为

int x,y,z;

x=y=z=0;

++x || ++y && ++z;

。。

3 答案及部分解析

一.选择题答案

1. D 2. B 3. D 4.C 5.D 6.C

7. C 8. A 9. C 10.C 11.C 12.C

13.B 14.C 15.A 16.B 17.C 18.C

19.B 20.B 21.A 22.C 23.D 24.C

25.D 26.C 27.C 28.C 29.A 30.A

2. 解析:当条件 1:m=a>b 的值为假时, 便已经确定整个表达式的值为假,所以不必再继续判断第二个表达式的逻辑值。由于没有执行第二个表达式 n=c>d,所以 n 的值仍为 2。

17.解析:if 的条件表达式 x=y+z 为赋值语句,x=5 为非零值,即为 if (1) printf(”***n”);

23.解析:A.的错误在于 switch(a+b);其后有一个“;”,B 的错误在于 switch a 的条件表达式 a 没有括号,应该为 switch(a),C 的错误在于有两个 case 具有相同的入口值。

28.解析:当输入 c 时,switch 语句执行情况为:

{case ’a’:

此处向下执行

case ’h’:

default: v1++;

case ’0’: v2++;

switch(ch)

因为没有 break 语句

当继续输入 h 时,switch 语句的执行情况为:

switch(ch)

因为没有 break 语句

{case ’a’:

此处向下执行

case ’h’:

default: v1++;

case ’0’: v2++;

}

v1

v1

1

2

v2  v2  1  2

重复上述过程,输入 5 个有效字符,则 v1 和 v2 执行 5 次自加操作,所以:

v1=5, v2=5

二.填空题答案

··

1.答案:585858

解析:虽然三个 if 语句按照嵌套方式书写,但是程序仍然是依顺序运行的,会分别对每一个 if 的条件表达式进行判断,若其条件表达式为真,就执行其后的语句,否则,不执行。

2.答案:1

解析:注意该表达式是关系表达式的双等号,所以其结果只能为 1 或 0。3.答案:4

4.

答案:1

5.

答案:在 Turbo C 编译系统下,结果为 a=2,b=3,c=2,d=3,e=-1;若在 Visual C++下,

结果为 a=2,b=3,c=2,d=3,e=-0。

解析:①在 Turbo C 编译系统下,解题过程如下:

第一个赋值语句“c=(-a++)+(++b);”可分解为如下的几个语句:

b  b  1



c  a  b b  2  1  3, c  1  3  2, a  1  1  2

a  a  1

此时 a=2,b=3,c=2。

第二个赋值语句“d=(b--)+(++a)-a;”可分解为如下的几个语句:

a  a  1



d  b  a  a a  2  1  3, d  3  3  3  3, b  3  1  2

b  b  1

此时 a=3,b=2,c=2,d=3。

第三个赋值语句“e=(a/(++b))-(a/(--a));”中由于自加、自减运算符的优先级高于其它运算符,故先运算++和--,令 a=2,b=3,然后该等式中 a 的值都取 2 参与运算,故该等式等价与:“e=2/3-2/2;”,因此 e 的值等于 0。

此时 a=2,b=3,c=2,d=3,e=0

②在 Visual C++编译系统下,解题过程如下:

前两条赋值语句“c=(-a++)+(++b);”、“d=(b--)+(++a)-a;”的运算过程和在 Turbo C 编译系统一样,第三个赋值语句“e=(a/(++b))-(a/(--a));”可按步骤分解为如下的几个语句



e  a / b  a /(a  1) b  2  1  3, e  3 / 3  3 / 2  0, a  2

a  a  1

因此,其结果为 a=2,b=3,c=2,d=3,e=-0

6.答案:a=3,b=2,c=1,d=1,e=0,f=0

解析:第一个赋值语句 c=(a++>= --b);可以分解为如下的语句:

b  b  1

b  b  1



c  (a  b) b  3  1  2, c  (2  2)  1, a  2  1  3

a  a  1

b  b  1

 b  2  1  3, d  (3  3)  1

d  (a  b)第二个赋值语句

d=(a==++b);可以分解为如下的语句:

第三个赋值语句 e=(a--!=b);可以分解为如下的语句:

··

e  (a! b)

 e  (3! 3)  0, a  3  1  2

a  a

 1

第四个赋值语句 f=(++a>b--);可以分解为如下的语句:

a  a  1



f  (a  b) a  a  1  3, f

 (3  3)  0, b  3  1  2

b  b  1

由以上各步,可以得到:a=3,b=2,c=1,d=1,e=0,f=0

7.答案:2 0 0

解析:参看如下的注释语句。

if (c>0) s=a+b; /* c=3>0 为真,所以执行 s=a+b 语句;即:s=2*/

if (a<=0) /*由于 a= -1, 故 a<=0 为真,所以执行其后的大括号内的语句*/

{ if (b>0) /*由于 b=3, 故 b>0 为真,可以继续下面的语句*/

if (c<=0) w=a-b; /*由于 c=3,c<=0 为假,其后 w=a-b 不会执行*/

}

else if (c>0) w=a-b;/*这一对 if-else 因 a<=0 为真,所以没有机会执行到*/

else t=c;

8.答案:100

9.答案: 6 250

5

1

0

0

10.答案:【1】x>2 && x<=10 【2】x>-1 && x<=2 【3】y= -1

11.答案:【1】a==0 【2】b==0 【3】disc<0

12.答案:【1】(a+b>c) && (b+c>a) &&(a+c>b)

【2】 (a==b) || (b==c) || (a==c)

【3】 (a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)

13.答案:【1】(year%4==0)&&(year%100!=0) 【2】flag=0

14.答案:【1】ch>=’A’ && ch<=’Z’ 【2】ch=ch-32

15.答案:【1】a>b 【2】min=c;

16.答案:【1】weight>10 【2】rate=0.4 【3】else

17.答案:good!

joke

18.答案:【1】x<0 【2】x/10 【3】y!= -2

19.答案:【1】month 【2】break; 【3】leap=0;

20.答案:【1】operator 【2】break 【3】default

21.答案:20,0

22.答案:1,0,0

第 5 章 循环结构习题

1 选择题

1. 以下程序的输出结果是( )。main()

{ int n=4;

while (n--)

printf(〞%d〞,--n);

}

A.20 B.31

2. 以下程序的输出结果是( )。main()

{int x=10,y=10,i;

for(i=0;x>8;y=++i)

printf("%d%d",x--,y);

}

A.10192 B.9876

3. 当执行以下程序段时。

x=-1;

do

{x=x*x;}

while (!x);

A.

循环体将执行一次

C.循环体将执行无数多次

4. 执行以下程序后输出的结果是(

main()

{ int y=10;

do{y--;}while(--y);

printf("%dn",y--);}

A.-1 B.1

5. 下面程序的输出结果是( )。

main()

{ int x=3,y=6,a=0;

while (x++!=(y-=1))

{a+=1;

if (y

}

printf("x=%d,y=%d,a=%dn",x,y,a);

}

·26·

C.321 D.210

C.10990 D.101091

B.循环体将执行两次

D.系统将提示有语法错误。

C.8 D.0

·27·

A.x=4,y=4,a=1 B.x=5,y=5,a=1

C.x=5,y=4,a=3 D.x=5,y=4,a=1

6. 若 i,j 已定义为 int 类型,则以下程序段中内循环的总的执行次数是 ( )。

for (i=5;i;i--)

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

{…}

A.20 B.24

7. 请 读 程 序 :

#include

main()

{int x=1,y=0,a=0,b=0;

switch(x)

{case 1:switch(y)

{case 0:a++;break;

case 1:b++;break;

}

case 2:a++;b++;break;

}

printf("a=%d,b=%dn",a,b);

}

上面程序的输出结果是( )。

A.a=2,b=1 B.a=1,b=1

8. 若有以下程序段,w 和 k 都是整型变量w=k;

LB: if(w==0) goto LE;

w--;

printf(〞*〞);

goto LB;

LE:

则不能与上面程序段等价的循环语句是(A. for(w=k;w!=0;w--)

print(〞*〞);

B. w=k;

while(w--!=0)

printf(〞*〞);

w++;

C. w=k;

do {w--;printf(〞*〞);}

while (w!=0);

D. for (w=k;w;--w) printf(〞*〞);

9. 下面程序的输出是( )。

C.25

C.a=1,b=0

)。

D.30

D.a=2,b=2

·28·

main()

{

char *s=〞12134211〞;

int k,v1=0,v2=0,v3=0,v4=0;

for (k=0;s[k];k++)

switch(s[k])

{

default:v4++;

case 1:v1++;

case 2:v2++;

csse 3:v3++;

}

printf(〞v1=%d,v2=%d,v3=%d,v4=%dn〞,v1,v2,v3,v4);

}

A.v1=4,v2=2,v3=1,v4=1

C.v1=5,v2=8,v3=6,v4=1

10. 有以下程序#include〞stdio.h〞int abc(int u,int v );

main()

{

int c,a=24,b=16;

c=abc(a,b);

printf(〞%dn〞,c);

}

int abc (int u,int v)

{

int w;

while (v)

{w=u%v; u=v; v=w;}

return u;

}

输出结果是( )。

A.6 B.7 C.8

11.在下列选项中,没有构成死循环的程序段是( )。

A.

B.v1=4,v2=9,v3=3,v4=1

D.v1=8,v2=8,v3=8,v4=8

D.9

int i=100;

while (1)

{

i=i%100+1;

if(i>100) break;

}

B.

for ( ; ;);

C.

int k=1000;

do {++k;}while (k>=10000);

D.

int s=36;

while (s) ;

--s;

12.

若输入 B,以下程序的运行结果为( )。

main()

{char grade;scanf("%c",&grade);

switch(grade)

{case'A':printf(">=85.");

case'B':

case'C':printf(">=60.");

case'D':printf("<60.");

default:printf("error.");

}

}

A.>=85. B.>=60. C.>=60.<.

13.

列程序运行的情况是( )。

main()

{ int i=1,sum=0;

while(i<10)sum=sum+1;i++;

printf("i=%d,sum=%d",i,sum);

}

A.i=10,sum=9 B.i=9,sum=9 C.i=2,sum=1

14.有以下语句:

i=1;

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

与以上语句序列不等价的有( )。

A. for(i=1; ;i++) {sum+=i;if(i==100)break;}

B. for(i=1;i<=100;){sum+=i;i++;}

C. i=1;for(;i<=100;)sum+=i;

D. i=1;for(; ;){sum+=i;if(i==100)break;i++;}

15.下面程序的运行结果为( )。

main()

{ int n;

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

{ if(n%3==0)continue;

printf("%d",n);

}

}

A.12457810 B.369 C.12

·29·

.

D.运行出现错误D.

·30·

16.

下面程序的运行结果是( )。

main()

{int x,y,z;

x=0;y=z=-1;

x+=-z---y;

printf("x=%dn",x);

}

A.x=4 B.x=0 C.x=2

17.

标有/**/的语句的执行次数是( )。

int y,i;

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

{if(i%2==0)continue;

y+=i;/**/

}

A.20 B.19 C.10

A.只能用逻辑表达式

C.只能用逻辑表达式或关系表达式

D.x=3

D.9

B.只能用关系表达式D.可用任意表达式

18.

在 C 语言中,if 语句后的一对圆括号中,用以决定分支的流程的表达式。

19.

在以下给出的表达式中,与 do-while(E)语句中的(E)不等价的表达式是( )。

A.(!E==0) B.(E>0||E<0) C.(E==0) D.(E!=0)

20.

假定所有变量均已正确定义,下列程序段运行后 x 的值为( )。

k1=1;k2=2; k3=3; x=15; if(!k1)x--;else if(k2) if(k3)x=4;else x=3;

A.14 B.4 C.15 D.3

21.执行下面语句的输出为( )。

int i=-1;

if(i<=0)printf(“* * * *n”);

else printf(“% % % % n”);

A.* * * * B.% % % % C.% % % % c

22.下列程序的输出是( )。

#include

main()

{ int i;char c;

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

{c=getchar();putchar(c);

}

}

D.有错,执行不正确

程序执行时从第一列开始输入以下数据,代表换行符。

u

w

xsta

B.u C.u D.u

w w w

x xs xsta

23.

下列程序的输出为( )。

·31·

#include"stdio.h"

main()

{ int i,j,x=0;

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

{x++;

for(j-0;j<=3;j++)

{if(j%2)continue;x++; }

x++;

}

printf("x=%dn",x);

}

A.x=4 B.x=8

24.

下列程序的输出为( )。

#include

main()

{int i,j,k=0,m=0;

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

{ for(j=0;j<3;j++)k++;k-=j;}

m=i+j;

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

}

A.k=0,m=3 B.k=0,m=5

C.x=6 D.x=12

C.k=1,m=3 D.k=1,m=5

25.

在 C 语言中,为了结束 while 语句构成的循环,while 后一对圆括号中表达式的值应该为

( )。

A.0 B.1 D.非 0

26.

在 C 语言中,为了结束由 do-while 语句构成的循环,while 后一对圆括号中表达式的值应为( )。

A.0 B.1 D.非 0

27.下列程序的输出为( )。

#include

main()

{ int k=0;char c='A';

do

{switch(c++)

{ case'A':k++;break;

case'B':k--;

case'C':k+=2;break;

case'D':k=k%2;continue;

case'E':k=k*10;break;

default:k=k/3;

}

k++;

}

while(c<'G');

·32·

printf("%dn",k);

}

A.k=3 B.k=4 C.k=2

28.C 语言的 if 语句嵌套时,if 与 else 的配对关系是(

A. 每个 else 总是与它上面的最近的 if 配对

B. 每个 else 总是与最外的 if 配对

C. 每个 else 与 if 的配对是任意的

D. 每个 else 总是与它上面的 if 配对29.下列程序的输出为( )。

#include

main()

{int i=0,j=0,a=6;

if((++i>0)||(++j>0))a++;

printf("i=%d,j=%d,a=%dn",i,j,a);

}

A.i=0,j=0,a=6 B.i=1,j=1,a=7

30.下列程序段的输出结果为( )。

main()

{int x=3;

do

{ printf("%3d",x-=2);}

while(!(--x));}

A.1 B.3 0

D.k=0

)。

C.i=1,j=0,a=7 D.i=0,j=1,a=7

C.1 -2 D.死循环

2 填空题:

1. 当输入 19,2,21 时下列程序运行的结果是 。main()

{int a,b,c,max;

printf("please scan three number a,b,c:n");

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

max=a; if(max

if(max

printf("max is:%d",max);

}

2. 若输入字母 C,程序输出结果为【1】;若输入字符*,程序将【2】。#include

main()

{char c1,c2;

c1=getchar();

while(c1<97||c1>122)c1=getchar();

c2=c1-32;

printf("%c,%cn",c1,c2);

·33·

}

3. 以下程序运行的结果为 。

main()

{ int a,b,c,x,y,z;

a=10;b=2;

c=!(a%b);x=!(a/b);

y=(a=0);

z=(a=0);

printf("%d,%d,%d,%dn",c,x,y,z);

}

4. 若输入 4,程序运行结果为【 1 】,若输入-4,运行结果为【 2 】,若输入 10,运行结果为【3 】.

main()

{ int x,y;

scanf("%d",&x);

if(x<1)

{ y=x;

printf("x=%d,y=x=%dn",x,y);

}

else if(x<10)

{ y=2*x-1;

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

}

else

{ y=3*x-11;

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

}

}

5. 以下程序运行的结果 。main()

{int i=1,sum=0;

loop:if(i<=10)

{sum+=i;

i++;

goto loop;

}

printf("sum=%dn",sum);

}

6. 以下程序运行的结果 。main()

{ int x=2,y,z;

x*=3+1;

printf("%d,",x++);

x+=y=z=5;

·34·

printf("%d,",x);

x=y==z;

printf("%dn",x);

}

7. 以下程序运行的结果 。#include

#include

main()

{int i,k,m,n=0;

for(m=1;m<=10;m+=2)

{ if(n%10==0)printf("n");

k=sqrt(m);

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

if(m%i==0)break;

if(i>k)

{printf("%2d",m);

n++;

}

}

}

8.如果输入‘1’,‘2’,‘3’,‘4’,程序运行输出的是 。

#include

main()

{char c;

int i,k;

k=0;

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

{while(1)

{ c=getchar();if(c>='0'&&c<='9')break;}

k=k*10+c-'0';

}

printf("k=%dn",k);

}

9.

运行以下程序后,如果从键盘上输入 china#<回车>,则输出结果为

#include

main()

{int v1=0,v2=0;

char ch;

while ((ch=getchar())!='#')

switch(ch)

{case 'a':

case 'h':

default: v1++;

case '0':v2++;

·35·

}

printf("%d,%dn",v1,v2);

}

10.

程序运行结果是 。#include

main()

{int i;

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

{ if(i>4){printf("%dt",i++);break;}

printf("%dt",i++);

}

}

11.

以下程序运行的结果是

#include

main()

{ int a,b;

for(a=1,b=1;a<=100;a++)

{ if(b>=20)break;

if(b%3==1)

{ b+=3;

continue;

}

b-=5;

}

printf("%dn",a);

}

。。

12.

以下程序运行的结果是

main()

{int i=1;

while(i<10)

if(++i%3!=1)continue;

else printf("%d",i);

}

13.

程序运行的结果是 。main()

{int n=0;

while(n++<=1)

printf("%dt",n);

printf("%dn",n);

}

14.

此程序运行时,输入 qwert?程序的运行结果是

#include

main()

{char c;

·36·

while((c=getchar())!='?')putchar(++c);

}

15.

对以下程序:

当输入 65 14 时,其运行结果是【 1 】。当输入 14 63 时,其运行结果是【 2 】。当输入 25 125 时,其运行结果时【 3 】。#include

main()

{int m,n;

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

while(m!=n)

{ while(m>n)m-=n;

while(n>m)n-=m;

}

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

}

16.

在执行以下程序时,为了使输出结果为 t=4,则给a 和b 输入的值应满足的条件是

main()

{int s,t,a,b;

scanf(〞%d,%d〞,&a,&b);

s=1; t=1;

if(a>0) s=s+1;

if(a>b) t=s+t;

else if (a==b) t=5;

else t=2*s;

printf(〞t=%dn〞,t);

}

17.

求出 1000 以内的“完全数”。(提示:如果一个数恰好等于它的因子之和(因子包括 1,

不包括数本身),则称该数为“完全数”。如:6 的因子是 1,2,3 而 6=1+2+3,则 6 是个“完数”)。

main()

{int i,a,m;

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

{for(m=0,a=1;a<=i/2;a++)

if(!(i%a)) 【1 】;

if【2】)printf("%4d",i);

}

}

18.

鸡问题:100 元钱买 100 只鸡,公鸡一只 5 元钱,母鸡一只 3 元钱,小鸡一元钱三只,

。求 100 元钱能买公鸡、母鸡、小鸡各多少只?

#include

main()

{int cocks,hens,chicks;

cocks=0;

·37·

while(cocks<=19)

{ hens=0;

while(hens<=33)

{ chicks=100.0-cocks-hens;

if(5.0*cocks+3.0*hens+chicks/3.0==100.0)

printf("%d,%d,%dn",cocks,hens,chicks);

【1】;

}

【2】;

}

}

19.

爱因斯坦的阶梯问题:设有一阶梯,每步跨 2 阶,最后余 1 阶;每步跨 3 阶,最后余 2

阶;每步跨 5 阶,最后余 4 阶;每步跨 6 阶,最后余 5 阶;只有每步跨 7 阶时,正好到阶梯顶。问共有多少阶梯。

main()

{int ladders=7;

while(【 1 】)ladders+=14;

printf("%dn",ladders);

}

20.

下列程序计算平均成绩并统计 90 分及以上人数。main()

{int n,m;

float grade,average;

average=n=m=【1】;

while(【2】)

{ scanf("%f",&grade);

if(grade<0)break;

n++;

average+=grade;

if(grade<90)【3】;

m++;

}

if(n)printf("%.2f%dn",average/n,m);

}

21.

下列程序计算 Fibonacci 数列:1,1,2,3,5,8,13……的前 40 项。main()

{int I;long f1,f2;

【 1 】 ;

for(I=0;I<20;I++)

{ printf("%12ld%12ld",f1,f2);

if(I%2)printf("n");

f1+=f2;

【2】;

}

·38·

}

22.

下列程序判断一个数是否为素数。#include

#include

main()

{int I,k,m;

scanf("%d",&m);

k=sqrt(【1】);

for(I=2;I<=k;I++)

if(m%I==0)【2】;

if(【3】)printf("%dyesn",m);

else printf("%dnon",m);

}

23.

求 100~499 之间的所有水仙花数,即各位数字的立方和恰好等于该数本身的数。main()

{int I,j,k,m,n;

for(I=1;【1】;I++)

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

for(k=0;k<=9;k++)

{【2】;

n=I*I*I+j*j*j+k*k*k;

if( 【 3 】 )

printf("%d",m);

}

}

24.

从键盘上输入两个整数 m 和 n,求其最大公约数。main()

{int a,b,num1,num2,temp;

scanf("%d,%d",&num1,&num2);

if(【1】)

{ temp=num1;

num1=num2;

num2=temp;

}

a=num1;b=num2;

while(b!=0)

{ temp=【2】;

a=b; b=temp;

}

printf("%d,%d",a,num1*num2/a);

}

·39·

3 答案及部分解题分析

一.选择题答案

1.A 2.D

7.A 8.C

13.D 14C

19.C 20.B

25.A 26.A

1. 答案:A

3.A

9.D

15.A

21.A

27.B

4.D

10.C

16.C

22.C

28.A

5.D

11.C

17.C

23.B

29.C

6.A

12.C

18.D

24.B

30.C

解析:此题中判断 while 后面的条件时,先使用 n 的值再 n--,而打印时打印的是 n 减 1

后的值。所以第一次循环,n=4,执行完后 n=2,打印出 2;第二次循环,n=2, 经过 n—和—

n,n 变成了 0,打印出 0;第三次循环时 while 后面的条件不成立(n=0),所以循环结束。故输出为 20。

2. 答案:D

解析:第一次循环时打印的 x 和 y 的值都是 10,然后 x 通过 x—后变成 9,因此第二次循环时 x=9, 而“y=++i”执行完后,y 变成 1,所以第二次循环时打印的 x 和 y 的值是 9

和 1 ,然后 x—变成 8; 第三次循环时,x>8 条件不成立,循环结束。故 D 为正确答案。

3. 答案:A

解析:对于一个不为 0 的数,!x 即为 0,故对于 x=-1,while 后条件不成立,但是 do

循环体是先执行的,故等判断条件时,循环体已执行了一次。

4. 答案:D

解析:此题是一个 do-while 循环,当 y 值为 1 时,while 后的条件--y 变成 0,从而循环结束,这时打印出 0,然后 y--变成-1。故 D 为正确答案。

5. 答案:D

解析:此题中循环进行了 1 次,但判断了 2 次,第一次 x 加 1 变成 4,y 减 1 变成 5,a

加 1 变成 1;第 2 次 while 后面的条件不成立,因为!=的左边先使用 x 的值 4 来判断,

右边表达式的值为 4,即 y 由 5 变成 4,判断结束后 4 变成 5,循环结束。故 D 为正确答案。

6. 答案:A

解析:此题中外层 for 要进行 5 次,内层 for 循环要进行 4 次,所以共进行 4*5=20 次循环。

二.填空题答案

1. 答案:21

2. 答案:【1】c C

3. 答案:1,0,0,1

4. 答案:【1】x=4,y=2*x-1=7

5. 答案:55

6. 答案:8,14,1

7. 答案:1 3 5 7

8. 答案:1234

【2】等待继续输入,直到输入小写字母。

【2】x=-4,y=x=-4 【3】x=10,y=3*x-11=19

·40·

9. 答案:5,5

10.答案:1 3 5

11.答案:8

12.答案:4 7 10

13.答案:1 2 3

14.答案:rxfsu

15.

答案:【1】m=1

16.

答案:0

17.

答案:【1】m=m+a

【2】m=7

【 2 】 m==i

【3】m=25

18.答案:【19.答案:【20.答案:【21.答案:【22.答案:【23.答案:【24. 答1】hens++ 【 2 】 cocks++

1】ladders/3!=2||ladders/5!=4||ladders/6!=5

1】0 【2】1 【3】continue

1】f1=1;f2=1 【2】f2+=f1

1】m 【2】break 【3】I>=k+1

1】I<=4 【2】m=I*1000+j*100+k*10 【3】m==n

案 : 【 1】 num1>num2 【2】 a%b

·41·

第 6 章 数组习题

1. 单项选择题

(1) int a[4]={5,3,8,9};其中 a[3]的值为( )。D

A. 5 B. 3 C. 8 D. 9

(2) 以下 4 个字符串函数中,( )所在的头文件与其他 3 个不同。A

A. gets B. strcpy C. strlen D. strcmp

(3) 以下 4 个数组定义中,( )是错误的。 D

A. int a[7]; B. #define N 5 long b[N]; C. char c[5]; D. int n,d[n];

(4) 对字符数组进行初始化,( )形式是错误。 B

A. char c1[ ]={'1', '2', '3'}; B. char c2[ ]=123; C. char c3[ ]={ '1', '2', '3',

'0'}; D. char c4[ ]="123";

(5) 在数组中,数组名表示( )。 A

A. 数组第 1 个元素的首地址 B.数组第 2 个元素的首地址

C. 数组所有元素的首地址 D.数组最后 1 个元素的首地址

(6) 若有以下数组说明,则数值最小的和最大的元素下标分别是( )。 B

int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};

A. 1,12 B. 0,11 C. 1,11 D. 0,12

(7) 若有以下说明,则数值为 4 的表达式是( )。 D

int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’, d, g ;

(8) 设有定义:char s[12] = "string" ; 则 printf( "%dn",strlen(s)); 的输出是( )。A

A. 6 B. 7 C. 11 D. 12

(9) 设有定义:char s[12] = "string"; 则 printf("%dn ", sizeof(s)); 的输出是( )。D

A. a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c]

·42·

A. 6 B. 7 C. 11 D. 12

(10) 合法的数组定义是( )。 A

A. char a[ ]= "string " ; B. int a[5] ={0,1,2,3,4,5}; C. char a= "string " ; D.

char a[ ]={0,1,2,3,4,5}

(11) 合法的数组定义是( )。 D

A. int a[3][ ]={0,1,2,3,4,5}; B. int a[ ][3] ={0,1,2,3,4};

C. int a[2][3]={0,1,2,3,4,5,6}; D. int a[2][3]={0,1,2,3,4,5,};

(12) 下列语句中,正确的是 ( )。D

A. char a[3][ ]={'abc', '1'}; B. char a[ ][3] ={'abc', '1'};

C. char a[3][ ]={'a', "1"}; D. char a[ ][3] ={ "a", "1"};

(13) 下列定义的字符数组中,输出 printf("%sn", str[2]) ;的输出是( )。 C

static str[3][20] ={ "basic", "foxpro", "windows"};

A. basic B. foxpro C. windows D. 输出语句出错

(14) 下列各语句定义了数组,其中哪一个是不正确的( )。 C

A. char a[3][10]={"China","American","Asia"}; B. int x[2][2]={1,2,3,4};

C. float x[2][ ]={1,2,4,6,8,10}; D. int m[][3]={1,2,3,4,5,6};

(15) 数组定义为 int a[3][2]={1,2,3,4,5,6},值为 6 的数组元素是( )。 B

A. a[3][2] B. a[2][1] C. a[1][2] D. a[2][3]

(16) 下面的程序中哪一行有错误( )。D

#include

main()

{

float array[5]={0.0}; //第 A 行

int i; for(i=0;i<5;i++)

scanf("%f",&array[i]);

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

·43·

array[0]=array[0]+array[i];//第 B 行printf("%fn",array[0]); //第 C 行

}

A. 第 A 行 B. 第 B 行 C. 第 C 行 D. 没有

(17) 下面哪一项是不正确的字符串赋值或赋初值的方式( )。 C

A. char *str; str="string";

B. char str[7]={'s','t','r','i','n','g'};

C. char str1[10];str1="string";

D. char str1[]="string",str2[]="12345678";

(18) 若有以下说明和语句,则输出结果是哪一项( )。C

(strlen(s)为求字符串 s 的长度的函数)

char s[12]="a book!";

printf("%d",strlen(s));

A. 12 B. 8 C. 7 D. 11

(19) 若有以下说明和语句,则输出结果是( )。B

(strlen(s)为求字符串 s 的长度的函数)

char sp[]="tv0willn";

printf("%d",strlen(sp));

A. 14 B. 3 C. 9 D. 字符串中有非法字符

(20) 若有以下说明和语句,则输出结果是( )。 C

char str[]=""c:"";

printf("%s",str);

A. 字符串中有非法字符 B. "c:" C. "c:" D. "c:"

·44·

2. 填空题

(1) C 语言中,数组的各元素必须具有相同的 ,元素的下标下限为 ,下标必须是正整数、0、或者 。但在程序执行过程中,不检查元素下标是否 。

数据类型,0,符号常量,越界

(2) C 语言中,数组在内存中占一片 的存储区,由 代表它的首地址。数组名是一个 常量,不能对它进行赋值运算。连续,数组名,地址

(3) 执行 static int b[5], a[ ][3] ={1,2,3,4,5,6}; 后,b[4] = ,a[1][2] = 。 0,6

(4) 设有定义语句 static int a[3][4] ={{1},{2},{3}}; 则 a[1][0]值为 ,a[1][1]

值为 ,a[2][1]的值为 。 2,0,0

(5) 如定义语句为 char a[ ]= "windows",b[ ]= "95";,语句printf("%s",strcat(a,b));的输出结果为 。Windows95

(6) 根据以下说明,写出正确的说明语句:men 是一个有 10 个整型元素的数组。step 是一个有 4 个实型元素的数组,元素值分别为 1.9, -2.33, 0, 20.6。

grid 是一个二维数组,共有 4 行,10 列整型元素。

int mesh[10]; float step[4] = {1.9, -2.33, 0, 20.6}; int grid[4][10];

(7) array 是一个一维整形数组,有 10 个元素,前 6 个元素的初值是 9,4,7,49,32,-5,正确的说明语句为:

。该数组下标的取值范围是从 到 (从小到大)。用 scanf 函数输入数组的第二个元素表示为: 。用赋值语句把 39 存入第一个元素表示为: 。

把第六个和第四个元素之和存入第一个元素表示为: 。

int array[10] = {9,4,7,49,32,-5}; 0 9 scanf("%d",&array[1]); array[0] = 39;

array[0]= array[5]+array[3];

(8) 写出以下初始化数组的长度:①int chn[3];数组 chn 的长度为

isa[]={1.0,2.0,3.0,4.0,5.0};

数组 isa 的长度为 。③int doom[8];数组 doom 的长度为

组 pci 的长度为 。

。⑥int att[3][4];数组 att 的长度为 。

。④float pci[4][2];数。②float

⑤int ast[3][3];数组 ast 的长度为

⑦float dell[][3]={{1,4,7},{2,5},{3,6,9}};数组 dell 的长度为

18 24 36

。 6 20 16 32

·45·

(9) 若有以下整型的 a 数组,数组元素和它们得值如下所示:

数组元素: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

元素的值: 9 4 12 8 2 10 7 5 1 3

①请写出对该数组的说明,并赋以上初值。

②该数组的最小下标值为

,最大下标值为 。

。 ③写出下面各式的值:a[a[9]]的值为

;a[a[4]+a[8]]的值为

int a[10]={9,4,12,8,2,10,7,5,1,3}; 0 9 8 8

(10) 字符串"abn012/""的长度为 。10

3. 判断题

( × )(1)

C 允许对数组的大小作动态定义,即可用变量定义数组的大小。

( × )(2) 字符数组不要求它的最后一个字符为‘0’,甚至可以不包含‘0’。

( × )(3) 数组定义 int a[10]; 也可以写成 int a(10); 。

( √ )(4)

在对全部数组元素赋初值时,可以不指定数组长度。

( × )(5) 定义 s 为 5×6(5 行 6 列)的数组可写成 float a[5,6];

( √ )(6) 数组定义 int a[10]; 表示数组名为 a,此数组有 10 个元素。

( × )(7) 数组定义 int a[10]; 表示数组名为 a,此数组有 10 个元素,第 10 个元素

为 a[10]。

( √ )(8) static char c[]={“a book”}; 与 static char c[]=“a book”; 等价。

( × )(9) static char c[]={'a' ,' ','b','o','o','k','0'}; 与 static char c[]={'a' ,'

' ,'b','o','o','k'}; 等价。

( × )(10) 设已有说明:static char c1[10],c2[10]; 下面程序片段是合法的。

c1={“book”}; c2=c1;

4. 程序填空题

(1) 输入 20 个数,输出它们的平均值,输出与平均值之差的绝对值为最小的数组元素。请填空。

#include

·46·

void main( )

{

float a[20],pjz=0,s,t; int i,k;

for(i=0;i<20;i++) pjz+=a[i];

s=fabs(a[0]-pjz);

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

if(fabs(a[i]-pjz)

{

s=fabs(a[i]-pjz); t=a[i];

}

}

for(i=0;i<20;i++) scanf(“%f”,&a[i]); pjz/=20; printf(“%f,%fn”,piz,t);

(2) 以下程序以每行 10 个数据的形式输出 a 数组,请填空。

void main( )

{

int a[50],i;

printf("输入 50 个整数:");

for(i=0; i<50; i++) scanf( "%d",

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

{

);

}

if( ) printf( "%3dn" , ) ;

printf( "%3d",a[i-1]);

}

&a[i]

·47·

i%10==0

a[i-1]

void main( )

(3) 下面程序的功能是输出数组 s 中最大元素的下标,请填空。

{

int k, p;

int s[ ]={1,-9,7,2,-10,3};

for(p=0,k=p; p<6; p++)

if(s[p]>s[k])

printf("%dn" ,k);

;

}

k=p

(4) 这个程序输入了 20 个数存放在一个数组中,并且输出其中最大者与最小者、20 个数的和及它们的平均值。请填空。

void main()

{

char array ;

int max,min,average,sum;

int i;

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

{

printf("请输入第%d 个数:",i+1);

scanf("%d",

}

);

max=array[0];

·48·

min=array[0];

for(i=0;i<=

{

;i++)

if(max

if(min>array[i])

sum= ;

}

average = ;

printf("20 个数中最大值是%d,",max);

printf("最小值是%d,",min);

printf("和是%d,",sum);

printf("平均值是%d.n",average);

}

[20]

20

&array[i]

19

max=array[i];

min=array[i];

sum+array[i]

sum/20

·49·

5. 阅读程序,分析程序的功能。

(1)

#include

#include

void main( )

{

char s[80];

int i ;

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

{

s[i]=getchar( );

if(s[i]=='n') break;

}

s[i]='0'; i=0;

while(s[i]) putchar(s[i++]);

putchar(‘n’);

}

从键盘输入一个字符串,并逐一输出

(2)

#include

#include

void main( )

{

char str[10][80], c[80];

int i;


本文标签: 程序 语句 输出 输入