东农17春C语言答案,东农17春《C语言程序设计》离线作业-C语言程序设计

东北农业大学网络教育学院

C语言程序设计网上作业题第一章C语言概述一、填空

1. *C语言中任何程序的运行总是从主函数开始,在(  )函数中结束。

2.*一个C语言程序总是从( )函数开始执行。

3.*C语言源程序的扩展名为(  )。

4.*C语言源程序的扩展名为*.C、目标文件的扩展名为(  )、可运行文件的扩展名为(  )。

5.*C语言属于面向(      )语言。

6.*C语言程序的注释可以出现在程序的任何地方,它总是以(   ) 符号作为开始标记,以(  )符号作为结束标记。

7.*C语言中规定标识符只能由字母、数字、下划线组成,且第一个字符必须是(   )或(    )。

8.*结构化设计中的三种基本结构是(        )、(       )和循环结构。

9.* *程序开发的四个步骤是(     )、 (     )链接和执行。二、单项选择题

1.*在C程序中所用的变量使用前(    )

(A)可以不定义 (B)先定义后使用  (C)随时定义随时用  (D) 其他

2.**C语言程序从main()函数开始执行,所以这个函数要写在(    )。

A) 程序文件的开始 B) 程序文件的最后C) 它所调用的函数的前面 D) 程序文件的任何位置

3. * *下列关于C语言的叙述错误的是(    )

A) 大写字母和小写字母的意义相同

B) 不同类型的变量可以在一个表达式中

C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型

D) 同一个运算符号在不同的场合可以有不同的含义

4. *一个C程序的执行是从(    )。 , _. l# k2 ]1 I7 z: i9 J; j

A)本程序的main函数开始,到main函数结束

' g* U9 U, s4 l6 s1 V! d; H1 k( }' R9 q B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

' T1 N6 o# J3 L- ~3 Z- I+ f C)本程序的main函数开始,到本程序文件的最后一个函数结束 ! j& c. A. d' D/ t/ \1 F

D)本程序文件的第一个函数开始,到本程序main函数结束

5. * *以下叙述正确的是(    )。 8 `$ w: F! `2 q8 F

A)在C程序中,main函数必须位于程序的最前面     B)C程序的每行中只能写一条语句 # |& A5 b) {& M1 V; q

C)C语言本身没有输入输出语句    D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误

6. * *以下叙述不正确的是(    )。 . E- A$ W3 J) b7 N+ J; R7 @5 F, r

A)一个C源程序可由一个或多个函数组成       B)一个C源程序必须包含一个main函数

6 a) Q3 ^6 f% p3 ~7 VC)C程序的基本组成单位是函数            D)在C程序中,注释说明只能位于一条语句的后面

: e0 Z! @% p* s* h2 ?7. *一个C语言程序是由(    ) 。

A)一个主程序和若干子程序组成    B)函数组成   C)若干过程组成                  D)若干子程序组成第三章数据类型、运算符与表达式一、填空

1、* *x=2,y=-3,z=3,则表达式x||y+z&&y-z的值为 (  )。

2、*在C语言中实型变量分为两种类型,它们是(  )和 (  )。

3 * *、十进制11转化为八进制的值为( )。

4、* *十进制数159转换为八进制数是( )

5、* *已知int x=6; 表达式x%2+(x+1)%2的值是(  )。

6、*C语言中char型变量在内存中占(  ) 个字节的内存单元

7、*C语言的变量名:TEA与tea是(  )同的。

8、* *设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为(  )。

9、* *表达式( 5<3) && (2 || 8<4 ) 的值是(    )。

10、* *十六进制数2a转换为十进制数是(  )。

11、* *计算 x 、 y 之和的平方,表达式应写作 (  ) 。

12、* *执行语句“ a=5+(c=6); ”后,变量 a 、 c 的值依次为(  ) 。

13、* *设x是个实型变量。满足数学式|x|>4的c语言表达式是(  )。

14、* *若s 是整型变量,则计算表达式 s=22/3%2 后s的值为(  ) 。

15、*C语言用(   )号括起来的单个或多个字符表示字符串常量。

16、*float x, y, z;是将x, y, z; 定义为 (      )

17、*目前常用C语言的一个整型变量的存储容量为(   )个字节。

18、*无符号基本整型的数据类型符为(            ),双精度实型数据类型符为(      )。

答案:unsigned int、double

19、* *定义变量的完整语句格式是: (           )   (          )  变量名1=初值1,变量名2=初值2,...;。

20、* *设有下列运算符:<

21、** “ = ” 是(   )符号,不是等号。在C语言中等于号用 “(   ) ” 表示。

22、* *表达式10/3的结果是(     ),10.0/3的结果是(      )。

23.* *表达式10%3的结果是(      ),3%10的结果是(       )。

24. * *定义int x,y;执行y=(x=1,++x,x+2);语句后,x的值是(    ),y的值是(    )。二、单项选择题

1、*(    )是不正确的字符常量。

(A)'n'     (B)'1'       (C)"a"       (D)'/101'

2、 *(    )把x、y定义成float类型变量,并赋同一初值3.14。

(A)float x, y=3.14;       (B)float x, y=2*3.14;  (C)float x=3.14, y=x=3.14;  (D)float x=y=3.14;

3、* *若有以下定义和语句:

4 I. ]3 p" O* Xint u=010,v=0x10,w=10;- m3 \! J% b1 z( K

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

/ ?- p1 u$ H8 l+ S$ U1 G6 T  W则输出结果是(    )。

(A)8,16,10    (B)10,10,10      (C)8,8,10    (D) 8,10,10

4、*以下正确的字符常量是(    )

(A)“x” (B) ‘W’  (C)‘’  (D)‘XYZ’

5、 * 在C语言的算术运算符中只能用于整型数的运算符是(    )

(A)++    (B)/        (C) %      (D)*

6、 *已知 int a; 那么 &a表示(    )

(A)变量名  (B)变量a的地址     (C)变量a的值 (D)其他

7、*不正确的标识符是(   )

(A)_a2         (B)2ai           (C)a2_i             (D)Int

8、*已知 int a=2,b=5; 则表达式a+5>b+3的值是(    )

(A)0  (B)1    (C)不确定  (D)表达式错误

9、* *若变量已正确定义并赋值,下面符合C语言语法的表达式是

(A) a:=b+1 (B) a=b=c+2 (C) int 18.5%3 (D) a=a+7=c+b

10、  * *若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是

(A) 1   (B) 2   (C) 2.0     (D) 2.5

11、*若变量a、i已正确定义,且i已正确赋值,合法的语句是

(A) a==1   (B) ++i;   (C) a=a++=5;   (D) a=int(i);

12、* *以下不是c语言规定保留字的是( )。

(A)float    (B)integer     (C)signed     (D)unsigned

13 *、下列不正确的转义字符是

(A)'\\'         (B)'\"        (C) '074'        (D) '\0

14、* *若有以下定义:

- g: X1 B" e) T$ } char a; int b;

8 O9 T9 [1 `+ |/ z float c; double d;5 y8 _9 {" H; P1 [8 Q8 ]

 则表达式a*b+d-c值的类型为       + r5 A) f( z4 x0 v2 q

 (A) float    (B)int     (C) char       (D) double

15、* *常数的书写格式决定了常数的类型和值, 0x1011 是 ( )

(A) 8 进制整型常量    (B)字符常量    (C) 16 进制整型常数   (D)2 进制整型常数

16、* *在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为

* o$ r$ J. I1 |! U% F* G/ [& aA)char

# M9 w9 Q6 w7 g3 ]# [9 y: r9 ]! qC)char

17、*若x,i,j和k都是int型变量,则执行下面表达式后x的值为

! h; {$ M# c! h1 S x=(i=4,j=16,k=32)

" ]$ ~7 w9 X. u* [) ]" I A)4     B)16     C)32        D)52

18、*假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是:

' ~3 H0 V! y- d, x A)7    B)8   C)6   D)2

19、* *下列四组选项中,均不是C语言关键字的选项是

: N0 i: A; a( C; N4 }9 YA)define    B)getc    C)include   D)while

$ m! g' e. A* I/ A6 n% G   IF           char       scanf        go

0 g6 d1 O: |7 ]2 w; d8 G/ L2 e  type          printf       case        pow

20、*下面四个选项中,均是C语言关键字的选项是 1 `5 s" n7 o) t3 @

A)auto      B)switch    C)signed    D)if/ Z+ m* C% i* V/ f  C

enum       typedef       union      struct2 G; G. p; s  U! A! f

include     continue      scanf      type

21、* *下面四个选项中,均是不合法的用户标识符的选项是。

! _( _+ Y* O0 ^* C/ \- A5 \ A)  A            B)float       C)b-a       D)一123 7 r9 K. c4 \& X5 u2 ?/ z+ E

P_0            1a0          goto          temp5 t% E$ T* ?2 ^3 t

do             一A          int           INT

22、*下面不正确的字符串常量是。 & M# B. T  Y/ c; X

A)'abc'     B)"12'12"        C)"0"     D)""

23、* *若有代数式3ae/bc,则不正确的C语言表达式是:

- Z1 a4 k5 E7 {; U/ R8 U" D A) a/b/c*e*3      B)3*a*e/b/c    C)3*a*e/b*c       D)a*e/c/b*3

24、* *以下不正确的叙述是

+ K4 r* u+ K- |' ^6 {$ U, L" I* Z+ UA)在C程序中,逗号运算符的优先级最低

3 w7 y0 b+ {4 {. F1 d4 EB)在C程序中,APH和aph是两个不同的变量

3 k9 m4 G1 K( S6 e1 s5 P2 z$ U) hC)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。

, ^: c' C8 m3 E. ]; |% s  kD)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。

25、* *以下正确的叙述是: / f  q' y* @) R& d# F

A)在C程序中,每行中只能写一条语句

: \9 Z1 m1 F  {8 p  I$ mB)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 5 Y2 Y# M- j& F  H3 O: p

C)在C程序中,无论是整数还是实数,都能被准确无误地表示 4 x2 m: u/ ]# b! O/ \* T! d6 P

D)在C程序中,%是只能用于整数运算的运算符

26 、* *以下符合C语言语法的赋值表达式是

5 D# Z0 s+ W' }A)d=9+e+f=d+9       B)  d=9+e,f=d+9     C)d=9十e,e++,d十9     D)d=9十e++=d十7

27、* *已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'十'6'一'3';后,c2中的值为

) x. j& B( W( O8 N; sA)D        B)68      C)不确定的值        D)C

28、* *设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为 ) Z2 |6 Y) N. P; `5 Z

A)int       B)  float     C)  double      D)不确定

29、*设有说明:  char w; int  x;  f1oat  y;  double  z;则表达式w* x+z一y值的数据类型为:

. b5 r1 r" v4 NA)float       B)char       C)int          D)double

30、* *若有以下定义,则能使值为3的表达式是:

* \+ @% f! U1 `9 lint  k= 7,x =12;

& K6 \7 ^$ ]* |9 w1 z( q) t9 p" m  tA)  x%=(k%= 5)    B)  x%=(k一k%5)   C)  x%=k- k%5   D)  (x%=k)一(k%=5)第四章顺序程序设计一、填空

1、*在屏幕上输出整型变量a,b值,每个数占5位,输出数据前有说明字符的 printf()函数为(   )。

2、 *设char  c=’A’,则语句printf(″%c″,c+32)结果为(  ) 。

3、*通过键盘输入整型变量a的scanf()函数为(          )。

4、*已知 int a,b,c; a或者b两个中间有一个小于c的表达式是(    )。

5、* *已知 int x; 如果用scanf(“%f”,&x);给x赋值,错误的原因是(  )。

6、*float a=3.54;   printf("% 2.3f ",a);的输出结果是(      )

7、* * * 若有定义语句 “ inta=25,b=14,c=19; ” ,以下语句的执行结果是(  )。

if(a++<=25&&b--<=2&&c++)printf("***a=%d,b=%d,c=%d\n",a,b,c);

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

8、* * *以下程序输入1 2 3后的执行结果是(                 )。

#include

main()

{ inta,c;

charb;

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

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

}

9、* *以下程序输入123456后的执行结果是(                 )。

#include

main()

{ inta,b;

scanf("%2d%3d",&a,&b);

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

}

10、* *若有说明int i,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为(   )。二、单项选择题

1、 *设变量定义为“int a, b;”,执行下列语句时,输入(   ),则a和b的值都是10。

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

(A)10 10         (B)10, 10        (C)a=10 b=10       (D)a=10, b=10

2、*若t为int类型,表达式t=1,t+5,t++的值是(   )。

(A)1            (B)6            (C)2                  (D)1

3、**设x、y均为整型变量,且x=10 ,y=3,则以下语句的输出结果是(     )

$ C3 b. s  E( Q: M6 xprintf("%d,%d\n",x--,--y);

(A) 10,3       (B) 9,3        (C) 9,2         (D)10,2

4、 ** 阅读以下程序,当输入数据的形式为:25,13,10,正确的输出结果是(           )

main()

{intx,y,z;

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

printf(“x+y+z=%d\n”,x+y+z);

}

(A)x+y+z=48       (B)x+y+z=35          (C)x+z=35           (D)不确定值

5、**已知 int a=5,y;y=a++;  问a,y=? (   )

(A)a=6 , y=5    (B)a=6 , y=6  (C)a=6 , y=7   (D)a=5 , y=6

6、*已知 int a =5; 赋值表达式a+=a*a的值为(   )

(A)5;  (B)10; (C)30;  (D)50;

7、**若有以下程序段,

int c1=1,c2=2,c3;

c3=1.0/c2*c1;

则执行后,c3中的值是

(A) 0   (B) 0.5   (C) 1    (D) 2

8、*putchar函数可以向终端输出一个: (    )6 F. q: D( N% n  b4 g: f

A)整型变量表达式值     B)实型变量值   C)字符串     D)字符或字符型变量值

9、**printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 (   )1 x1 y: j: N$ B. w3 V

A)从左起输出该字串,右补空格     B)按原字符长从左向右全部输出 % m% g& m+ o/ J. s. r

C)右对齐输出该字串,左补空格     D)输出错误信息 . z, T( V/ \" P& d

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

6 W- `/ d, V: `- UA)整型变量的输出格式符只有%d一种 * f8 P& }2 o& ?% X6 l0 o

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

1 o/ `" V6 P  H. l) v) XC)%x 是格式符的一种,其变量的值按十六进制输出,但%8lx 是错误的 + Z: ?3 c" V' t/ x  ?0 w% `

