文档库

最新最全的文档下载
当前位置:文档库 > C习题及答案

C习题及答案

第一、二章C语言概述与算法

一、选择题(四个选项中只有一个是正确的----下同)

1. 一个算法应该具有“确定性”等五个特性,下面对另外4个特性的描述中错误的是

A) 有零个或多个输入B) 有零个或多个输出

C) 有穷性D) 可行性

2. 以下叙述中正确的是

A) C语言的源程序不必通过编译就可以直接运行

B) C语言的每条可执行语句最终都将被转换成二进制的机器指令

C) C语言的源程序经编译形成的二进制代码可以直接运行

D) C语言的函数不可以单独进行编译

3. 对用C语言编写的代码程序,以下叙述中哪个是正确的

A) 可立即执行B) 是一个源程序

C) 经过编译即可执行D) 经过编译解释才能执行

4. 结构化程序由三种基本结构组成, 由这三种基本结构组成的算法

A) 可以完成任何复杂的任务B) 只能完成部分复杂的任务

C) 只能完成符合结构化的任务D) 只能完成一些简单的任务

5.有一个命名为C001.C的C语言源程序,当正常执行后,在当前目录下不存在的文件是

A)C001.OBJ B)C001.DAT C)C001.EXE D)C001.C

二、填空题

1.结构化程序由、、三种基本结构组成。2.模块化程序设计的设计原则是和。

3.组成C程序的基本单位是,其组成部分包括和。4.C程序中的main称,它可以出现在程序的位置。

5.由“/*”和“*/”括起来的内容称为,它的作用是。6.描述算法的常用方法有:。

第三章数据类型、运算符与表达式

一、选择题

1.与十进制数97不等值的字符常量是

A) ’a’ B) ’\101’ C) ’\x61’ D) ’\141’

2.在编写了一个C语言源程序C001.C并正确执行之后,当前目录下哪个文件不存在

A) C001.C B) C001.OBJ C) C001.DAT D) C001.EXE

3.以下选项中正确的整型常量是

A) 5.B)-10 C)1.000 D)4/5

4.以下选项中正确的实型常量是

A) 0 B)3. 1415 C)0.03x102D).32

5.以下选项中不正确的实型常量是

A)2.670E-1 B)0.05e+1.5 C)-77.77 D)456e-2

6.以下选项中不合法的用户标识符是

A)wb-1 B)file C)Main D)PRINTF

7.以下选项中不合法的用户标识符是

A)_123 B)printf C)A$ D)Dim

8.C语言中运算对象必须是整型的运算符是

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

9.可在C程序中用作标识符的一组标识符是

A)void B)as_b3 C)For D)2c

Define _123 -abc DO

WORD If case SiG

10.若变量已正确定义并赋值,符合C语言语法的表达式是

A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b

11.以下非法的赋值语句是

A) n=(i=2,++i); B)j++; C) ++(i+1); D) x=j>0;

12.设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是

A) 6.500000 B) 6 C) 5.500000 D) 6.000000

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

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

14.以下叙述中正确的是

A)a是实型变量,C允许以下赋值a=10,因此可以这样说实型变量中允许存放整型值。

B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式

C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D)已有a=3, b=5。当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3 15.以下叙述中正确的是

A)在C程序中,无论是整数还是实数,只要在允许的范围内都能准确无误的表示。

B)C程序由主函数组成。

C)C程序由函数组成。

D)C程序由函数和过程组成。

16.Turbo C中int类型变量所占字节数是

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

17.不合法的八进制数是

A)0 B)028 C)07700 D)01

18.不合法的十六进制数是

A)oxff B)0Xabc C)0x11 D)0x19

19.若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是A)a=b=c=100; B)d++; C)c+b; D)d=(c=22)-(b++); 20.以下选项中不是C语句的是

A){int i; i++; printf(“%d\n”, i); } B);

C)a=5,c=10 D){ ; }

21.以下合法的C语言赋值语句是

A)a=b=58 B)k=int(a+b); C)a=58,b=58 D)--i;

22.以下程序的输出结果是

main()

{ int x = 10, y = 3;

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

}

A )0

B )1

C )3

D )不确定的值

23.C 语言中的简单数据类型有

A )整型、实型、逻辑型

B )整型、实型、字符型

C )整型、字符型、逻辑型

D )整型、实型、逻辑型、字符型

24.C 语言中,字符(char )型数据在微机内存中的存储形式是

A )反码

B )补码

C )EBCDIC 码

D )ASCII 码

25.设有语句char a= …\172?;,则变量a

A )包含1个字符

B )包含2个字符

C )包含3个字符

D )说明不合法

26.C 语言中不合法的字符常量是

A )?\xff?

B )?\65?

C )?&?

D )?\028?

27.C 语言中不合法的字符串量是

A )”\121”

B )?y=?

C )”\n\n”

D )”ABCD \x6d”

二、填空题

1.若k 为int 型变量且赋值11,请写出运算k++后表达式的值 和变量的值 。

2.若x 为double 型变量,请写出运算x = 3.2, ++x 后表达式的值 和变量的值 。

3.函数体由符号 开始,用符号 结束。

4.函数体的前面是 部分,其后面是 部分。

5.在C 语言程序中,用关键字 定义基本整型变量,用关键字 定义单精度实型变量,用关键字 定义双精度实型变量。

6.把a1、a2定义成单精度实型变量,并赋初值1的说明语句是 。

7.C 程序中定义的变量,代表内存中的一组 。

8.表达式3.5 + 1 / 2的计算结果是 。

9.对以下数学式,写出三个等价的C 语言表达式是 、 、 。

c b a

10.表达式s = 10应当读做“ ”。

11.计算机中内存储器的最小单位称为 ,其中能容纳的数是 个

12.通常一个字节包含 个二进制位。在一个字节中能存放的最大十进制整数是 ,它的二进制数的形式是 ;最小十进制整数是 ,它的二进制形式是 。

13.当计算机用两个字节存放一个整数时,其中能存放的最大十进制整数是 、最小十进制整数是 ,它们的二进制形式是 。

14.以下程序的输出结果是 。

main ()

{ int a=0;

a+=(a=8);

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

}

第四章顺序结构程序设计

一、选择题

1.若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是

A)read(a,b,c) B)scanf(“%d%d%d”,a,b,c);

C)scnaf(“%D%D%D”,&a,&b,&C); D)scanf(“%d%d%d”, &a,&b,&c);

2.若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是

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

A)10 B)10.0,22.0,33.0 C)10.0 D)10 22

22 22.0 33.0 33

33

3.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是

A)scanf("%2d%2d%2d",&i,&j,&k);

B) scanf("%d %d %d",&i,&j,&k);

C)scanf("%d,%d,%d",&i,&j,&k);

D)scanf("i=%d,j=%d,k=%d",&i,&j,&k);

4.若有以下程序:

main()

{ int k=2, i=2, m;

m=(k+=i*=k); printf("%d,%d\n",m,i);

}

执行后的输出结果是

A) 8,6 B) 8,3 C) 6,4 D) 7,4

5 若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句是

A)a=a+b, b=a-b, a=a-b; B)t=a; a=b; b=t;

C)a=t; t=b; b=a; D)t=b; b=a; a=t;

6.有以下程序

main()

{ int i = 10, j = 1;

printf("%d,%d\n",i--, ++j);

}

执行后输出结果是

A) 9,2 B) 10,2 C) 9,1 D) 10,1

7.若变量已正确定义,以下程序段的输出结果是

x=5.16894;

printf(“%f\n”, (int)(x*1000+0.5)/(float)1000);

A)输出格式说明与输出项不匹配,输出无定值B)5.17000

C)5.168000 D)5.169000

8.若有以下程序段,c3中的值是

int c1 = 1, c2 = 2, c3;

c3 = c1 / c2;

A)0 B)1/2 C)0.5 D)1

9.若有以下程序段,其输出结果是

int a = 0, b = 0, c = 0;

c = ( a -= a - 5), (a = b, b+3);

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

A)0,0,-10 B)0,0,5 C)-10,3,-10 D)3,3,-10 10.当运行以下程序时,在键盘上从第一列开始,输入9876543210(此处表示Enter),则程序的输出结果是

main()

{ int a; float b, c;

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

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

}

A)a=98,b=765,c=4321 B)a=10,b=432,c=8765

C)a=98,b=765.000000,c=4321.000000 D)a=98,b=765.0,c=4321.0