D)%8lx 不是错误的格式符,其中数字8规定了输出字段的宽度

11、**若x ,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是:(    ). V! U* V3 A& S  A) g* X3 f

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

3 f' p* V# a5 Y3 h4 tC)  scanf("%x %* d%o",&x,&y);      D)  scanf("%x%o%6.2f",&x,&y,&z);

12、**已有如下定义和输入语句 ,若要求a1,a2,c1,c2值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是 (    )

, g9 S* h+ T- o% J3 H& K3 e8 [1 [* Hint  a1,a2;  char  c1,c2;

, U- S; g4 h( Y3 z/ G7 escanf("%d%c%d%c",&a1,&c1,&a2,&c2);

0 I1 {; P: X! S5 c1 E9 U2 fA)10A 20B< CR> B)10 A 20 B    C)10A20    D)10A20 B。

13、**已有定义int  x;  f1oat  y;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345  678(回车),则x 的值为(    ) ! O! t. ^3 i  {; _% @& m- z, ?" Y/ a# @

A)12345  B)123   。  C)  45       D)  345

14、**已有定义int  x;  f1oat  y;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345  678(回车),则y 的值为: (    ) 2 i6 q  q  L) R/ r

A)无定值B)45.0000  C)  678.000000  D)  123.00000

15、**已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是: (    )" H, O% n6 d0 }0 r; T- _6 i. s

int  a1,a2;  char  c1,c2;

7 X" J. c8 v* [  v+ S7 W9 Q, b1 pscanf("%d%d",&a1,&a2);

/ Y6 n1 a6 f( H, p$ V, wscanf("%c%c",&c1,&c2);

6 R! x5 |- U7 C8 S A)  1020AB  B)10  20AB   C)10  20   AB  D)10 20AB

16、*已有程序段和输入数据的形式如下,程序中输入语句的正确形式应当为(    ) . y8 w# v1 J% S* X

main()

5 x: y. _2 @( I# Q! r6 Z{int  a;float f;

% ]7 H/ N+ x/ q9 ]: s    printf("\nInput number:");

) N9 d& Q/ B6 x( Y4 f  输入语句 . L+ @2 O3 H3 e1 ~

printf("\nf=%f,a= %d\n ,f,a); 0 D$ Q9 P% i& ^8 z# x# N

}

0 I0 f  K7 X- ?% }8 O; uInput  number:  4.5   2

+ H0 J/ h5 w: x. K1 ~: yA )scanf("%d,%f",&a,&f);  B)scanf("%f,%d",&f,&a)' E3 {" Z+ a6 f  w$ m

C)scanf("%d%f",&a,&f);   D)scanf("%f%d",&f,&a);

+ Z' k3 q; u* B/ \; b17、*以下能正确地定义整型变量a,b和c 并为其赋初值5的语句是 (    )

. T( O) u2 L+ K A)int a=b= c= 5;    B) int a,b, c= 5;

6 S5 h$ R. ?* D C)a= 5,b=5,c=5;     D)  a= b= c=5;

18、*已知ch是字符型变量,下面不正确的赋值语句是 (    )) l/ W$ W. O# B) ]9 M/ p

A)ch='a+b';  B)ch='\0';  C)ch='7'+'9';  D)  ch=5+9;

19、已*知ch是字符型变量,下面正确的赋值语句是 (    )g5 r$ C, `$ }8 N( r/ _4 e& f

A)  ch= '123';  B)  ch= '\xff';  C)  ch= '\08';  D)  ch="\";

20、**若有以下定义,则正确的赋值语句是:

4 Y  [' G. g/ q+ F   int  a,b;float  x;' I+ L' C- i- `. D& c3 S5 O4 W. K

A)  a=1,b=2,    B)b++;  C)  a= b= 5     D)  b= int(x);

21、*设x 、y均为f1oat型变量,则以下不合法的赋值语句是(    ) 1 J, I$ V' A, E" \9 @

A)++x;   B)y=(x%2)/10; C)  x*=y+8;  D)x=y=0;

22、**x,y,z均为int型变量,则执行语句x=(y=(z=10)+5)一5;后,x 、y 和之的值是: (   )

" ~) k; f, T. P6 ]/ B  A)  x=10    B)  x=10  C)  x=10  D)  x=10 / m% l! T# N, b9 B! }- r

y=15      y=10        y=10       y=5

- ?- `/ H2 m* M/ K/ S       z=10      z=10       z=15        z=10 $ [, j. P8 {& B+ w. v

23、*逻辑运算符两侧运算对象的数据类型(    )。 5 u) M& E6 s8 E' H

A)只能是0或1            B)只能是0或非0正数 / T0 F9 q4 M, h: Z

C)只能是整型或字符型数据  D)可以是任何类型的数据

24、***下关于运算符优先顺序的描述中正确的是(    )。 + |6 i  f* w  W  v- }0 i  P

A)关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符 3 F- k$ g; q# m6 S7 b

B)逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符

2 D5 I- l$ e% r1 p- f$ t( M2 qC)赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符

7 r( L5 q3 E1 [, bD)算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符

25、*下列运算符中优先级最高的是(    )。

/ f( ?; ^* Y& W7 i* b  A)

1、*main()

{int a=1,b=2;

a=a+b;b=a-b;a=a-b;

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

}

2、*main()

{ intx=7,a=2,b=2,c;

c=x/a%b;

printf(c=%d\n”,c);}

3、**以下程序输入100后的执行结果是(          )。

#include

main()

{ int n;

scanf("%o",&n);

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

}

4、**以下程序输入x=1.23,y=50后的执行结果是(                     )。

#include

main()

{ float x,y;

scanf("x=%f,y=%f",&x,&y);

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

}

5、***阅读下列程序,写出程序的输出结果。

main()

{ intx=100,a=10,b=20,ok1=5,ok2=0;

if (a

if(b!=15)

if (!ok1)

x=1;

elseif(ok2)

x=10;

else  x=-1;

printf("%d\n",x);

}

6、**阅读下列程序,写出程序运行的输出结果。

main()

{ int y=9;

for (;y>0;y--)

if(y%3==0)

{

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

continue;

}

}

7、*阅读下列程序:

main()

{int a;

char b;

float c;

printf("input ab c:");

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

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

}

程序运行后若输入“1234r1234.567(回车)”,写出程序的输出结果。

8、**阅读下列程序:

main()

{int a;

float b,c;

printf("input ab c:");

scanf("%2d% 3f % 4f",&a,&b,&c);

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

}

程序运行后若输入“12345678987654321(回车)”,写出程序的输出结果。

9、***阅读下列程序:

main()

{int a;

float b,c;

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

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

}

程序运行后若输入“12 345 6789 87654321(回车)”,写出程序的输出结果。第五章选择结构程序设计一、填空

1、**能正确表示“当ch为小写字母为真,否则为假”的表达式是(  )。

2、 *设y是int型变量,请写出判断y为5的倍数的关系表达式( ) 。

3、 *已知int a=1,b=2;表达式(a

4、 *在switch语句中出现的break语句的功能是(    )。

5、**能正确表示“当A=5时布尔量BL为真,否则为假”的表达式是(  )。

6、*已知 int a,b; a、b中有一个小于0的表达式是(    )。

7、*在C语言中,表示逻辑量“真”用1,表示逻辑量“假”用( )。

8、**若x=5,y=10,则x>y和x<=y的逻辑值分别为(  )和(  )。

9、*  C语言中的逻辑运算符按优先级别是(  )、(  ) 、(  )。

10、*C语言中逻辑运算符(  )的优先级高于算术运算符。

11、**将下列数学式(A) a=b 或 a4改写成C语言的关系表达式或逻辑表达式(  )和(  )

12、* 请写出以下程序的输出结果(  )。

main()

{ int a=100;

if (a>100) printf(“%d\n”,a>100);

else      printf(“%d\n”,a<=100);

}

13、**当a=1,b=2,c=3时,以下if 语句执行后,a 、b 、c 中的值分别为( )、(  )、(  )。

if(a>c)

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

二、单项选择题

1、**已知整型变量k的值为3,下面程序段执行的结果是(    )

switch(k)

{ case 1:putchar(‘A’);break;

case 2:putchar(‘B’);break;

case 3:putchar(‘C’);

case 4:putchar(‘D’);

default:putchar(‘E’);

}

(A) CDE   (B) C  (C) ABC   (D) ABCD

2、***以下程序段正确的是(     )

(A)if(a>b) c=1              (B) if(a>b) c=1;

elsec=2;                      else c=2

(C) if(a>b) c=1;            (D) if(a>b); c=1;

elsec=2;                     else c=2;

3、**以下程序运行的结果是(    )

main()

{int x=12,y;

y=x>12 ? x+10 : x-12;

printf(“y=%d\n”,y);}

(A)y=0   (B) y=22   (C)y=12 (D)y=10

4、**表示关系x<=y<=z的c语言表达式为

(A) (X<=Y)&&(Y<=Z)    (B)(X<=Y)AND(Y<=Z)   (C) (X<=Y<=Z)    (D)(X<=Y)&(Y<=Z)

5、**假定所有变量均已正确说明,下列程序段运行后x的值是    ; N. I' b1 v& m# t+ @

   a=b=c=0;x=35;% F* T' M8 v: H9 W* G* v9 {" d# H

   if(!a)x--; # X/ s3 p9 S' L& z/ h3 G

   else if(b);

6 h9 A) d( j7 |% [! x   if(c)x=3; % C0 w: K! V0 U9 N6 A

   else x=4;8 {" f8 _5 Z& v7 ?; b. w) U& {% {

(A)34      (B)4      (C) 35      (D) 3

6、**当a=1,b=3,c=5,d=4 ,执行完下面一段程序后x 的值是 : - ?  L( \$ h) q

if(a

if(c

7 H6 O# a; p* d8 {& b, ^; ~$ _2 B       else

" \# ~: Y( U5 i: s! {* M/ P  [/ K       if(a

if(b

else x= 3; 7 K# K0 s9 f0 T( L

else x=6; + Y- X: |3 h8 ^! O% V/ q

else x=7; 8 A" p/ i4 |/ M3 {/ U/ m% u

A)18  B)2      C)3      D)6

+ o3 v# R# f$ [- a0 e4 r9 R

7、**以下程序的输出结果是:

) n$ d* f1 ?. I' |   main()

0 @. C# I! [' i. A  {int  a=100,x =10,y=20,okl=5,ok2=0;

% f* v; b, K( u: H; U" Q/ d" R1 |. |    if  (x

( O( s; f# H. ]: c4 `    if(y ! =10)

P8 {* \3 x" E  q; c5 \    if(!okl)  a=1;

) e8 o& z* }, g3 Q0 y" h   else

9 K& t( C6 l/ u+ X; M7 n. y$ c, L     if(ok2)  a=10; 1 X% }# ~" m9 [/ }, e

a=-1: , w% @+ z! a9 f4 `+ N

printf( "%d\n",a ) & }9 H7 g3 N& d6 f$ p; P

}

! c% b5 T# i* n! T$ u( H# w- u  A)  1      B)  0    C)一1    D)值不确定

, C8 J* }" b0 H% f2 R, G* l( B2 m8、*为了避免在嵌套的条件语句If一else中产生二义性,C语言规定else子句 ( h  T: s- T0 ]* I$ V

总是与(  )配对。

3 L& H3 q* Q- r+ K3 `* V0 O4 [7 T    A)缩排位置相同的if     B)其之前最近的if      C) 之后最近的if    D)同一行上的if

1 }1 L8 {/ ~( c$ l& p2 f' i! a9、**以下不正确的语句为:

8 J, [. o- l: T/ T* X( n" h, Z  A)  if(x>y);                                      B)  if  (x= y) &&(x! = 0)  x+= y;

8 Q& U- d7 @* t4 r( @/ }* X+ p  C)  if(x!= y)scanf("%d",&x);  else  scanf("%d",&y);    D)if(x< y){x++ ;y十十;}

4 C! m  i7 G: x6 |+ e: D10、***请阅读以下程序: . S1 }. j+ j" R" v7 j2 y

#include

1 S( @. n6 {* }3 ?# n  V       main() 1 I" U, }; X' H+ E8 c* {4 r$ R

{float  a,b

+ ]9 @" J- g6 T) F      scanf("%f",&a); : l* i& z# s$ O

if (a<10.0) b=1.0/x; 0 L( E8 A2 `  J3 S) B! p5 N6 z

else if((a<0.5)&&(a!=2.0))b= 1.0/(a十2.0);

/ {) \' A: _% W# f* B. {: y      else  if(a<10.0)  b= 1.0/x ;2 F+ [- m- N0 k1 c

else  b=10.0;

4 f% u# J' D7 ^$ c: h. ?8 J    printf("%f\n",y);

+ T. _- u2 G$ S/ N    } " T% T3 J% k9 Q2 U

若运行时输入2.0(回车),则上面程序的输出结果是: 3 c' P. u; ?% H% a4 w, Y5 I

A)0.000000   B)0.500000  C)  1. 000000   D) 0.2500006 h% D" V( _2 o' c" f" L5 e2 e

+ b& ?7 a# q  t6 h0 Z! V11、*若有条件表达式(exp) ?  a++:b--,则以下表达式中能完全等价于表 ' ^) P! L3 C- Q. f0 k& q5 q; R

达式(exp)的是: - }/ N- E) _, x; A6 y+ C

A)  (exp==0)     B)  (exp!=0)     C)  (exp== 1 )    D)  (exp!=1)

: z' E. ?  `$ e2 F) Z12、**若运行时给变量x 输入12,则以下程序的运行结果是:

) s/ z) a$ D) |/ t    main() - K( p/ ^# e3 J

{int  x,y;  . o( f1 t8 [6 }  D% ~8 j9 a# x9 H& O

scanf("%d",&x);

/ \! X5 t; Q! v0 W3 [  `, n/ w    y=x > 12?x+10:  x一12; 9 L7 m, ?$ l& t# p4 r% x

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

5 m  _- A" Y* V6 {( L. d4 \7 k    } " u. Y, N) L  J$ N  n' e

A)0      B)22  C)12       0)105 h+ F7 Q  w5 k2 L3 W4 x$ m

13、*以下程序的运行结果是:

2 c- F5 ?4 ?8 J1 z' ?9 v, ~      main()'

w2 T; o- W2 L2 z0 m) {2 O: ~' q      {int  k= 4,a=3,b=2,c=; ; K$ H& z. l: a( A' `3 V: f0 A

printf("\n %d\n",k< a ? k:c

+ l8 k6 }& i' [/ b! G    } 0 r, g7 u7 e% R$ j

A)4      B )3     C)2      D)1! l6 k# w; G9 S- M9 _/ M# K