11.以下程序的输出结果是

main()

{ int a = 2, b =5;

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

}

A)a=%2,b=%5 B)a=2,b=5 C)a=%%d,b=%%d D)a=%d,b=%d 12.若int类型占两个字节,则以下程序段的输出是

int a=-1;

printf(“%d, %u\n”, a, a);

A)-1,-1 B)-1,32767 C)-1,32768 D)-1,65535 13.以下程序段的输出是

int x = 496;

printf(“*%-06d*\n”, x);

A)*496 * B)* 496*

C)*000496* D)输出格式不合法

14.以下程序段的输出是

float a=3.1415;

printf(“|%6.0f|\n”, a);

A)|3.1415| B)| 3.0| C)| 3| D)| 3.| 15.以下程序段的输出是

pr intf(“|%10.5f|\n”, 12345.678);

A)|2345.67800| B)|12345.6780| C)|12345.67800| D)|12345.678| 16.若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是

A)scanf(%f”,c) B)scanf(%8.4f”, &c); C)scanf(%6.2f”, &c); D)scanf(%8f”, &c);

17.若变量已正确说明,要求用以下语句给a赋予3.12、给b赋予9.0,则正确的输入形式

scanf(“a=%f,b=%f”,&a, &b);

A)3.12 9.0 B)a= 3.12b= 9 C)a=3.12,b=9.0 D)a=3.12 ,b=9 18.以下程序的输出结果是

#include “math.h”

main()

{ double a = -3.0, b = 2;

printf(“%3.0f %3.0f\n”, pow(b,fabs(a)), pow(fabs(a), b) );

}

A)9 8 B)8 9

C)6 6 D)以上三个都不对

19.以下程序的输出结果是

main()

{ char c1 = …A?, c2 = …Y?;

printf(“%d,%d\n”, c1, c2);

}

A)因输出格式不合法,无正确输出B)65,90

C)A,Y D)65,89

20.以下程序段的输出结果是

main()

{ char x = …A?;

x = (x>=?A? && x<=?Z?)?(x+32):x;

printf(“%c\n”, x);

}

A)A B)a C)Z D)z

21 以下程序段的输出结果是

main()

{ char ch1, ch2;

ch1 = …A? + …5? - …3?;

ch2 = …A? + …5? - …3?;

printf(“%d,%c\n”, ch1,ch2);

}

A)67, C B)B,C

C)C,D D)不确定的值

22.若变量已正确说明,要求用以下语句给c1赋予字符%、给c2赋予字符#、给a赋予2.0、给b赋予4.0,则正确的输入形式是

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

A)2.0 % 4.0 # B)2.0%4.0# C)2% 4# D)2 % 4 # 23.以下程序的输出结果是

main()

{ int w = 4, x = 3, y = 2, z = 1;

printf(“%d\n”, (w < x) ? w: z < y ? z: x));

}

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

24.下列程序段的输出结果是

int a=1234;

float b=123.456;

double c=12345.54321;

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

A)无输出

B)12,123.5,12345.5

C)1234,123.5,12345.5

D)1234,123.4,1234.5

二、填空题

1.若有以下定义,请写出以下程序段中输出语句执行后的结果。

(1)(2)(3)

int i = -200, j =2500;

printf(“(1) %d %d”, i, j);

printf(“(2) i = %d, j = %d\n”, i, j);

printf(“(3) i = %d\n j = %d\n”, i, j);

2.变量i、j、k已定义为int类型并赋初值0,用以下语句输入时

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

当执行第一个输入语句时从键盘输入:

12.3 表示Enter键

则变量i、j、k的值分别是。

3.复合语句在语法上被认为是。空语句的形式是。

4.以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k 输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式、、。

int k; flaot a; double x;

scanf(“%d%f%lf”, &k, &a, &x);

printf(“k = %d, a = %f, x = %f\n”, k, a, x);

5.以下程序段的输出结果是。

int x = 0177;

printf(“x = %3d, x = %6d, x = %6o, x = %6x, x = %6u\n”, x, x, x, x, x);

6.以下程序段的输出结果是。

double a = 513.789215;

printf(“a = %8.6f, a = %8.2f, a = %14.8f, a = %14.8lf\n”, a, a, a, a);