14、*执行以下程序段后、变量a,b,c的值分别是一。

5 |; q) h4 q+ _6 T    int  x=10,y=9;

8 y  I/ e6 y* b. u8 b7 [3 U3 X    int  a,b,c; ! G% t/ r. k" _+ x

a =(- -x = = y++)?- -x:++y ;; a9 }, ]9 |8 [3 |

b = x ++;

% _/ v$ ]  v& n- _    c = y;

6 }5 i1 H- [; }# v* R( q    A)a=9,b= 9,c= 9       B )a=8,b=8,c=10   C)a=9,b= 10,c=9      0)a=1,b= 11,c=10

! s& v0 B# ^, o0 Z15、**若w,x,y,z,m均为int型变量,则执行下面语句后的m值是:

8 \5 O9 Q! P1 _% J0 B  E2 Q    w= 1;x = 2;y= 3;z=4; & a% Q  y/ ~. e

m=(w

8 S# `3 M  @. s$ p6 C    m= (m

m=(m

2 c8 K# V( O: l    A)1    B )2     C)3      D)4

# u. v' W/ s2 g16*若w=1,X = 2,y= 3,z=4,则条件表达式w

; I  P! f2 K' y6 D9 t& @    A)4      B)3      C)20   D)1

17、**执行以下程序段后的输出结果是 ; F+ u( P, a% z# s

int  w=3,  z=7,x =10;

7 ^1 i7 B* D) y& ~    printf("%d\n",x> 10?  x+100:x 一10); ! {) j& ^( d! I4 t( D( U$ S& f

printf("%d\n",w++||z++ );

1 v; V" p4 G& Y& ~3 o3 Y    printf("%d\n",!w>z); 1 l4 R# c! ]7 c

printf("%d\n",w&&z);

$ e! t; L) \4 e7 K    A)0       B)   1       C)0      D) 0三、阅读程序,写出程序运行结果

1、**main(  )

{int i, j=4 ;

for(i=j;i<=2*j; i++)

switch(i/j)

{  case 0 :

case 1: printf(“*”);break ;

case 2: printf(“#”,a);

}

}

2、* 若x=2,y=3,z=2,求下列表达式的值

(1) x﹤y?y:z

(2)x﹥y? (++x)

fde21601008ceb6c44c09ec0a1eb30bb.gif ++z)

3、*main()

{ int a=10,b=5,x;

x=a

printf(“x=%d\n”,x);}

4、* main()

{int a=1, b=2, c=3;

if(a>c)

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

printf(“a=%d   b=%d  c=%d\n”  ,a,b,c);}

2

5、 ***main( )

{int i=5;

do

{switch(i%2)

{case 4: i--; break;

case 6: i--; continue;

}

i-=2;

printf("%5d",i);

}while(i>0);

}

6. ** 若x=3,y=z=4,求下列表达式的值

(1) (z>=y>=x)?1:0

(2) z>=y&&y>=x

7、**main()

{ int a, b;

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

{ if(b>=10) break;

if (b%3= =1)

{ b+=3; continue; }

}

printf("%d\n",a);

}

8、**#include

main( )

{

int s=0,k;

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

{

switch(k)

{

case 1:

case 4:

case7:  s++;

break;

case 2:

case 3:

case6:  break;

case 0:

case5:  s+=2;

break;

}

}

printf(“s=%d\n”,s);

}

五、编写程序

1、***设计一个判断输入年份是否是闰年的程序。第六章循环控制一、填空

1、*C语言中while和do-while循环的主要区别是(   )的循环体至少无条件执行一次。

2、 **要使for(i=0;i<=  ;printf(“%d\n”,i+=2));程序段输出10个整数,i应<=(   )。

3、 **若While((ch=getchar())==’e’) printf(“*”);输入字符串:abcde,则循环体将执行 (  ) 次。

4、*在while(表达式) 循环语句中,表达式的值是(   )时可以循环,至少循环(   )次。

5、**循环语句for(;;) printf("OK \n");和do {printf("OK\n");} while(0);执行完毕循环,循环次数分别是(   )和(   )。

6、*结构化程序设计的三种基本结构是:选择结构、顺序结构和(   )。

7、***当循环体中的switch语句内有break语句,则只跳出(   )语句。同样,当switch语句中有循环语句,内有 break 语句,则只跳出(   )语句。

8、*循环体执行遇到continue 语句时(   )。

二、单项选择题

1、**以下程序的输出结果是

main( )

{int i;for(i='A';i

printf("%c",i+32);printf(" \n");}

(A) 编译不通过,无输出         (B) aceg     (C)acegi                   (D) abcdefghi

2、**执行以下程序后,输出的结果是

main ()

{ int y=10;do { y - -;} while(- - y);

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

(A) -1     (B) 1    (C) 8     (D) 0

3、**若变量已正确定义,语句“if(a>b) k=0;else k=1;”和(  )等价。

(A)k=(a>b)?1:0;                (B)k=a>b;

(C)k=a<=b;                     (D)a<=b ? 0 : 1;

4、* 设有程序段int k=10;  while (k=0) k=k-1;则下面描述中正确的是(          )

(A)循环执行十次                (B)循环是无限循环

(C)循环体语句一次也不执行      (D)循环体语句执行一次

5、 *已知:int i; for(i=0; i<=10;i++);如果表达式1即i=0缺省那么完成表达式1功能的语句可以( )

(A)放在for语句的前面   (B)放在循环体中

(C)放在for语句的后面   (D)放在程序的任何地方

6、**以下可以正确计算s=1*2*3*4*5的程序段是(    )

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

{ s=1;                       { s=0;

s=s*i;}                     s=s*i;}

(C)s=1;                    (D) s=0;

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

s=s*i;                        s=s*i;

7、*以下叙述正确的是(  )。

, |3 x! [! S# U% x; j# ]  (A)do-while语句构成的循环不能用其他语句构成的循环来代替6 R* q) a6 i- z4 S3 }% X6 |: m0 n

(B)do-while语句构成的循环只能用break语句退出

( K8 y) E0 O) w% I9 C9 k7 Z+ ~& I3 B; M  (C)do-while语句构成的循环,在while后的表达式为非零时结束循环

: F% i5 J6 n, w5 n4 _  (D)do-while语句构成的循环,在while后的表达式为零时结束循环

8、*以下程序段输出的结果是(    )

a=-1;

do

{ a=a*a;}while(a<0);

(A) 循环一次           (B) 循环两次          (C) 死循环      (D) 有语法错误

9、**设x和y均为int型变量,则执行下的循环后,y值为

$ N  L& s: _- A% j3 m0 Q for(y=1,x=1;y<=50;y++)

G) c- P1 G: o0 G; Z5 a { if(x>=10))break;

* n6 D. X5 t" V% ^ if (x%2==1)

* p# ~" h0 B) t& u+ l { x+=5; continue;}7 s' Q3 t8 i! L% Q4 w# \3 Y

 x-=3;

( a& A& P: h8 s- O }: r+ k- r7 {) X8 z

(A) 2          (B)4           (C) 6              (D) 8

10、**假定a和b为int型变量,则执行以下语句后b的值为

8 M+ q& ^% x6 W& F" k* `a=1; b=10;, g  O, l7 U/ Z- ?4 e

do" @* b3 x; I" x0 D+ l/ h3 }

{ b-=a; a++; }8 U6 T% l3 t* i) h/ G& P

while (b--<0) ;

' b0 w! e3 e8 U& O5 c3 b9 c. X(A) 9         (B)-2           (C) -1           (D) 8

11、 **设j为int型变量,则下面for循环语句的执行结果是

) @& ^. ?5 q- Y# e for( j=10;j>3;j--)

W! c, B0 X% U' Q% s0 B { if(j%3)j--;

( q0 @, ~" ~. z7 ]. U0 K- g --j; --j;+ u5 m; l! l9 e2 H

 printf("%d ",j);

* i0 s2 @* Y4 J! Y, W/ \ }

+ {! T0 f( |4 {8 }) _(A) 6 3        (B)7 4         (C) 6 2           (D) 7 3

12、**设有程序段 , S6 k( j' [' f2 E7 C

int  k=10;

9 n' Y3 _. w, Q5 p  while  (k=0)  k= k—1; 5 B. G7 |( }% ]3 [

则下面描述中正确的是

5 u, j3 y7 e) J( BA)  while循环执行10次      B)循环是无限循环

- k1 U8 A2 |9 \& z# @3 n5 M  PC)循环体语句一次也不执行   D)循环体语句执行一次 ) c2 x3 b/ h2 A6 N, {3 w4 W3 A

# V9 z1 {9 I, N6 l2 k, P9 l" U+ n  N

13、**有以下程序段 5 O, w, x0 [( V6 B. F/ p) _* a

int  x=0,s=0; ! \( G" @7 o3 U: n

while  (!  x!= 0)  s+=++x;

& Q" k3 f* `& P    printf("%d",s); : h/ i& D* t2 T  h& |2 k

则 8 h4 W, p" i; G+ g

A)运行程序段后输出0          B)运行程序段后输出1

1 @8 |+ }$ v( J" R$ E4 \ C)程序段中的控制表达式是非法的       D)程序段执行无限次

; J; @& Z* j* E* ?! v

6 h( f, _4 k0 t* h& l9 j6 c/ m14、**语句while(!E)中的表达式!E等价于:

; Y: j$ T; j# A9 PA)  E==0   B)  E!=1  C)  E!=0    D)  E==1

$ }) {$ A- p; K- U5 g6 s; q  q, ~1 N0 X. Y" u

15、**下面程序段的运行结果是

8 h2 l+ \+ y, f$ L( e4 z# Q    a=1;b= 2;c=2; 5 D7 ]: ^* ^: H; f  i, f8 u

while(a

7 k, d0 Q" ^# xprintf("%d,%d,%d",a,6,c);

+ `' d8 Q( d4 r; m+ p* ?A)1,2,0    B)2,1,0    C)1,2,1    D)2,1,1

7 D7 k- V5 x% ?# j. @4 V! f) X& i" v- {* ~2 H9 @

16、**下面程序段的运行结果是:

5 q  O) {) i. T2 n/ V1 }9 U7 zx = y= 0; 2 H5 h9 t" x* k. h: T

while(x<15)  y++,x + = ++y; 5 p/ m. ~5 |1 Q+ b; r9 z; h; w! O

printf("%d,%d",y,x); ' J0 b) n7 w* m; e( K

A)  20,7    B)6,12      c)  20,8      D)8,20

; |; }/ }0 t* J' v) L  J' F* v" n

17、**若有如下语句 2 }9 a  M2 w: U2 U0 h6 q

int  x=3;

' r9 I3 U0 E1 T, b# m9 L do { printf(" %d\n",x -=2);} while(!(--x));7 }5 v5 W5 S! l3 P* \6 k

则上面程序段 ! h  `2 C9 l2 {8 L

A)输出的是 1    B)输出的是1和-2     C)输出的是3和0       D)是死循环 - P5 `: N6 C, `- C1 l+ g

, D( t7 a5 N! t5 h18、**下面有关for循环的正确描述是:    / E1 x1 j' V; ~1 H, ]' c5 n

A)  for循环只能用于循环次数已经确定的情况

* ^3 Z$ L$ O# o6 C( W    B)  for循环是先执行循环体语句,后判断表达式

( R5 l% r1 |  v8 G    C)  在for循环中,不能用break语句跳出循环体 5 ]4 N3 [) G+ S- N

D)  for循环的循环体语句中, 可以包含多条语句,但必须用花括号括起来 0 R. [  `% ~5 Q8 v

: Z. e; v8 C: w

19、**对for(表达式1;;表达式3)可理解为:

9 q  N8 |) t7 j9 }2 m# P9 rA)  for(表达式1;  0;表达式3)           B)  for(表达式1;1;表达式3) 8 r1 g  D& p" t  V& ]9 X; S

C)    for(表达式1;表达式1;表达式3)    D)    for(表达式1;表达式3;表达式3)

- H: j9 O! `. A1 l$ Q( p7 ^! g1 Q: E+ j1 o

20、*若i为整型变量,则以下循环执行次数是: 0 X! D9 D" o; y) R% ?

for  (i=2;i==0;)  printf("%d",i-- );

4 j0 m# T# _# k3 e' p  A)无限次   B) 0次   C) 1 次     D)  2次 ! i* o: W# G0 j9 |% c

21、**以下for循环的执行次数是:

$ B7 J2 u+ h7 t  for  (x=0,y一0;  (y=123)&&(x<4);  x++);# e7 H! S/ Q2 U/ Y

A)是无限循环 B)循环次数不定 C)执行4次  D)执行3次 ! _7 m" \5 V& {8 a- y

; Y# q! y. ?7 D$ Y0 K, m- ]3 w22、**以下不是无限循环的语句为:

) v: N/ f& X# e! _8 g, T  A)  for  (y=0,x=1;x > ++y;x =i++)  i=x ;      B)   for (;;  x++=i);% i( _* L; d. f' ~2 F

C)  while  (1){x ++;}                      D)  for(i=10; ;i--)sum+=i;

0 m$ s3 w2 c# h: I) E3 a! [+ `: R, I8 b5 l5 Z9 h

23、**下面程序段的运行结果是: / V) p' L, B9 _8 F  f/ s

for (y= 1;y<10;) y=((x=3* y,x+1),x-1);

' b# N) n7 L  h% d8 C; Wprintf  ("x=%d,y=%d",x,y); J, ]! \8 t* w$ L. ^4 z

A)x=27,y=27      B)x=12,y=13      C)x=15,y=14   D)x=y=27 ( {4 ~* W8 r; z) a( b

- c, g3 {$ a' [$ C' V5 q8 H

24、**下面程序段的运行结果是 ' D7 E, q, F8 P. l' y

for(x=3;x<6;x++)printf((x %2)?("**%d")

fde21601008ceb6c44c09ec0a1eb30bb.gif" ##%d\n"),x);

4 {3 D5 v  w. I- p6 V& G   A)**3      B )##3     C)##3  D)**3##4; Q. k3 C* ^, u5 ]0 V! W( E2 k

##4  **4 **4##5 **5

% P3 G" n- m7 p6 m, h- p4 E4 @" O      **5  ##5

3 z1 C' `9 V& J+ y5 |1 D, b2 O! t: @

25、*执行语句for(i=1;i++<4;);后变量i的值是 4 D; w/ P- S  y  V2 W+ [! r% H

A)3    B )4     C)5    D)不定

3 d! Q! u9 C, p' A- W- j9 E9 L

0 G; _) a9 n* s) k+ E8 B4 C26、**以下正确的描述是。

7 C2 D% ?' s1 W4 l   A)continue语句的作用是结束整个循环的执行 1 |! _  p! x0 z+ G& X

B)只能在循环体内和switch语句体内使用break语句

- T3 A' l4 t" }  {    C)在循环体内使用break语句或continue语句的作用相同

& ^1 C8 _' M. q$ J5 m! a' s) L  O    D)从多层循环嵌套中退出时, 只能使用goto语句 . {, B3 z" ]& H6 j' {% N! |

I7 N  ]2 o, x: D! J5 y: W6 U27、**下面程序段:

/ Z7 j% D) a0 \( @2 w      for  (t=1;  t<=100;t++)* g# Y! q1 A9 B! m

{scanf("%d",&x);  # X: d' v) H6 Z& `4 C) l1 ^7 \, a2 h4 w

if(x<0)  continue;

' p6 Z- h) f, @7 O0 w      printf("%3d",t);}  % R" ~& d- n( p0 c/ g& g  O1 R. T

A) 当x<0时整个循环结束          B) x>=0时什么也不输出 G, Q0 u6 D( W9 W5 a( @

C) printf函数永远也不执行         D)最多允许输出100个非负整数 7 a4 R' x% ~+ G' z  ^

1 G, B6 M2 [+ Y# t3 q28、*以下描述正确的是

2 y! f/ A0 C' B8 Q  y8 C    A)  goto语句只能用于退出多层循环        B)  switch语句中不能出现continue语句

! j" K9 w- n% R    C)  只能用continue语句来终止本次循环   D)  在循环中break语句不能独立出现三、阅读程序,写出程序运行结果

1、* *main()

{int  i=1;

while(i<=10)

if(++i%2!=0)  continue;

elseprintf(“%3d”,i);

}

2、***main( )

{       int i,j,k;

char  space=‘  ’;

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

{ for(j=1;j<=10-i;j++)

printf(“%c”,space);

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

printf(“*”);

printf(“\n”);}

}

3、**main()

{int  i,j,sum=0,a[3][3];

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

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

{a[j]=i+j;

if(i==j) sum+=a[j]; }

printf(“%d”,sum);

}

4、* main()

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

for(i=y;i<= x ; i++) printf(“i=%d\n”,i);}

5、*     main()

{ intx=0,y=0;

do

{ y++;

x=x*x;

}while((x>0)&&(y>5));

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

6、*main()

{int x=2,y=3,z;

z=x;

if(x>y) z=1;

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

else z=-1;

printf(“z=%d\n”,z);}

7、*main()

{ int a[]={1,2,3,4,5,6,7,8,9,10}, s=0, i;

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

if(a%2==0) s=s+a;

printf(“s=%d”, s);}

8、**main()

{int n=2345,k=0;

while(n>1)

{

k++;

n=n/10 ;

}

printf(“%d\n”,k);

}

9、*main()

{int x=1, y=1, i=0;

do

{ x=x+y ; y=x+y ;i++;

printf(“x=%d  y=%d\n”, x, y);

}while(i<=3);}

10、***#include

main ( )

{

int j=1,k,sum,m,n=5;

sum=0;

while (j<=n)

{

m=1;

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

m=m*k;

sum=sum+m;

j++;

}

printf(“sum=%d\n”,sum);

}

11、**     #include    •

) O! @8 u1 j2 b  T1 m; k- d     main() + W8 E; ]9 C8 z& X& _

{int  i,sum= 0;

2 o2 v5 w. Y7 d  h3 n! d& e6 n      for(i=1;i<=50;i++) - R8 R! D  L" d, ~

if(  i%7==0)  sum+=i; 9 w. t  C" S: t

printf("%d",sum);

" R1 Y: V9 D& N8 L% F. Y& l! i* k    }      9 w! [' {+ w  x

/ e) r* ?: N0 ~5 r/ E- ?

12、**下面程序的运行结果是:

Q# @* S" Q$ \/ ~; ~8 s, A% X    #include  

. B& ?+ X+ G" e      main()      ) {5 _* G8 e+ n6 ]1 p

{int i; * d+ d+ K2 U& D" c* w4 t$ I4 z! `# b

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

1 E) H6 |6 {/ X* P9 K6 u, A  switch(i%5) - i- V/ o2 y' P% r& R

{case  0:printf("* ");break;

, }8 [+ Y0 Q4 ~1 D1 {- ?  case  1  :printf("#");break; $ d, Z( O! |% }  q4 N% m/ f) x  F

default  :printf("\n");

% u  g. ^" d) X! D  case  2  :printf("&"); 2 n2 f( n0 Q$ d8 J' \) c* ^0 }) q

} : g9 o. Y* ~" G$ Q! O+ I7 W' H4 q7 K

13、**下面程序的运行结果是:

2 r# w( ~$ {8 [  ^- M, d    #include

( K( v/ @. z8 B+ W% [; f6 ?      main() 3 i# L& ~8 r9 _6 \

{  int    x,i;

& F: }+ x( Y8 r, R7 r, M8 z5 b      for(j-1;i<=100;i++) 5 |* X8 h: v0 o. V! p

{x=i;

, ], ]3 P- l% R/ F2 Q- ^  if(++x%2==0) 3 G( ^% m! A. n8 [! b0 o0 u

if(++x%3==0) 5 q4 o! \3 e/ j* O% W( q

( N2 X2 a5 r' R$ {

if(++x%7==0) ! [0 N3 k1 w. i. `3 }  e" U

printf("%d",x); 3 C# G% b, L. f( `* T8 d

$ M; v0 L' k/ N+ {" |. l3 S  }

4 D1 [. B) n) \  P4 ^      }

' t3 `, ~5 K  F) u& C5 K9 Y( h0 [3 z' V5 ]1 f) Q& v8 D

% z( v  P2 u4 o' B( r14、**下面程序的运行结果是: / b1 c' j# p5 S" I' p/ v- |! W

main()

{

int k,n,m;

n=10;m=1;k=1;

while(k++<=n)

m*=2;

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

}

四、程序填空

1、***所谓水仙花数是指一个三位正整数,其各位数字的立方之和等于该正整数。例如编写程序,求得并输出全部水仙花数的个数。请填空完善程序。" b8 Y. w* u( g

#include

9 b7 _9 J, \% r+ q  main()

% I4 x. J% T' m, e2 Q* z" r, [3 a  {

0 r: }8 w8 l' ^8 Y) R     int hun,ten,one;   /*百位数、十位数、个位数*/

: i! f. T6 ]& u* d# l     int num,count=0;

6 F7 c" ]- |! E     for (num=100;_____(1)_____;num++)

6 ^- D5 H. n1 j0 ^& K* ^     {& D5 s9 n# w6 d- u( g

hum=________(2)_________;& O" p8 i4 M; Y0 |9 B

ten=________(3)_________;

8 u+ l# z5 O- _; m/ A* O, @4 `       one=________(4)_________;( W* t, T& {6 e2 U8 U

if (________(5)___________)$ Q% _# V8 ^3 k# J# [

{! y) q: p+ Z" G$ L* D7 `# D

printf("%5d",num);5 i7 D: ?% a6 f! I6 ~* `$ |

count++;6 Z4 h- p' Q/ I5 E3 P( E, l

}+ M% C; D. v" J4 i& _- L

}

8 i/ o4 @7 ^) v9 H      printf("\n");

1 k+ g1 ^- L& w) Y      printf("No.=%d\n",count);0 z/ F9 B$ `2 {* r

}

2、**从键盘上输入10个数,求其平均值。

% s, Y6 `7 E! e3 v6 v" @( c5 S# I0 h0 K) S

main()- `$ B: }. d. [6 h: T' B) o# ~

{int i;0 g1 H  N# p5 O

float f,sum;

( S0 h1 T' k1 h1 _for(i=1,sum=0.0;i<11;i++)& k( r; P1 i& t, w  g  u

{_____(1)_____ ;9 @* S' W; t9 o* Q+ ^# K5 @. k* y$ _

_____(2)_____; }

5 F% d/ N4 F+ h/ Y+ |( h. Cprintf(“average=%f\n”,sum/10); }

3、**以下程序的功能是:从键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空.

4 h7 L% _; N3 M" j9 `, P& imain() - o; @: d/ s. Z

{ float x,amax,amin;

0 l9 ^" q2 ]0 U3 |, G$ v  Fscanf("%f",&x);5 h/ O+ ^6 P- x0 x( O7 d

amax=x; amin=x;

9 d. e  z7 q; D+ [while(_____(1)_____  )

1 L$ f& P. h# W" j: q0 z. `. c{ if(x>amax) amax=x;6 U+ z1 Z1 B* H

if(_____(2)_____  ) amin=x;. v) s- ~8 v( C& e

scanf("%f",&x);

% \8 J6 I4 }% G) S' b" }) iprintf("\namax=%f\namin=%f\n",amax,amin); *

4、***用循环输出下列形式的数字金字塔。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif

main ( ) {

int i, j;

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

for (j=i;j<=10;j++) printf(" "); /* 输出若干个空格 */

for (j=1; _____(2)_____  ;j++)printf ("%2d",j);

for (_____(3)_____  ;j>=1;j--)printf ("%2d",j);

printf ("_____(4)_____  ");

}

}

5、**下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环。# b1 \5 o0 @* W+ J! n) ?

#indude  

1 A/ K$ T* s$ y$ O' @* ]; o3 w      main()

, }, G7 U4 i; h7 j! h) a  ~0 j      {int  a,b,t;

% u2 x' l. g9 z0 e5 Q( y2 R& Sscanf("%d%d",&a,&b);

( U: ?& M: x2 |5 ywhile(  _____(1)_____  )

% }' }3 ?& o- E8 q9 v{if(a>b)

( O5 Z9 H* A2 c: ~ {t=a;a=b;b=t;} 3 }* {0 G+ ]: F6 v: E% O8 r

printf("%d,%d",a,b); - s: Z0 q8 W# J' m8 O$ g) v% r

scahf("%d%d",&a,&b);人

3 z8 O' w' u/ b8 W# G) g} . b/ x9 D" L1 \# }  }& `

! O+ ~2 N! Z. u2 c) ^$ l2 m6 b0 W

6、**下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空:

9 v. }4 x( @( y    #indude   "stdio.h"   # Y  C& z! k, C9 _7 D. f

main()

) T5 Z1 u" }+ x4 W      {int  m=0,n=0;

: j  ~0 _: b( E9 e7 P) T      char    c;  1

% l0 V" N, G, W! b      while(( _____(1)_____)!='\n') / P+ M( ~9 {; G

{ if(c>='A' && C<='Z') m++ ;[, v1 ~1 k" P6 V! N: ~! G

if(c>='a'  && c<='z')  n++; }     * w+ p8 ~  ~, u: t; q+ f  `

printf("%d\n",  m

- I2 y# \4 I0 T% h2 ^) P/ T; O" W( I$ J

7、*下面程序段的功能是计算1000!的末尾含有多少个零。

5 b5 R& V& T8 Q) S     (提示:只要算出1000!中含有因数5的个数即可 )& x7 ~- Q0 {5 m. x1 n: u4 f7 z5 A

for(k=0,i=5;i<=1000;  i+=5) 3 |6 L; T. B2 K4 R# h1 H, @

while(_____(1)____){k++; m=m/5;}

& q8 S0 g+ Y# T7 ~8 J& e# b# I0 F) y五、编写程序

1、 **从键盘输入20个整型数,统计其中负数个数并求所有正数的平均值。

2、*编写一个函数,重复打印给定的字符n次

3、*编一程序,输入10个数,并求出它们的和

4、*编一程序,显示如下图案

**

***

****

*****

5、*求出所有正整数相乘乘积为64的数对

6、**打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和就等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。

7、**编写程序打印出以下形式的乘法九九表。

**  乘法口诀  **

(1)    (2)   (3)  (4)   (5)   (6)  (7)   (8)   (9)

(1)    1      2     3    4     5     6    7     8     9

(2)    2      4     6    8    10    12   14    16    18

(3)    3      6     9   12    15    18   21    24    27

(4)    4      8    12   16    20    24   28    32    36

(5)    5     10    15   20    25    30   35    40    45

(6)    6     12    18   24    30    36   42    48    54

(7)    7     14    21   28    35    42   49    56    63

(8)    8     16    24   32    40    48   56    64    72

(9)    9     18    27   36    45    54   63    72    81

8、 **编程实现求解下面的式子的结果1 |3 _! H0 M9 n

s=1*2+2*3+3*4+…+20*21

9、***从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印“notexist”。

第七章数组一、填空

1、**说明char s1[]=“china”,s2[10];要将s1的值复制到s2中的正确语句是(      )。

2、 **a数组定义如下  char a[3];,按照内存排列顺序,a数组中的所有元素是(      )。

3、*已知 int a[]={0,1,2,3,4,5}; 它的最大下标是(    )。

4、*已知 int a[5];内存开辟有(  )个存储单元。

5、*在一维数组中,不同数组元素的数据类型是否可以不同( )?

6、*3行4列的二维数组,共有(  )个元素。

7、**将 str定义为字符数组并初始化为“Lei”的语句是(    )。

8、*系统判断字符串结束的标志是 。

二、单项选择题

1、*定义一个有 4 个元素的一维整型数组,正确的是(   )

(A) float a[4] ;     (B) int a[]={1,2,3,4,5} ;

(C) int a[]={1,2,3} ; (D) int a[4]={1}

2、**以下对数组的初始化正确的是(    )

(A)int x[5]={0,1,2,3,4,5};  (B)int x[]={0,1,2,3,4,5};

(C)int x[5]={5*0};          (D)int x[]=(0,1,2,3,4,5);

3、**给出以下定义:

( a" K5 _7 X# ^' T  Z8 R% ~2 H6 Cchar x[ ]="abcdefg";

+ R6 r# Y  }! b/ ^char y[]={'a','b','c','d','e','f','g'};

; U5 J9 p2 m- m% T+ Q) W  @1 @则正确的叙述为

( \. E) e+ x; d, O$ o% g( n(A) 数组X和数组Y等价                (B)数组x和数组Y的长度相同. N8 m; D2 L( K, t' }7 m

(C) 数组X的长度大于数组Y的长度      (D) 数组X的长度小于数组Y的长度

4、*在c语言中,引用数组元素时,其数组下标的数据类型允许是__. + h0 u& j3 s; ]

A)整型常量         B)整型表达式    c)整型常量或整型表达式D)任何类型的表达式 % L+ w5 w+ \5 L, C* L7 I3 Z

5、*以下对一维整型数组a的正确说明是__。 , w) ~3 V8 W" M" l" g  F8 Q$ r

A)  int a(10);  B)int n= 10,a[n];    c)  int  n;       D)  #define  SIZE  10;6 |  o- J+ A% ~, i7 G6 Q

scanf("%",&J1);  int a[SIZE]; + d( y( t+ V: z: n5 f

int a[n];

9 M( G, N7 l6 ~- l/ j6、*若有说明:int a[10];则对a数组元素的正确引用是__。 4 L! x/ X3 d0 S* N4 e% k0 j

A)a[10]  B) a[3.5] C) a[5]   D) a[10-10]

. ~: l' S6 f* u" M4 y/ H, R7、*在C语言中,一维数组的定义方式为:,类型说说明符 数组名__。

0 v7 U' G: b; x/ \  GA) [常量表达式]      B) [整形表达式]     c)[ 整型常量]或[整型表达式]     D)[整型常量]

0 e2 S+ ?3 d( ?, P" ^# e+ W7 W 8、*以下对二维数组a的正确说明是__。 6 w4 f( U2 j6 S% }) ]4 J

A)  int a[3][];   B)  floatf a(3,4);    c)  double a[1][4];  D)  float a(3)(4);

/ I3 p7 d* a/ ^& V. Y9 k2 ]$ G9、**若有说明:int a[3][4]; 则对a数组元素的正确引用是__。

: S7 n+ n7 T2 }7 d4 Z        A)  a[2][4]     B)  a[1,3]   C)  a[1+1][0]    D)  a(2)(1);

7 s. ^" I. J7 n" T9 f10、**若有说明:int a[3][4];则对a数组元素的非法引用是__。

: t( k5 a% u7 x, c2 U/ S  A)  a[0][2*1]  B)  a[1][3]  C)a[4-2][0]    D)a[0][4]"       "# w3 t: p! A) r) n% n

11、**以下不能对二维数组a进行正确初始化的语句是__。

0 s/ t& ?- i8 Z+ x  A)  int  a[2][3]={0};                  B)  int  a[][3」={{1,2,3},{4,5,6}}; & ^+ i1 V' f6 M( C' T

C)  int  a[2][4]={{1,2,3},{4,5}{6}};      D)   int  a[][3]={{1,0,1},{},{1,1}}; 3 W$ A  }& \! k2 @! j

12、**若有说明:  int  a〔3〕「4〕={0};则下面正确的叙述是

2 W6 o& D7 _3 ]/ B" m3 ` A)只有元素a[0][0]可得到初值0                      B)此说明语句不正确:。     6 ~- a: N# r, Y; N$ G9 S" ^# T

C)数组a中各元素都可得到初值,但其值不一定为0。  D)数组a中每个元素均可得到初值0 6 k; Z+ o/ c9 n7 `

13、***下面程序(每行程序前面的数字表示行号)

( ~) v* \( c' k/ v% M: A 1   main()

1 ^0 X$ B; y% Q) P" {9 s4 a# d 2     { ) X* T" n* y+ e+ ^+ y( ?& R  P

3     int  a[3]={3*0};

4 j% x9 j4 n- d; f' S 4     int  i;

# a' ]# [6 ^) w6 z 5     for(i=0;i<3;i++)  scanf("%d",&a);1 m0 _7 D" f& R' u$ y% a

6     for(i=1;i++) a[0]=a[0]+a/ s9 e  [6 ?( N% a' H4 L  [ 7     printf("%d\n",a[0]); 8 J* j: o+ ?8 _2 ]4 L, f* `4 {

A)没有错误   B)第3行有错误    C)第5行有错误    D)第7行没有错误