7.若要通过以下语句给a、b、c、d分别输入字符A、B、C、D,给w、x、y、z分别输入10、20、30、40,正确的输入形式是。请用代表Enter键。

scanf(“%d%c%d%c%d%c%d%c”, &w, &a, &x,&b, &y, &c, &z, &d);

8.若有以下说明和输入语句,要求给c1、c2输入字符A和B,给a1、a2输入7.29和101.298,从键盘正确输入数据的形式是。

char c1, c2; float a1, a2;

scan f(“%f%f”, &a1, &a2);

scanf(“%c%c”, &c1, &c2);

9.若有以下说明和输入语句,要求给c1、c2、c3输入字符A、B和C,请写出从键盘正确输入数据的形式是。

char c1, c2, c3;

scanf(“%4c”, &c1);

scanf(“%4c”, &c2);

scanf(“%4c”, &c3);

10.下列程序的输出结果是16.00,请填空。

main()

{ int a=9, b=2;

float x=, y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n", z );

}

第五章选择结构程序设计

一、选择题

1.下面的程序片断所表示的数学函数关系是

y = -1;

if(x != 0) y = 1;

if(x > 0) y = 1;

else y = 0;

-1 (x < 0) 1 (x < 0)

A)y = 0 (x = 0) B)y = -1 (x = 0)

1 (x > 0) 0 (x > 0)

0 (x < 0) -1 (x < 0)

C)y = 0 (x = 0) D)y = 1 (x = 0)

1 (x > 0) 0 (x > 0)

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

main()

{ int k = -3;

if(k <= 0)

printf(“****\n”),

else printf(“&&&&\n”);

}

A)**** B)&&&&

C)****&&&& D)有语法错误不能通过编译3.有如下程序

main()

{

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

switch(x)

{

case 0: b++;

case 1: a++;

case 2: a++;b++;

}

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

}

该程序的输出结果是

A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2 4.有以下程序

main()

{

int a=5, b=4, c=3, d=2;

if(a>b>c)

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

else if((c-1 >= d) == 1)

printf("%d\n",d+1);

else printf("%d\n",d+2);

}

执行后输出结果是

A) 2 B) 3 C) 编译时出错 D) 4

5.有以下程序

main()

{

int i=1,j=1,k=2;

if((j++||k++)&&i++)

printf("%d,%d,%d\n",i,j,k);

}

执行后输出结果是

A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 6.有如下程序

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("%f\n",y);}

该程序的输出结果是

A)0.000000 B)0.250000 C)0.500000 D)1.000000 7.若执行以下程序时从键盘上输入3和4,则输出结果是

main()

{

int a, b, s;

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

s = a;

if(a < b) s = b;

s *= s;

pritnf(“%d\n”, s);

}

A)14 B)16 C)18 D)20 8.假定所有变量均已正确定义,下面语句段执行后的x的值是

a =

b =

c = 0; x = 35;

if(!a) x--; else if(b) ; if(c) x = 3; else x = 4;

A)34 B)4 C)35 D)3 9.判断char型变量c是否为大写字母的C表达式是

A)?A?<=c<=?Z? B)(c>=?A?&(c<=?Z?)

C) (…A?<=c)AND(…Z?>=c) D)(c>=?A?)&&(c<=?Z?)

10.下列运算符中优先级最高的运算符是

A)!B)% C)-= D)&& 11.下列运算符中优先级最低的运算符是

A)|| B)!= C)<= D)+ 12.为表示关系x≥y≥z,应使用的C语言表达式是

A)(x>=y)&&(y>=z) B)(x>=y)AND(y>=z)

C)(x>=y>=z)D)(x>=y)&(y>=z) 13.设a、b和c都是int变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是A)a&&b B)a<=b