14、***下面程序每行程序前面的数字表示行号)。 6 @: A- g- }' f9 @( S0 N) A, ]0 M5 O

1    main() , ?) w4 v( K  H/ W

2    { " A3 v& g* h5 c* W. P# P

3     float a[10]={0.0};

7 F. g5 b* t# b2 }/ N6 e0 }: n' B' G4     int  i

, E% k: Y8 z- n$ s& ^  y5     for(i=0;i<3;i++)  scanf("%d",&a[1]);

" }8 J3 L4 B5 f4 S' ~8 R6     for(i=0;i<10;i++)  a[0]=a[0]+a;

; C$ v4 Q/ h2 Z" B, ]% f+ J7     printf("%d\n",a[0]);

+ i( O3 d6 r0 q) y1 \4 z/ c: i8     } " E7 J6 D! W% t) d) E' W

A)没有错误         B)第3行有错误    C)第5行有错误      D)第7行有错误

15、***下面程序有错的行是 ' M4 V) i( U- P  ~" L2 O

1  main() / h) y% L! L! ]" I" V

2{ 2 ?1 p! a- h" l$ B' X1 g: k( G4 b

3   int  a[3]={1}; - T  X% Q2 S. ], s) E+ ?

4   int  i; $ D! D5 y- h/ T* l

5   scanf("%d",&a); 2 |4 e% I. H2 L, m. U0 j

6   for(i=1;i<3;i++)  a[0]=a[0]+a; ( T- g# O, p7 l# \; C

7   printf("a[0]=%d\n",a[0]); 6 B7 i6 v; P. k. A" V" h0 Y: t

8   } . e! u2 y- G' |0 j/ L0 u! T

A)3      B)6   C)7      D)5

6 ~; C- z0 F! Y5 x  h$ K: A. E5 f! I16、***下面程序(每行程序前面的数字表示行号) 3 ?6 \3 Q+ z( t; S  n1 |, g% ~

1  main() & V6 t% W/ o5 T9 g% {2 W. }0 d

2  { W7 E( g4 s( w/ d' K: X. z

3   int a[3]={0}; & G) H+ k9 i# e& c/ W$ l/ x% L

4   int i; `2 @; H# j. W

5   for(i=0;i<3;i++)scanf("%d",&a);

6 v4 V0 `0 ]) r4 R: q% W9 V+ s. K 6   for(i=1;i<4;i++)a[0]=a[0]+a; 8 N3 X. l: }- @' S  Q

7   printf("%d\n",a[0]);

5 y1 u6 Q% i7 ^; [; T+ V/ U4 P6 Z9 e 8                     }7 P% k! l6 T- O3 ^* e

A)没有错误            B)第3行有错误     C)第5行有错误        D)第6行有错误 y6 O3 U9 L% K1 i, f6 h

17、**若二维数组a有m列,则计算任一元素a[j]在数组中位置的公式为

5 t8 t% s) m$ n" M(假设a[0][0]位于数组的第一个位置上。)

# G6 |' Q1 @9 m, O% \3 `+ t A)i*m+j    B)j*p+i。C)i*m+j-1    D)i*m+j+1

& W# C4 x' f  ~- C& X- `18、**对以下说明语句的正确理解是 3 M7 K& _0 L% C5 ?: E

int a[10]={6,7,8,9,10};

& r$ b& k, [7 o, i( z9 Z A)将5个初值依次赋给a[1]至a[5]          B)将5个初值依次赋给a[0]至a[4]

' i) L3 o$ V1 F, w) \, y C)将5个初值依次赋给a[6]至a[10]         D)因为数组长度与初值的个数不相同,所以此语句不正确

- @" D$ w% e- ]" u' l( {19、*以下不正确的定义语句是__.

; M% H* A: g+ @ A)  double  x[5]={2.0,4,0,6.0,8.0,10.0};       B)  int  y[5]={0,1,3,5,7,9};

, ~: D; b% ?/ Y! K C)  char  c1[ ]={’1’,’2’,’3’,’4’,’5’};            D)  char c2[ ]=}{'\x10','\xa','\x8'};7 h0 f, p+ p& R0 N

20、*若有说明:int  [][3]={1,2,3,4,5,6,7};则a数组第一维的大小是__. . S7 \! M4 Y, k- M( f9 k' c

A)  2      B)  3      C)  4      D)无确定值 & M% M5 k, y3 P# f6 N+ y* u3 }2 x! Y

21、**若二维数组a有m列,则在a[j]前的元素个数为__.

$ p. [4 K6 v/ W- M5 W1 a6 w A)j*m+j  B)i*m+j    C)i*m+j  D)i*m+j+1

A; }" D% l; h, o, F5 t  I9 W4 B22、**定义如下变量和数组:

( @+ a' b9 q0 b% r! Z4 K) A int k;  9 p: N4 i2 y# m9 M" z7 R+ h. R

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

( N( H$ `" S  R1 p1 |; r6 N 则下面语句的输出结果是

3 a3 j$ {' C3 N# X# f/ O for(k=0;k<3;k++)  printf  ("%d",a[k][2-k]);0 A! k% ?/ e. z, a# H; i

A)  3  5  7B)3 6  9   C) 1 5 9 D)  1 4 7

) b& o. z3 C, N' b7 E23、***若有以下程序段:

* M; O7 ^' ~9 `......

0 k2 J. z  v: s: T! \ int a[]={4,0,2,3,1};i,j,t; 3 c/ F! r* Q( s* I. H* x* m

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

- U9 }3 Q5 i8 |5 d7 n& N$ T, } {t=a;j=i-1;

( A. n+ I8 t/ {: q9 u while(j>=0&&t>a[j])

9 j4 k& y1 w" M5 A2 b/ O9 N   {a[j+1]=a[j];j--;} ' [* L' e( w6 O, ^0 x; }

......

0 F! U9 y/ V$ T3 O- z 则该程序段的功能是 __.

: E1 c9 P( F4 \" ~ A)对数组a进行插入排序(升序)       B)对数组a进行插入排序(降序)

" t+ Q- A; i; E+ h1 C C)对数组a进行选择排序(升序)        D)对数组a进行选择排序(降序)

. K$ N# R) V1 A: }  t24、***下面程序的运行结果是__。

main()  . W7 X( R) h/ K- H

{int  a[6」「6」,i,j; 4 `  @6 e: f$ e, o/ r5 ~

for(i=1;i<6;i++) 2 d! j" S! j  Q0 o

for(j=1;j<6,j++)

3 W' n# z4 J' @- e# n9 G     a[j]=(i/j)*(j/i); 3 ]; d+ p* r! ?

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

2 T. \1 w3 B) M     {for(j=1;j<6;j十十)

, ]% {& O4 ?8 w$ E6 Y' q# F9 v   printf("%2d",a[j]);

) [' z; a" d! [" J, M0 a9 m& V9 w% i       printf("\n"_);}

; I* \/ ?& R* D8 A( q$ |* h) ^         }

W  `& `, y$ _% J   8 \" s: o& \3 }4 S1 [7 z: ~5 O

A)11111     B)00001  C)10000     D)10001

3 Q8 k5 N" s4 ?) E9 y0 J4 o  11111        00010      01000         01010

9 g7 W5 G0 r5 b# v7 D/ ]  11111        00100      00100         00100

: M0 b* v. [* ^' {9 p- o4 X: o  11111        01000      00010         010109 Y3 P( R0 k' T# ?: \4 j# e

11111        10000      00001         100012 ^: s* e( I6 m- J* _

25、***下面程序的运行结果是 __.

3 o/ p  [  a; ?7 V     main() 1 ]# h5 q+ K. a% e. K7 a

{int  a[6],i;

5 C9 F9 @0 C1 Q- t8 B         for(i=1;i<6;i++) # w% }" q: }. T8 `- v# I2 Q

{a=9*(i-2+4*(i>3))%5; 5 o3 Z- i7 F7 b/ v! ]9 p

printf("%2d",a);

9 N! D& Q3 k  f}         ) O) v5 B0 R% |" t& ^

} 5 I& _2 g; O, `; S# G5 M

A)40404   B)40403    C)40443   D)404409 d; H+ Z& {( M7 o% V3 ]2 f6 T

26、**对两个数组a和b进行如下初始化        1 x1 g3 `- w8 L0 e2 V

char  a[]="ABCDEF";

2 e( W* A8 z$ Y   char  b[]={’A’,’B’,’C’,’D’,’E’,’F’}; [0 l) I' X3 i; N6 H, K

则以下叙述正确的是 __.

) w* d" D0 T0 a8 S6 A* U   A)  a与b数组完全相同       B)  a与b长度相同 . c& {/ G4 ]6 k1 m! ^$ O: ?# o

C)  a和b中都存放字符串     D)  a数组比b数组长度长

! ]! {$ |$ j9 P27、**有两个字符数组a、b,则以下正确的输入格式是  __. 8 }6 ]6 K8 H9 c2 `  G+ ?5 W

A)  gets  (a,b);   B)  scanf  ("%s%s",a,b);! H2 s% l1 o% a5 j

C)  scanf  ("%s%s",&a,&b);  D)  gets  ("a"),  gets  ("b");

) D( d! i+ ^% \28、*有字符数组a[80]和b[80],则正确的输出形式是__.

5 x( b, `! v' v' a3 s5 S5 Q# A2 `A)  puts  (a,b);  B)  printf  ("%s,%s,a[],b[]);  C)  putchar(a,b);  D)  puts  (a),  puts  (b);N  l$ @  i) A1 v  X

29、**判断字符串a和b是否相等,应当使用__.

- x3 R  H" b3 M# z# z" `; @3 ]A)  if  (a==b)   B)  if  (a=b)   C)  if  (strcpy(a,b)),  D)  if  (strcmp(a,b))

1 N# n* r! T9 k, `$ r30、**下面描述正确的是__.

) {' c: X# t: a9 h A)两个字符串所包含的字符个数相同时,才能比较字符串

6 \1 [3 h3 O% G" s' K6 { B)字符个数多的字符串比字符个数少的字符串大 h$ G  }5 Y! a2 i; g6 H

C)字符串"STOP "与STOp"相等 : e  I8 f* B, D

D)字符串"hat"小于字符串"he" / \- J6 Y7 I; s# n' v

31、**下述对C语言字符数组的描述中错误的是 ( E3 y' L  w; ^$ u2 j7 O. ~0 H

A)字符数组可以存放字符串 $ q* U0 D; r, ?# y1 [; q* ]+ H

B)字符数组的字符串可以整体输入、输出 6 P, z! e8 ^% l7 ?% F7 c+ J& n: Y

C)可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 1 `( O& V; Z6 p& u% k

D)不可以用关系运算符对字符数组中的字符串进行比较

32、**说明:int a[3][4]; 则对a数组元素的正确引用是(  )。

(A)a[2][4]     (B) a[1,3 ]  (C) a[1+1][0]    (D)  a(2)(1)

33、* 以下数组定义中不正确的是(      )

, `% o0 [3 h+ k/ P# y5 D+ t0 }1 o(A) int a[2][3];           (B) int b[ ][3]={0,1,2,3};; V2 h3 ~9 a3 i: h. @+ t+ a

(C) int c[100][100]={0};   (D) int d[3][ ]={{1,2},{1,2,3},{1,2,3,4}};

4 U; T6 [  J, E9 P/ L: K2 Z0 e  h% P  Z9 T三、阅读程序,写出程序运行结果

1、***阅读程序,写出运行结果:

main()

{ static inta[][3]={9,7,5,3,1,2,4,6,8};

inti,j,s1=0,s2=0;

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

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

{if(i==j)s1=s1+a[j];

if(i+j==2) s2=s2+a[j];

}

printf("%d\n%d\n",s1,s2);

}

2、***说明下列程序的功能。

main()

{ int i,j;

floata[3][3],b[3][3],x;

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

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

{scanf("%f",&x);a[j]=x;}

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

for(j=0;j<3;j++)b[j]=a[j];

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

{printf("\n");

for(j=0;j<3;j++) printf("%f ",b[j]);

}

}

3、***写出下列程序的运行结果。

main()

{ staticchar a[]={'*','*','*','*','*'};

int i,j,k;

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

{printf("\n");

for(j=0;j

for(k=0;k<5;k++) printf("%c",a[k]);

}

}

4、***说明下列程序的功能。

main()

{ int i,j;

float a[3][3],b[3][3],c[3][3],x;

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

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

{scanf("%f",&x);a[j]=x;}

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

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

{scanf("%f",&x);b[j]=x;}

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

for(j=0;j<3;j++) c[j]=a[j]+b[j];

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

{printf("\n");

for(j=0;j<3;j++) printf("%f ",c[j]);

}

}

5、**下面程序的运行结果是 f, B6 C) c  {; k1 k

#indude

) ~9 h/ A' M; Fmain() ; U, y- z+ V) v' K( K

{char  ch[7]={"12ab56"};

! J0 l* F( D8 f% M         int  i,s=0;

0 N% u7 D0 M$ p( a   for(i=0;ch>='0'&&ch<='9';i+=2) 7 g0 o; a1 A2 p0 f% \

s=10*s+ch-'0'; 7 {2 w& B8 u/ n

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

" j0 N& d; }/ Z* i* q       }

- \5 l; R& P* B# J+ p% E% X/ R* r. C) y% ]7 [1 O# z0 H6 ]

6、***当运行以下程序时,从键盘输入:aa  bb

% {& i* X4 C# c  @' Gcc dd

9 G; Q5 L3 T& O% I0 m(表示回车),则下面程序的运行结果是

" a  o' }7 f9 s0 [  C7 N" |$ N #  include

3 T$ L% Q" \8 g& I main()     0 N. J6 a  ?6 s2 J

{char  a1[5],a2[5],a3[5],a4[5]; - t: o7 e+ ]6 y/ r

scanf("%s%s",a1,a2);

- K0 H' Q" W. h  V1 l gets(a3);  gets(a4);

4 a1 ?& i6 k! l3 K puts(a1);  puts(a2); * u! p- H; ?7 y, z

puts(a3);  puts(a4);

: d8 W( r3 i2 E: S) |       }

7、**当运行以下程序时,从键盘输入:ab 6 x8 K5 |) [) [

c . W1 d" P) \, }8 F

dd

5 v- _* J" }1 b) ~! @* q (表示回车),则下面程序的运行结果是 * T& B# l' w$ d) }; t# W

#include 9 M! t, N: [! s7 ?  x

#define N 6 : Q- S( y! E8 S9 u: ^8 E% ]) V

main()

# B! l. |3 ^+ `% B1 L   {  char  c[N];       8 M+ P5 y* j& {5 j3 u

int  i=0;

7 p/ t, [5 z+ x( w5 S- `& `5 {       for  (;i

1 \6 `8 s6 t- g& a0 r/ i   for(i=0;  i

}

- `" z  n& Y! n; r9 \1 ~; h5 P0 ^/ n( M7 m

8、**当运行以下程序时,从键盘输入:AhaMA  Aha(

3 e4 y( T' k2 H 则下面程序的运行结果是 . l8 G" K8 O/ {& N6 S' ]% F

#include  "stdio.h" & v3 ]" M" g! E6 h& C

main()

* X1 s2 ]: o# u" R- l {char  s[80],c='a';

$ g8 C/ r7 I( o8 _3 y   int i=0; ; U. k! E8 A; J6 |7 o1 n

scanf("%s",s);

4 O# C, z2 t& k9 i1 x6 j; o$ A   while(s!='\0') , ^9 w/ v. w# q

{if(s==c)  s=s-32; # h6 E1 {, D) q

else  if(s==c-32)  s=s+32; " u0 g8 W! i! ^4 y' ~# K& |

i++; ! c6 K' r1 I8 }: F! `

}

% J$ K' Z6 ~+ b, \7 v   puts(s); ' @* l  D& a( p2 x/ S" E- P+ M

) : y+ s8 w0 T% t: x  d- Z. A2 e

3 L- q# [$ C& U

9、**下面程序的运行结果是。

" t8 P- ]% e( R9 _ #include

1 a1 I, v0 h/ S: } #inc1ude

0 Z( n* X+ Y+ W) N+ b% x: b main()

% k- L8 ?1 j8 ~$ P3 r  W {char  a[80」="AB",b[80]="LMNP";9 @; W0 h$ F, |

int  i=0;

3 k0 l( X# B  j+ ^2 {, E; z, U! j* Q       strcat(a,b);  ; ~% K0 r* i8 E3 F6 @& D

whi1e(a[i++]!='\0')b=a; ( o3 T2 d6 I7 o1 t6 B: ?; U$ z7 A

puts(b);

, R1 ?, \- s4 o" n! v } 2 D3 _6 \) ^8 N

7 k9 A. c% _6 T8 Y( `

10、**下面程序的运行结果是

6 M. I; R: ^) i, d. I/ R4 ?- }1 k  #include ! \& C6 ^* L  h& r

main()

# X8 _. P: `, `  F' o{ ' v3 Q  m0 K5 H! z

char str[]="SSSWLIA",c; 7 O. N: z1 e& M

int k; ( Z9 `  v) ?' T+ i/ Q! n

for(k=2;(c=str[k]!='\0';k++)

- g' g; A' p/ N, W! [3 o4 |: Y% [" \{switch© 2 l3 {# k6 r/ d  U( `8 u" D0 s

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

8 D- t1 x8 n1 C6 kcase 'l':continue;

7 `9 R! Z& S4 }' [/ X! n6 pdefault:putchar©;continue;

6 m4 a: A( s7 A/ W} 7 }7 o  k9 g; S+ M2 q' Q" ~  @, u

putchar('*'); $ O. g5 v) {1 Q- j

} ; g. I! b0 }) k+ L9 {3 E  M0 A

}

2 h4 X9 W4 J' C0 ]

9 B8 P2 \: N+ }6 ?/ k7 t! v" n3 z$ _

11、**下面程序的运行结果是 . r7 K0 z- D/ ^( f& ~' v

#include

" ^1 l+ S! k4 Imain()

1 A; }, S8 q! N9 a4 `{char a[]="morming",t;

2 e) r) ^9 G1 O9 H$ Oint i,j=0;

3 E* O( k! Y: ~3 R4 X& Wfor(i=1;i<7;i++) if(a[j]

t=a[j];a[j]=a[7]; / S4 @" ^- U: C# @' L4 R9 S4 a

a[7]=a[j];puts(a);

* h# P: N, a" i, u6 i4 D} + ^( t# A& X) m7 R2 W. L

, K: P+ ], ]/ _* N7 _' ^, g

四、程序填空

1、***下面程序将按如下形式输出杨辉三角形。

1

11

121

1331

14641

#define N 5

main()

{int  i,j,a[N][N];char space=’ ’;

for(i=0;i

{ =1; =1;}

for(i=2;i

for(j=1;;j++)

a[j]=+a[i-1][j];

for(i=0;i

{for(j=0;j<4-i;j++)

printf(“%c ”,space);

for(j=0;;j++)

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

printf("\n");}

}

2、**函数fun的功能是使一个字符串按逆序存放,请填空5 w, v" e5 }( i! W/ N

 void fun (char str[])

/ z& p6 F7 _* F! g { char m; int i,j;

4 X' t- _; D  ], K* W4 ~) F6 u for(i=0,j=strlen(str);i< (1);i++,j--)

/ @: u; Y6 X+ b1 L" e  p { m=(2);! a- T5 n3 m& {- j8 L* A; |

 str= (3);

% r9 X6 x2 E4 R' p str[j-1]=m;

; _/ |$ e, v, J$ ?7 V3 M }

( H9 i% R% h, B1 E printf("%s\n",str);

' ]3 z" Y2 N. G6 D }

" Y. V6 W8 y! v  `" ^& i3、***以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。6 h. _) y; S- I# \

 #include . V) L- x2 D, Z. U8 ^2 I; P% ?. _

 main(). g' a2 p# L/ S/ I, D, i

 { char str[100],str2[100],c;

- B# ~5 w' m3 E4 x8 y; M int i,s;

0 Z8 ?) r0 w0 e0 y0 Y printf("\n input string1:\n"); gest(str1);

& {, ^" |1 e$ v3 `* F+ s printf("\n input string2:\n"); gest(str2);

, ~! n, H& j" r6 j6 M i=0;6 N0 t/ ], L0 i7 d

while((strl==str2&&(str1!= (4)))

2 {/ k+ }2 _/ L- c" ~/ n) v! k  t i++;+ S9 T0 r' Y% C1 {. z3 Q

 s= (5);

" }4 ]5 _1 H. R8 c! k: l  A printf("%d\n",s);, `& m. L$ x% x

: T0 l  o" |* x0 D

4、**下面程序段是输出两个字符串中对应字符相等的字符。请选择填空。 D2 r3 Y. p9 }1 H; ~$ X: ~$ w

char  x[]="programming";

1 D1 \6 k1 V# p* i( E) E: H# Achar  y[]="Fortran"; 8 t% l# z: A% M! N  M5 K1 n

int  i=0; ! n$ u$ G8 L# y8 b  P

while  (x!='\0',&& y!'\0') : r! y4 A3 g' [! g. U9 f9 M$ T

{if  (x==y) printf  ("%c"); "(1));

?8 e5 \2 M: v7 j1 g7 ]     else (2);}

6 |! ~; Q" T, d  x5 C7 V9 f}

9 {) ]9 L( V' }/ ~

5、**有已排好序的字符串a,下面的程序是将字符串s中的每个字符按a中元素 的规律插入到a中。请选择填空。

% J6 k2 b4 Q$ M, q' O* j# G5 a #indude ( U! s: N* h- j3 i- r. ~3 ~

main() 2 q/ B# d' L- g: |

{char  a[20]="cehiknqtw";

+ I( V+ N# H7 c) S2 q3 ?   char  s[]="fbla"; j# J% D  O( O; _7 H

int i,k,j; " M( _1 |1 d2 s; ?! c1 M

for(k=0;s[k]!='\0';k++)

, x& J7 @1 N! p/ ?4 m5 z+ ]6 [    {j=0;    % p9 Q3 i5 k5 p, X" c- U! S

while(s[k]>=a[j]&&a[j]!='\0')(1);

: ]9 h( L3 {& N4 u( o' d& ]       for(i=str1en(a);i>=j;i--) (2);

# A0 [# Z8 `3 f+ y5 g) A( }0 H- X      a[j]=s[k];

6 D* K5 @. Z) S# W) l     } 4 f  C) E+ k4 U# z$ M* S

puts(a); Q' B# Y( u- G2 u! P6 v) z

}

4 n& s4 J7 w. q9 g' ~+ o  T1 |4 U, f: E) C3 f: w; A

6、*下面程序的功能是将字符串5中所有的字符c删除。请选择填空。

/ {) k9 ^0 P6 z+ W' v1 o #include   " Y1 J$ G# Q( n' d' @

main() ' S: H* Z( O) s. f0 ~

{char  s[80]; ! o: ]4 N* v# H+ }

int i,j;

) ^, g6 j0 s1 j1 v4 R* Q! i      gets(s);

% n, J5 t; N( Q, C5 l3 k       for(i=j=0;s!='\0';i++) 5 R0 t! Y' n+ w* L) y

if(s!='c')(1) 4 B. ^+ r* ]. q. {% Z) g0 Y

puts(s); % p1 H1 Y* ^6 e

}

2 D8 B- g* A, j; V7、**下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间 用空格分隔。请选择填空。       # A# J6 r1 w) o. O) G" H7 `) q

#indude

) ?/ }+ w  T. b# d: C8 @   main() + R7 C$ Y) q- }3 F; m, K- i5 o

{char  s[80」,c1,c2=''; 7 y4 t0 x* t8 b6 l# T8 q+ G5 N5 F

int  i=0,num=0;9 L2 K- U1 \6 [! R, s

gets(s); 1 w9 Z- u4 K/ m

while(s!='\0')

P- p( E9 f5 z1 s         {c1=s;

0 z& ^7 m1 H, ~if(i==0)  c2=' '; 9 _( q3 B% w  T5 O1 ]' L9 U

else  c2=s[i-1]; ! u- k2 ^/ `3 ^& ~$ T2 }& {

if((1))  num++; . B, A6 a7 D! H! \4 O8 H

i++; 2 [6 y( H2 b. [

) # c9 C9 [8 I9 m) x

printf("There are %d words.\n",num);

! O! b* P  Y& M. Q6 A+ \  H* } } # f4 K3 A2 B( }. z6 k, r9 Q% C' d

: t" l! Y# h9 S, [; |# G5 `

1 q9 ^9 x3 {* b5 Y8、**下面程序是用冒泡法对10个数进行从小到大排序的程序。

main( )

{ int ,i,j,temp;

printf("请输入10个整数:\n");

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

scanf("%d",);

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

for(j=0;;j++)

if(a[j] a[j+1])

{ temp=a[j];; a[j+1]=temp;}

printf("\n排好序的10个整数为:\n");

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

printf("%5d",a);

}

9、***编写程序,实现:将自然数1、2、3、···、25以file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg方向依此填入二维数组a(5行5列)并按照矩阵形式输出结果。

* h9 Q; c5 `* c1 i1 ]7 G    file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg   file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg   file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg   file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg   file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg& ^. v5 Q/ }& r: T* t

file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg 11    7   4    2    1

9 m4 ]3 z) |* ?' |% c# @& P; [ file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg 16   12   8    5    3

* q! ]' o# b+ h1 Y; T/ F0 A& x  M file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg 20   17  13    9    6! X0 [" |  s1 [

file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg 23   21   18  14   10$ H  X. W8 s8 A- P' M

file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg  25   24  22   19   15; ]9 J& Q8 _3 z5 Q5 w& K' \

请填空完善程序。

+ g" {# E5 C( j' ` #include

0 P! X2 X8 x" Y3 _+ H  #define N 5

! j2 e; \" i1 J- v$ V* D  main()

, c9 x) X5 v0 Y  {

! ]2 T/ Q* H& ^6 W+ [8 ]; Y     int i,j,k;+ {! N8 _3 `' A

int a[N][N];2 g  @* I/ I6 H

k=1;

+ S7 k% O. [" h     for (i=N-1;i>=0;i--)

" I  f) T" W. }  r       for (j=0;j

{

^# R4 G: O2 g0 r+ C" o0 @- Z          a[j][i+j]=k;e# K6 b! B8 _- ~, d; Y

k++;3 _) ?5 y/ E, a7 b

}1 q+ z. E8 d9 x! Q" I

for (i=1;i<=N-1;i++). _, }  u* l" K$ i

for(j=0;j<______>

6 B, x: j+ [& y+ i          {

3 [( ]4 W9 C" [! [; M3 x             __________(2)_________=k;

6 }3 ]/ ?$ Z) s0 M3 P            ___________(3)__________;# d/ O3 w8 [/ I4 _- H; a! t

}

8 M( W  V) {! V+ y/ U7 e       for (i=0;i

{/ e/ u6 _! ?9 `( D- h. y

for(j=0;j

& a* e# z) d3 k               printf("%4d",______(4)________);, @, g1 `4 [  y  K( ~" n8 B' Q: E

____________(5)___________;% b4 ?1 A! ~( }' f: `5 K

}

$ P& T! ^' u; ]: y6 ]4 L        }

五、编写程序

1、**检测某一给定字符串的长度(字符数),不包括结束符’\0’。

答案:

#include

main()

{

staticchar str[]={"happy"};

inti;

i=0;

while(str!='\0')

i++;

printf("thelength of string is %d",i);

}

2、**求二维数组A[3][4]中最大元素值。

3、 ***编一过程判定s字符串是否为一个Palindrome,所谓Palindrome是指其从正反两个方向看都是一样的,如“madam”。

4、 ***已知一个一维数组a[11]中有10个数,求出其中前n个数的和并放入a[10]中。其中n由键盘输入。

5、**编程序,输入单精度型一维数组a[10],计算并输出a数组中所有元素的平均值。

6、**编程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。

7、**编程序,输入两个字符串(<40个字符),连接后输出(不准用系统函数)。

8、***编程序,按下列公式计算s的值(其中x1、x2、…、xn由键盘输入):

s=(x1-x0)2+(x2-x0)2+.....+(xn-x0)2  (其中x0是x1、x2、…、xn的平均值)

#include

#define  N 10

main()

{int i;

float s=0,x[N+1];

x[0]=0;

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

{scanf("%f",&x);x[0]=x[0]+x;}

x[0]=x[0]/N;

for(i=1;i<=N;i++) s=s+(x-x[0])*(x-x[0]);

printf("%f",s);

}

9、***输入一个3×5的整数矩阵(假设所有的数据互不相同),输出其中最大值、最小值和它们的下标。

10、***设某班50名学生的三科成绩表如下:

课程一        课程二       课程三

…              …            …

试编一个程序,输入这50个学生的三科成绩,计算并输出每科成绩的平均分。

11、**编一个程序,输入一个短整型数据,输出每位数字,其间用逗号分隔。例如输入整数为2345,则输出应为:2,3,4,5。

第八章函数一、填空

1、*若用数组名作为函数调用的实参,则传递给形参的是(  )。

2、*可执行的c语言程序系由一个或多个(  )组成。

3、**C语言程序是函数的集合,是功能相对独立完整的程序段。C语言函数可分为   (  ),(  )和空函数.

4、**程序可以通过改变局部变量的存储类型来改变变量的生存期,变量的存储类型有四种,自动的,(  ),   (   )和寄存器的

5、**函数调用自身时,就形成了递归调用。递归调用有两种(  )和(   )。二、单项选择题

1、*在C程序中,若对函数类型未加说明,则函数的隐含类型为(      )。

(A)int        (B)double      (C)void      (D)char

2、*当调用函数时,实参是一个数组名,则向函数传送的是(      ).

(A) 数组的长度             (B) 数组的首地址

(C)数组每一个元素的地址   (D)数组每个元素中的值

3、**C语言规定,程序中各函数之间; `1 ^  x4 J1 U& q; F1 j

(A) 既允许直接递归调用也允许间接递归调用  (B) 不允许直接递归调用也不允许间接递归调用$ y6 a" D: ^9 P0 d* d3 S' [

(C) 允许直接递归调用不允许间接递归调用    (D) 不允许直接递归调用允许间接递归调用

5、 **以下叙述中不正确的是(  )。

(A)在不同的函数中可以使用相同名字的变量

(B)函数中的形式参数是局部变量

(C)在一个函数内定义的变量只在本函数范围内有效

(D)在一个函数内的复合语句中定义的变量在本函数范围内有效

6、**以下正确的说法是(  ).

建立函数的目的之一是

a)提高程序的执行效率     b)提高程序的可读性 c)减少程序的篇幅 d)减少程序文件所占内存

7、**以下正确的函数定义形式是(  ).

a)double fun(int x,inty)       b)double fun(int x; int y)

c)double fun(int x, inty);     d)double fun(int x,y);

8、**C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为(  ).

A)地址传递                              B)单向值传递

C)由实参传给形参,再由形参传回给实参   D)由用户指定传递方式

9、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(  ).

a)float    b)int    c)long    d)double

10、**已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array

的错误定义方式为(  ).

int a[3][4];

f(a);

a)f(int array[][6])   b)f(int array[3][])  c)f(int array[][4])   d)f(int array[2][5])

11、***以下程序的正确运行结果是(  ).

#include

void num()

{extern int x,y;inta=15,b=10;

x=a-b;

y=a+b;

}

int x,y;

main()

{

int a=7,b=5;

x=a+b;

y=a-b;

num();

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

}

a)12,2    b)不确定   c)5,25  d)1,12三、阅读程序,写出程序运行结果

1、**int  x,y

num()

{int  x,y;

int  a=10,b=5;

x=a+b;y=a-b;

}

main()

{int  a=8,b=3;

x=a-b;y=a+b;

num();

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

}

2、**longfib(int n)

     { if(n>2)return(fib(n-1)+fib(n-2));

       else return(2);

     }

    main0

     { printf(“%d\n”,fib(3));

}

3、**int a, b;

void fun()

{ a=100; b=200; }

main()

{ int a=5, b=7;

fun();

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

}

4、**以下程序的运行结果是

#include

main()

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

c=max(a,b);

printf("max is%d\n",c);

}

max(int x,int y)

{int  z;

z=(x>y)?x:y;

return(z);

}

5、**以下程序的运行结果是

int a=5;int  b=7;

main()

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

c=plus(a,b);

printf("A+B=%d\n",c);

}

plus(int x,int y)

{int z;

z=x+y;

return  (x);

}

6、***以下程序的运行结果是

main()

{incx();

incy();

incx();

incy();

incx();

incy();

}

incx()

{

int x=0;

printf("x=%d\t",++x);

}

incy()

{static int y=0;

printf("\ny=%d\n",++y);

}四、程序填空

1、***函数gongyu的作用是求整数num1和num2的最大公约数,并返回该值。请填空。

gongyu(int num1,int num2)

{int temp,a,b;

if(__1___)

{temp=num1;num1=num2; __2___;}

a=num1;b=num2;

while(_3___)

{temp=a%b;a=b;b=temp;}

__1___;

}

五、编写程序

1、 ***编写程序,在主函数中输入10个数,在函数invert中将10个数按反序存放,并在主函数中输出结果。

2、 **已有变量定义和函数调用语句:int x=57 ;isprime(x); 函数isprime( ) 用来判断一个整形数a是否为素数,若是素数,函数返回1,否则返回0。请编写isprime函数。

3、** a是一个2X4的整型数组,且各元素均已赋值。函数max_value可求出其中的最大的元素值max,并将此值返回主调函数。今有函数调用语句max_value(int arr[][4])

4、***编写函数,求最大公约数和最小公倍数

第九章一、填空

1、**C语言提供(  )预处理的功能,有利于程序的可移植性,增加程序的灵活性,其命令以符号(  )开头。

2、*使用宏名代替一个(  ),可以减少程序中重复书写某些字符串的工作量,提高程序的可读性和可移植性。

3、*在预处理宏定义时,不做(  )检查,只有在编译已被宏展开后的源程序时才报错。

4、*宏名的有效范围为(  )之后到本源文件结束。

5、**可以用(  )命令终止宏定义的作用域。

6、*带参数的宏定义在展开时,不仅进行字符串的替换,还要进行(  )的替换。

7、*宏名不是变量,故无类型,其参数也无类型。所以在宏定义时,字符串可以是(  )类型的数据。,

8、*宏替换不占运行时间,只占(  )时间。

9、* * “文件包含”处理是指将另外的文件包含到(  )之中,它可以减少程序设计人员的重复劳动,通过(  )命令来实现。

10、*被包含文件与其所在的源文件,在预编译后成为(  )个文件。

11、**一般情况下,源程序中所有的行都参加编译。如果希望对其中一部分内容只在满足一定条件时才进行编译,这就是(  )。二、单项选择题

1、**有以下程序

#include

#define f(x) (x*x)

void main()

{

int i1, i2;

i1=f(8)/f(4) ;

i2=f(4+4)/f(2+2);

printf("%d,%d\n",i1,i2);

}

程序运行后的输出结果是______。

A)64, 28            B)4, 4          C)4, 3           D)64, 64

2、**有以下程序

#include

#define P 3

void F(int x){return(P*x*x);}

void main()

{

printf("%d\n",F(3+5));

}

程序运行后的输出结果是______。

A)192                B)29            C)25             D)编译出错

3、**以下叙述中正确的是______。

A)预处理命令行必须位于源文件的开头

B)在源文件的一行上可以有多条预处理命令

C)宏名必须用大写字母表示

D)宏替换不占用程序的运行时间

4、 *在宏定义#define PI 3.14中,宏名PI代替一个。

A) 单精度数       B)双精度数       C) 常量        D)字符串

5、 * 以下在任何情况下计算平方数时都不会引起二义性的宏定义是。

A) #definePOWER(x)  x*x       B) #definePOWER(x)  (x)*(x)

C) #definePOWER(x)  (x*x)     D) #definePOWER(x)  ((x)*(x))

6、**下面程序的运行结果是。

#include

#define ADD(x) x+x

void main()

{

intm=1,n=2,k=4;

intsum=ADD(m+n)*k;

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

}

A) sum=9   B) sum=10    C) sum=12    D) sum=24

7、 ***若有以下宏定义

#include

#defineN 2

#defineY(n) ((N+1)*n)

voidmain()

{

int z;

z=2*(N+Y(4));

printf("%d\n",z);

}

A) 28   B) 24    C) 38    D) 26

8、**执行下面的程序后,a的值是。

#include

#define SQR(X) X*X

void main( )

{

inta=10,k=2,m=1;

a/=SQR(k+m);

printf("%d\n",a);

}

A)10      B)2      C)9      D)0

9、 ** # define能做简单的代替,用宏代替计算多项式5*x*x+4*x+3之值的函数f( )正确的定义是。

(A)#define f(x)  5*x*x+4*x+3           (B)#define f  5*x*x+4*x+3

(C)#define f(x)  (5*(x)*(x)+4*(x)+3)      (D)#define (5*x*x+4*x+3) f(x)

10、**设有以下宏定义:

$ k" S% V) }7 {6 `  Q. Y6 B#define N 3

2 G/ N2 o: A1 `5 P3 j#define Y(n) ( (N+1)*n)$ ?7 v* ~: u4 T+ R' _, ]& z$ F& w

则执行语句:z=2* (N+Y(5+1));后,z的值为

2 M7 G# K0 i! Q. m(A) 出错          (B)42              (C) 48           (D) 54

; A/ s/ a3 d5 m! Y6 m' T- s- k11、**已知宏定义 #define SQ(x) x*x,执行语句printf("%d",10/SQ(3));后的输出结果是____。

A) 1 B) 3 C)9 D) 10三、阅读程序,写出程序运行结果

1、**main()

{ int a[]={1,3,5,2,7};

int b[]={5,3,9,4,6};

int c[5],  i;

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

{c=a*b;

printf(“%d  ”, c);

}

}

2、**#define M(x,y,z)x*y+z

main()

{ int a=1,b=2, c=3;

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

}

第十章指针一、填空

1、*指针变量是把内存中另一个数据的(  )作为其值的变量。

2、* 能够直接赋值给指针变量的整数是(  )。

3、*** 如果程序中已有定义:int k;

1)     定义一个指向变量k的指针变量p的语句是(  )。

2)     通过指针变量,将数值6赋值给k的语句是(  )。

3)     定义一个可以指向指针变量p的变量pp的语句是(  )。

4、 **当定义某函数时,有一个形参被说明成int *类型,那么可以与之结合的实参类型可以是 (  )、 (  )    等。

5、假设有语句j=3,jp=&j;则JP的值为(   ),*JP的值为(   )。

6、设jp是指向变量j的指针变量,则语句*jp=3和语句j=3;的作用是相同的即*代表变量j。此说法正确吗?()。

7、运算符&、*、++、--的优先级别相同,但按自右而左方向结合.故表达式*p++的值和表达式(*p)++的值是()。表达式*++p和++*P的作用是()。

8、指针变量可以作为函数的参数,其作用是传递或接受一个变量的()。

9、可以通过指向数组的指针变量来访问一个数组元素且可司以带下标,所以p

*(p+i)是等价的、此说法正确吗?()

10、定义P为指向整型数据的指针变量的指针变量的语句为()。

11、设p为指针数组.它指向包含n个整形数据元素的一维数组,则定义语句为()

语句int *p(){};表示函数名为(),函数返回值为()

12、语句int (*)p();表示p为指向()的指针,函数返回值为()

13、在C程序中有两种方法实现一个字符串,一是(),二是()。

14、char *string=”Hello!”;中的字符串是按()处理的,并将()赋值给字符指针变量string

15、可以通过字符数组名或()对一个字符串进行整体的输入输出

16、一个函数在编译时被分配一个地址,这个入口地址被称为函数的()

17、函数的调用可以通过函数名调用,也可以通过函数()调用。

18、一个函数可以返回一个指针型的数据。则在函数定义语句中,函数名前面要加一个()符号。

二、单项选择题

1、**设有定义:int  n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是

A)*p=*q;  B)p=q;   C)*p=&n1;   D)p=*q;

2、**若有定义:int  x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是

A)随机值  B)0   C)x的地址   D)p的地址

3、*以下定义语句中正确的是

A) chara='A'b='B';   B)float a=b=10.0;    C) int a=10,*b=&a;    D)float *a,b=&a;

4、**有以下程序

main()

{ inta=7,b=8,*p,*q,*r;

p=&a;q=&b;

r=p;p=q;q=r;

printf("%d,%d,%d,%d\n",*p,*q,a,b);

}

程序运行后的输出结果是

A)8,7,8,7   B)7,8,7,8   C) 8,7,7,8   D) 7,8,8,7

5、*设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是

A)scanf(“%d”,pA);     B)scanf(“%d”,A) ;

C)scanf(“%d”,&pA);    D)scanf(“%d”,*pA) ;

6、 **设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是

A) p=1;    B) *q=2;    C) q=p;    D) *p=5;

7、 **有以下程序

void  fun(char  *a, char  *b)

{  a=b;   (*a)++;  }

main ()

{ char   c1="A", c2="a", *p1,*p2;

p1=&c1;  p2=&c2;   fun(p1,p2);

printf(“&c&c\n”,c1,c2);

}

程序运行后的输出结果是

A) Ab        B) aa        C) Aa           D) Bb

8、**若程序中已包含头文件stdio.h,  以下选项中,正确运用指针变量的程序段是

A)t  *i=NULL;                  B)float  *f=NULL;

scanf("&d",f);                  *f=10.5;

C)char  t="m", *c=&t;          D) long   *L;

*c=&t;                          L=‘\0’;

9、* 有以下程序

#inc1ude   

main()

{  printf("%d\n", NULL);  }

程序运行后的输出结果是

A)0          B) 1            C)-1          D) NULL没定义,出错

10、*已定义以下函数

fun (int   *p)

{  return  *p:  }

该函数的返回值是

A) 不确定的值                   B) 形参p中存放的值

C) 形参p所指存储单元中的值     D) 形参p的地址值

11、 **下列函数定义中,会出现编译错误的是

A) max(int  x, int y,int  *z)   B) int  max(int   x,y)

{*z=x>y  ? x:y;  }            int  z ;

z=x>y  ? x:y;

return  z ;

}

C) max (int  x,int y)          D)int  max(int  x,int y)

{  int  z;                     {   return(x>y?x:y) ; }

z=x>y?x:y;  return(z);

}

12、**有以下程序段

main()

{ int  a=5, *b,   **c;

c=&b;   b=&a;

……

}

程序在执行了c=&b:b=&a;语句后,表达式:**c的值是

A) 变量a的地址  B) 变量b中的值 C) 变量a中的值  D) 变量b的地址

13、**有以下程序

main()

{ chara,b,c,*d;

a=’\’;  b=‘\xbc’;

c=‘\0xab’;  d="\017";

print("%c%c%c\n",a,b,c,*d);

}

编译时出现错误,以下叙述中正确的是

A) 程序中只有a=’\’;语句不正确 B) b=‘\xbc’;语句不正确

C)d="\0127";语句不正确           D) a=’\’;和c=‘\0xab’;语句都不正确

14、**若有以下定义和语句

#include   

inta=4,b=3,*p,*q,*w;

p=&a;  q=&b;  w=q; q=NULL;

则以下选项中错误的语句是

A)*q=0;   B)w=p;   C)*p=a;  D)*p=*w;

15、***有以下程序

int *f(int*x,int *y)

{ if(*x

return x;

else

return y;

}

main()

{ inta=7,b=8,*p,*q,*r};

}

执行后输出结果是

A)7,8,8    B) 7,8,7   C)8,7,7   D)8,7,8

16、 **若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是

A)p=q;   B)*p=*q;  C)n=*q;  D) p=n;

17、**有以下程序

void fun(char*c,int d)

{   *c=*c+1;d=d+1;

printf(“%c,%c,”,*c,d);

}

main()

{  char a=’A’,b=’a’;

fun(&b,a);  printf(“%c,%c\n”,a,b);

}

程序运行后的输出结果是

A)B,a,B,a      B) a,B,a,B     C) A,b,A,b     D) b,B,A,b

18、**若有说明语句:int  a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是

A)scanf("%d%d%d",&a,&b,d);    B) scanf("%d%d%d",&a,&b,&d);

C)scanf("%d%d%d",a,b,d);      D) scanf("%d%d%d",a,b,*d);

19、 **若定义:inta=511,*b=&a;, 则printf("%d\n",*b);的输出结果为

A) 无确定值     B) a的地址     C) 512       D) 511

20、 *若有说明:int  i, j=2,*p=&i;,则能完成i=j赋值功能的语句是

A)i=*p;    B)  p*=*&j; C) i=&j;   D)i=**p;

21、 **下列程序段的输出结果是

A) 2 14 3          B) 1 21 2          C) 1 23 4           D) 2 11 2

void fun(int  *x, int *y)

{   printf(“%d  %d”, *x, *y);*x=3; *y=4;}

main()

{  int x=1,y=2;

fun(&y,&x);

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

}

22、 **下列程序的运行结果是

A)6  3            B)3   6          C) 编译出错         D) 0  0

void fun(int  *a, int *b)

{  int *k;

k=a; a=b;b=k;

}

main()

{  int a=3, b=6,  *x=&a, *y=&b;

fun(x,y);

printf(“%d  %d”, a, b);

}

23、 *有如下程序段

int  *p,a=10,b=1

p=&a;  a=*p+b;

执行该程序段后,a的值为

A)12              B) 11              C)10             D) 编译出错

24、 **有以下函数

char  fun(char *p)

{  return p;  }

该函数的返回值是

A) 无确切的值                        B) 形参p中存放的地址值

B) 一个临时存储单元的地址            D) 形参p自身的地址值

25、** 请选出正确的程序段

A)int  *p;                      B)int  *s, k;

scanf("%d",p);                   *s=100;

…                               …

C)int  *s, k;                   D)int  *s, k;

char*p, c;                      char *p, e;

s=&k;                           s=&k;

p=&c;                            p=&c;

*p='a';                         s=p;

…                              *s=1;

26、 *若有以下定义和语句:

double  r=99,*p=&r;

*p=r;

则以下正确的叙述是

A) 以下两处的*p含义相同,都说明给指针变量p赋值

B) 在"double  r=99, *p=&r;"中,把r的地址赋值给了p所指的存储单元

C) 语句"*p=r;"把变量r的值赋给指针变量p

D) 语句"*p=r;"取变量r的值放回r中

27、 *以下程序运行后,a的值是

A)4             B) 1              C)0              D) 运行时出错,a无定值

main()

{  int  a,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

printf("%d\n",a);

C   }

28、 **有以下程序

int fun(int  x,int y,int   *cp,int  *dp)

{  *cp=x+y;   *dp=x-y;  }

main()

{  int a, b, c, d;

a=30;  b=50;

fun(a,b,&c,&d);

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

}

输出结果是

A)50,30          B) 30,J50          C)80,-20          D)80,20

29、 **若有定义和语句:

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

pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);

则输出结果是:

A)10,20       B)10,10       C)20,10           D)20,20

30、 ***以下程序的输出结果是

#include

subl(char  a,char b)    {char c; c=a;a=b;b=c;}

sub2(char*a,char b)    {char c;c=*a;*a=b;b=c;}

sub3(char*a,char*b)    {char c;c=*a;*a=*b;*b=c;}       { char a,b;

a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);

a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);

a='A';b='B';sub1(a,b);putchar(a);putchar(b);

}A

A)BABBAB        B)ABBBBA   C)BABABA          D)BAABBA

31、* 若有说明:inti,j=7,*p=&i;,则与i=j;等价的语句是

A) I=*P;        B)*P=*&J;      C)i=&j;             D) i=**p;

32、 **要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确招待此功能的函数是

A)funa(int*x,int *y)            B) funb(intx,int y)

{int *p;                              {int t;

*p=*x;*x=*y;*y=*p;}                   t=x;x=y;y=t;}

C) func(int*x,int *y)             D) fund(intx,int y)

{*x=*y;*y=*x;}                         {*x=*x+*y; *y=*x-*y; *x=*x-*y; }三、阅读程序,写出程序运行结果

1、 **有以下程序

void f( int y,int *x)

{y=y+*x;  *x=*x+y;}

main( )

{  int x=2,y=4;

f(y,&x);

printf(“%d   %d\n”,x,y);

}

执行后输出的结果是(  )。

2、 **下面程序的运行结果是。

void swap(int *a,int *b)

{  int *t;

t=a;   a=b; b=t;

}

main()

{  int x=3,y=5,*p=&x,*q=&y;

swap(p,q);

printf(“%d%d\n”,*p,*q);

}

3、**设有以下程序:

main()

{   int  a, b, k=4, m=6, *p1=&k, *p2=&m;

a=pl==&m;

b=(*p1)/(*p2)+7;

printf(“a=%d\n”,a);

printf(“b=%d\n”,b);

}

4、**下列程序的输出结果是  。

void fun(int *n)

{  while( (*n)--);

printf(“%d”,++(*n));

}

main()

{  int a=100;

fun(&a);

}

5、**下列程序的输出结果是

main()

& S3 T6 m4 e4 p: B{" M7 }: m! D" G" `; t5 h: W* D

char *p,*q;* e2 T" Z8 |% E+ Y4 F3 H; D4 S8 a

char str[]="Hello,World\n";

. w& E& x  b1 H* aq = p = str;* B3 b9 A' Q% \" Q, ?( s7 L

p++;9 q8 A6 e) b6 J, a% A8 g* V

printf(q);8 q7 V" L* ]' f# \( f5 @

printf(p);

: A% [* a+ o% B; G. ^4 `}

6 S% \, F0 H( ?4 n( Y, s& M6 z: |+ T# ~' z8 f

6、**下*列程序的输出结果是

main()$ ~0 H/ Z- c, _$ n7 T# T( F; s/ N

{

3 t# ^  M# A1 `; r" p: Ashort ar[11]={1,2,3,4,5,6,7,8,9,0,11};6 v# e4 c1 Q) f8 {: b' e

short* par=&ar[1];4 G" g( K/ X0 w7 ?

int i;

# Z3 `- K$ U& e- \9 f) p# lfor(i=0; i<10; i++)" U5 y' n4 c" }1 q1 |* l

{

$ ^1 d1 c$ ]7 s! {' m4 U0 Tprintf("%-5hd%-5hd%-5hd", ar, par,*(ar+i));2 y+ B2 F9 \- \8 \  q

}

" p+ f9 y/ ^0 O8 V7 A( v) j}

7、***下列程序的输出结果是

main()' ~% M7 T8 n5 m8 s! H

{

( K. Q. o8 a$ T4 O! K2 I4 R# mshort *p, *q;6 t, Z& _/ v2 U! g$ P1 f! B# A

short ar[10]={0};$ J) J1 L" n, h; x6 Z3 _

p = q = ar;

9 Y; ^( U' \9 `+ [p++;+ g/ `- k5 D" u9 [3 |

printf("%5d", p-q);

% m% {+ x0 O' x1 s& oprintf("%5d", (char*)p - (char*)q);

% @3 g, v5 v- M% tprintf("%5d", sizeof(ar)/sizeof(*ar));

- b4 i8 |/ I5 Q, {, |0 X4 B1 K}. U; w# e3 ]( ~

假设sizeof(short)==2四、程序填空

1、 **函数 void fun(float  *sn, in t n)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。

void  fun( float *sn, int n)

{  float  s=0.0, w, f=-1.0;

int i=0;

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

{ f=__(1)___ * f;

w=f/(2*i+1);

s+=w;

}

__(2)___=s;

}

2、*以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。

exchange(int  *x,  int  *y)

{  int t;

t=*y;   *y= __(1)___  ;    *x=__(2)___  ;

}

3、**下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。

int add(int x,int y,  __(1)___  z)

{  __(2)___  =x+y;}

4、***以下count函数的功能是统计substr在母串str中出现的次数。

int count(char *str,char *substr)

{   inti,j,k,num=0;

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

{for(   ②   ,k=0;substr[k]==str[j];k++,j++)

if(substr[   ③   ]==’\0’)

{num++;break;}

}

return num;

}

5、 ***以下Delblank函数的功能是删除字符串s中的所有空格(包括Tab、回车符和换行符)。

void Delblank(char *s)

{  int i,t;

char c[80];

for(i=0,t=0;   ①   ;i++)

if(!isspace(    ②    ))c[t++]=s;

c[t]=‘\0’;

strcpy(s,c);

}

6、***以下conj函数的功能是将两个字符串s和t连接起来。

char *conj(char *s,char *t)

{    char *p=s;

while(*s)   ①   ;

while(*t)

{*s=   ②   ;s++;t++;}

*s=‘\0’;

③     ;

}五、编写程序

1、 ** 指针实现,对传递进来的两个整型量计算它们的和与积之后,通过参数返回。

2、**  指针实现,将用户输入的字符串中的所有数字提取出来。

3、**  指针实现,计算字符串的串长。

4、**  指针实现,将一个字符串中的字母全部转换为大写。

5、**  指针实现,计算一个字符在一个字符串中出现的次数。

6、**  指针实现,判断一个子字符串是否在某个给定的字符串中出现。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值