C)a||b+c&&b-c D)!((a

main()

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

if(a

if(b < 0) c = 0;

else c += 1;

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

}

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

二、填空题

1.请写出以下程序的输出结果。

main()

{ int a = 100;

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

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

}

2.将上题中的双分支if语句改写成条件表达式语句:

3.当a = 1、b = 2、c = 3时,以下if语句执行后,a、b、c中的值分别为:

、、。

if(a > c)

b = a; a = c;

c = b;

4.若变量已正确定义,以下语句段的输出结果是。

x = 0; y = 2; z = 3;

switch(x)

{ case 0: switch( y == 2)

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

case 2: printf(“%”); break;

}

case 1: switch( z )

{ case 1: printf(“$”);

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

default : printf(“#”);

}

}

5. 以下程序的输出结果是。

main()

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

if(a

else if(ok2)x=10;

else x=-1;

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

}

6.若从键盘输入58,则以下程序输出的结果是。

main()

{

int a;

scanf"%d",&a);

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

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

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

}

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

main()

{

int k=8;

switch(k)

{

case 9: k+=1;

case 10: k+=1;

case 11: k+=1; break;

default: k+=1;

}

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

}

8.阅读下面程序,程序执行后的输出结果是。

#include "stdio.h"

main()

{

int x,y,z;

x = 1; y = 2; z = 3;

if(x>y)

if(x>z)printf("%d",x);

else printf("%d",y);

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

}

9.C语言中用表示逻辑真,用表示逻辑假。

10.根据C语言运算符的优先顺序和结合性,按从先到后的顺序写出以下表达式中,运算符“+”、“>”、“*”、“&&”、“!=”、“||”、“!”和“/”的先后顺序:

、、、、、、、。

(a + b) > c * 2 && b != 5 || !(1 / 2)

11.若表达式(a + b) > c * 2 && b != 5 || !(1 / 2)中,a、b、c的定义和赋值为int a = 3, b = 4, c = 2;

则表达式的值为。

12.将下列数学式改写成C语言的关系表达式或逻辑表达式是A)B)。

A)a = b 或a < c B)| x | > 4

13.请写出与以下表达式等价的表达式是A) B) 。

A)!(x > 0) B)!0

第六章循环控制

一、选择题

1.以下不是死循环的语句是

A)for( ; ; x += i) ;

B)while(1) {x ++; }

C)for(i = 10; ; i++) sum += i;

D)for(; (c = getchar()) != …\n?; ) printf(“%c”, c);

2.下面程序的运行结果是

#include

main()

{

int y=10;

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

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

}

A)-1 B)1 C)8 D)0 3.以下程序段的输出结果是

int n = 10;

while(n > 7)

{ n--;

pritnf(“%d”, n);

}

A)1098 B)987 C)10987 D)9876 4.以下程序段的输出结果是

int x = 3;

do

{ printf(“%3d”, x -= 2);

} while(!(--x));

A) 1 B) 3 0 C) 1 -2 D)死循环5.以下程序的输出结果是

main()

{ int i, sum;

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

sum += i;

printf(“%d\n” sum);

}

A)15 B)16 C)不确定D)0 6.以下程序的输出结果是

main()

{ int y = 10

for(; y > 0; y --)

if(y % 3 == 0)

{ pritnf(“%d”, --y);

continue;

}

}

A)741 B)852 C)963 D)875421 7.有以下程序

main()

{ int i;

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

switch(i)

{ case 1: printf("%d", i);

case 2: printf("%d", i);

default : printf("%d", i);

}

}

执行后输出结果是

A) 011122 B) 012 C) 012020 D) 120

8.以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:

main()

{ int n,k;

float score,sum,ave;

sum=0.0;

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

{

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

{

scanf("%f",&score);

sum+=score;

}

ave=sum/4.0;

printf("NO%d:%f\n",n,ave);

}

}

上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是

A) sum=0.0; B) sum+=score;

C) ave=sum/4.0 D) printf("NO%d:%f\n",n,ave);

9.若x是int类型变量,以下程序段的输出结果是

for(x = 3; x < 6; x++)

printf( (x%2)?(“**%d”):(“##%d\n”),x);

A)**3 B)##3 C)##3 D)**3##4 ##4 **4 **4##5 **5

**5 ##5

10.以下程序的输出结果是

#include

main()

{

int i;

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

{

if(i % 2)

putchar(…

else

continue;

putchar(…>?);

}

putchar (…#?);

}

A)< > < > < > # B)> < > < > < # C)< > < > # D)> < > < # 11.以下叙述正确的是

A)do-while语句构成的循环不能用其它语句构成的循环来代替。

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

C)用do-while构成循环时,只有在while后的表达式为非零时结束循环

D)用do-while构成循环时,只有在while后的表达式为零时结束循环12.以下程序的输出结果是

A)39 81 B)42 84 C)26 68 D)28 70 main()

{ int x, i;

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

{ x = i;

if( ++x % 2 == 0)

if( ++x % 3 == 0 )

if( ++x % 7 == 0)

printf(“%d “, x);

}

printf(“\n”);

}

13.以下程序段的输出结果是

int k, j, s;

for(k = 2; k < 6; k++, k++)

{ s = 1;

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

s += j;

}

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

A)9 B)24 C)15 D)10 14.以下程序段的输出结果是

int i, j, m = 0;

for(i = 1; i <= 15; i += 4)

for(j = 3; j <= 19; j += 4)

m++;

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

A)12 B)15 C)20 D)25 15.下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。

#include

main()

{

int i=0,j,k;

do{i++;k=316-13*i;}while(______);

j=k/11;

printf("316=13*%d+11*%d",i,j);

}

A)k/11 B)k%11 C)k/11==0 D)k%11==0 16.在下述程序中,判断i > j共执行了多少次

#include

main()

{

int i = 0, j = 10, k = 2, s = 0;

for( ; ; )

{

i += k;

if(i > j)

{

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

break;

}

s += i;

}

}

A)4 B)7 C)6 D)8 二、填空题

1.执行以下程序后的输出结果是。

main()

{

int a, b, c, d, i, j, k;

a = 10;

b =

c =

d = 5; i = j = k = 0;

for( ; a > b; ++b)

i++;

while( a > ++c )

j++;

do

k++;

while(a > d++);

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

}

2.以下程序段的输出结果是。

int k, n, m;

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

while( k <= n )

m *= 2;

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

3.以下程序的输出结果是。

main()

{ int x = 2;

while ( x-- );

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

}

4.以下程序段的输出结果是。

int i = 0, sum = 1;

do

{ sum += i++;

} while( i < 5);

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

5.有以下程序段:

s = 1.0;

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

s = s + 1.0 / (k * (k + 1));

printf(“%f\n”, s);

请填空,使下面的程序段的功能完全与之等同。

s = 0.0;

;

k = 0;

do

{ s += d;

;

d = 1.0 / (k * (k + 1));

}while( );

printf(“%f\n”, s);

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

main()

{ float x, amax, amin;

scanf(“%f”, &x);

amax = x; amin = x;

while( )

{ if( x > amax ) amax = x;

if( ) amin = x;

scanf(“%f”, &x);

}

printf(“\namax = %f\naming = %f\n”, amax, amin);

}

7.若依次输入字符AB,在以下while语句执行后ch的值是。

while( ch = getchar() == …A?);

8.阅读下面程序,程序执行后的输出结果为。

#include "stdio.h"

main()

{

char a,b;

for(a=′0′,b=′9′;a

printf("%c%c",a,b);

printf("\n");

}

9.阅读下面程序,则执行后程序的结果为。

#include "stdio.h"

main()

{

int a=0,b=0;

while(a<15)

a++;

while(b++<15);

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

}

10.下列程序的功能是输入一个整数,判断其是否是素数,若为素数输出1,否则输出0.请填空。

main()

{ int i, x, y=1;

scanf("%d", &x);

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

if { y=0; break;}

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

}

答案

第一、二章C语言概述与算法

一、选择题

1-5:BBBAB

二、填空题

1.顺序结构、选择结构、循环结构

2.自顶向下和逐步求精

3.函数,函数首部和函数体

4.主函数,任何

5.注释,提高程序的可读性

6.自然语言、流程图、N-S图、伪代码和计算机语言

第三章数据类型、运算符与表达式

一、选择题

1-5: BCBDB 6-10: ACABB 11-15: CDDBC 16-20: BBACC 21-27: DCBDADB

二、填空题

1. 11 , 12

2. 4.2 , 4.2

3. { , }

4.说明语句,执行语句

5. int , float , double

6. flaot a1 = 1.0, a2 = 1.0;

7.存储单元

8. 3.5

9. a/(b*c) 、 a/b/c 、 a/c/b

10.将10赋给变量s

11.位, 0和1

12. 8 , 255 , 1111 1111 , -128 , 1000 0000 13. 65535 、 -32768 、 1111 1111 1111 1111 、 1000 0000 0000 0000

14. 16