文档库

最新最全的文档下载
当前位置:文档库 > 《C语言程序设计教程》补充习题

《C语言程序设计教程》补充习题

《C语言程序设计教程》补充习题

第1章C语言概述

一、选择题

1.机器语言属于( )。

A.低级语言B.高级语言

C.面向问题的语言D.汇编语言

2.下列语言中不属于面向问题的语言是( )。

A.高级语言B.低级语言

C.C语言D.BASIC语言

3.高级语言编写的程序称为( )。

A.高级程序B.源程序

C.目的程序D.目标程序

4.用C语言编写的源文件经过编译,若没有产生编译错误,则系统将( )。

A.生成可执行目标文件B.生成目标文件

C.输出运行结果D.自动保存源文件

5.在Turbo C/C++3.0集成环境下执行菜单命令“运行”,若运行结束且没有系统提示信息,说明( )。

A.源程序有语法错误B.源程序正确无误

C.源程序有运行错误D.源程序无编译、运行错误,但仅此无法确定其正确性

6.下列不正确的转义字符是( )。

A.\\ B.\'

C.074 D.\0

7.下列正确的转义字符是( )。

A.\777 B.\821

C.\xhh D.\xff

8.下列正确的标识符是( )。

A.3a B.a=2

C.A-3 D.a_3

9.下列不正确的标识符是( )。

A._al B.a[i]

C.a2_i D.in

10.下列说法中正确的是( )。

A.由于C源程序是高级语言程序,因此一定要在TC软件中输入

B.由于C源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入

C.由于C程序是高级语言程序,因此输入后即可执行

D.由于C程序是高级语言程序,因此它由命令组成

11.下列说法中正确的是( )。

A.C语言程序由主函数和0个或多个函数组成

B.C语言程序由主程序和子程序组成

C.C语言程序由子程序组成

D.C语言程序由过程组成

12.下列说法中错误的是( )。

A.主函数可以分为两个部分:主函数说明部分和主函数体

B.主函数可以调用任何非主函数的其他函数

C.任何非主函数可以调用其他任何非主函数

D.程序可以从任何非主函数开始执行

二、填空题

1.汇编语言属于面向语言,高级语言属于面向语言。

2.在C语言程序中允许出现的字符集是。

3.转义字符是由符号开始的单个字符或若干个字符组成的。

4.C语言的程序中有特殊含义的英语单词称为。

5.标识符一般由组成,以开头。

6.C语言中,标识符的定义规则是。

7.C语言的语句主要分为语句、语句、语句、语句、语句、语句、语句和语句等8类。

8.C程序是由函数构成的。其中有并且只能有个主函数。C语言程序的执行总是由函数开始,并且在函数中结束。

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

10.用高级语言编写的程序称为程序,它可以通过程序,翻译一句执行一句的方式执行;也可以通过程序,一次翻译产生程序,然后执行。

第2章基本数据类型及其运算

一、选择题

1.下列数据中属于字符串常量的是()。

A."aaa" B.(ABC)

C.'abc\0' D.'a'

2.PC机中,'\t'在内存占用的字节数是()。

A.1 B.2

C.3 D.4

3.在PC机中,"a\xff" 在内存占用的字节数是()。

A.5 B.6

C.3 D.4

4.字符串"ABC"在内存占用的字节数是()。

A.3 B.4

C.6 D.8

5.字符串" \'ABCD\' "在内存占用的字节数是()。

A.4 B.6

C.7 D.8

6.在C语言中,合法的长整型常数是()。

A.0L B.4962710

C.0.054838743 D.2.1869e10

7.在C语言中,合法的短整型常数的末尾加( )。

A.L B.x

C.l D.s

8.下列数据中不属于字符常量的是( )。

A.'\xff' B.'\160'

C.'070' D.070

9.char型常量在内存中存放的是( )。

A.ASCII代码值B.BCD代码值

C.内码值D.十进制代码值

10.若int类型数据字长为2个字节,其最大值为( )。

A. 231

B. 215-1

C. 232-1

D. 232

11.常数的书写格式决定了常数的类型和值,03322是( )。

A.16进制int类型常数B.8进制int类型常数

C.10进制int类型常数D.10进制long类型常数

12."1.0e2"是( )。

A.实型常数100 B.值为100的整型常数

C.非法标识符D.合法标识符

13.要为字符型变量a赋初值,下列语句中哪一个是正确的( )。

A. char a='3';

B. char a="3";

C. char a=%;

D. char a=*;

14.下列说明语句中可以实现为float类型变量x,y,z赋同一初值3.14的是( )。A. float x,y,z=3.14; B. float x,y,z=3*3.14;

C. float x=3.14,y=3.14,z=3.14;

D. float x=y=z=3.14;

15.语句float pi=3.1415926535;将( )。

A. 导致编译错误

B. 说明pi为初值3.1415926535的单精度实型变量

C. 导致运行时的溢出错误

D. 说明pi为初值3.141593的单精度实型变量

16.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为( )。

A. 算术运算、赋值运算、关系运算

B. 算术运算、关系运算、赋值运算

C. 关系运算、赋值运算、算术运算

D. 关系运算、算术运算、赋值运算17.关系运算符中优先级最低的运算符是( )。

A.“>=”和“<=”B.“>”和“<”

C.“==”和“!=”D.“<=”和“<”

18.逻辑运算符中,运算优先级按从高到低依次为( )。

A.&&,!,|| B.||,&&,!

C.&&,||,! D.!,&&,||

19.C程序在作逻辑运算时,如何判断操作数的真、假( )。

A.0为假非0为真B.只有1为真

C.-1为假1为真D.0为真非0为假

20.表达式x&&1等效于( )。

A.x==0 B.x==1

C.x!=0 D.x!=1

21.表达式x==0&&y!=0||x!=0&&y==0等效于( )。

A.x*y==0&&x+y!=0 B.x*y==0&&(x+y==0)

C.x==0||y==0 D.x*y=0||x+y=0

22.表达式!x||a==b等效于( )。

A.!((x||a)==b) B.!(x||y)==b

C.!(x||(a==b)) D.(!x)||(a==b)

23.设整型变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m,n的值是( )。A.0,0 B.0,1

C.1,0 D.1,1

24.设整型变量m,n,a,b,c,d均为1,执行(m=a>b)&&(n=c>d)后, m,n的值是( )。A.0,0 B.0,1

C.1,0 D.1,1

25.设a为2,执行下列语句后,b的值不为0.5的是( )。

A.b=1.0/a B.b=(float)(1/a)

C.b=1/(float)a D.b=1/(a*1.0)

26.设a为5,执行下列语句后,b的值不为2的是( )。

A.b= a/2 B.b=6-(--a)

C.b= a%2 D.b= a>3?2:2

27.执行语句“x=(a=3,b=a--)”后,x,a,b的值依次为( )。

A.3,3,2 B.3,2,2

C.3,2,3 D.2,3,2

28.int b=0,x=1;执行语句if(x++) b=x+1; 后,x,b的值依次为( )。

A.2,3 B.2,0

C.3,0 D.3,2

29.设有语句int a=3;,则执行了语句a+=a-=a*a; 后,变量a的值是( )。

A.3 B.0

C.9 D.-12

30.设有语句int a=3;,则执行了语句a+=a-=a*=a; 后,变量a的值是( )。

A.3 B.0

C.9 D.-12

31.设有语句int a=4, b=3, c= -2, d=2;则逻辑表达式a>0&&b&&c<0&&d>0的值是( )。A.1 B.0

C.-1 D.出错

32.在以下一组运算符中,优先级最高的运算符是( )。

A.<= B.=

C.% D.&&

33.设整型变量i值为2,表达式(++i)+(++i)+(++i)的值是( )。

A.6 B.12

C.15 D.表达式出错

34.设整型变量i,j的值均为3,执行了j=i++;j++;++i;后,i,j的值分别是( )。

A.3,3 B.5,4

C.4,5 D.6,6

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

A.1 B.2

C.2.0 D.2.5

36.sizeof (double)的结果值是( )。

A.8 B.4

C.2 D.出错

37.表达式1?(!1?3:2 ):(0?1:0)的值是( )。

A.3 B.2

C.1 D.0

38.设a=1,b=2,c=3,d=4,则表达式:a

A.4 B.3

C.2 D.1

39.设a为整型变量,不能正确表达数学关系:10

A.10

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

40.执行语句int a=0; if(a=1) a+=10; 后,a的值是( )。

A.0 B.11

C.10 D.出错

41.下列表达式中符合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

42.设f是实型变量,下列表达式中不是逗号表达式的是( )。

A.f= 3.2, 1.0 B.f>0, f<10

C.f=2.0, f>0 D.f=(3.2, 1.0)

43.下列表达式中,不正确的表达式是( )。

A.a=1,b=1 B.y=int(x)

C.a+b=5 D.i++

44.int n; float f=13.8; 执行n=((int)f)%3 后, n的值是( )。

A.1 B.4

C.4.333333 D.4.6

45.设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

46.设x,t均为int型变量,则执行以下语句后,t的值为( )。

x=10;t=x&&x>10;

A.不定值B.10

C.1 D.0

47.设x,y,z,t均为int型变量,则执行以下语句后,t的值为( )。

x=y=z=1;t=++x‖++y&&++z;

A.不定值B.2

C.1 D.0

48.设a是char型变量,其字符值为'1',则把其值变成整数1的表达式是( )。A.(int)a B.int(a)

C.a= a-48 D.a / (int)a

49.设a是int型变量,其值为3,则把其值变成字符'3' 的表达式是( )。

A.(char)a B.a=3

C.a= a-48 D.a= a+48

50.设ch是char型变量,其值为'a',则下面表达式的值是( )。

ch=(ch>='A'&& ch<='Z')? (ch+32):ch

A.'A' B.'a'

C.'Z' D.'z'

二、填空题

1.在内存中存储"W"要占用个字节,存储'W'要占用个字节。

2.C语言中的逻辑值“真”是用表示的,逻辑值“假”是用表示的。

3.逻辑表达式值为“真”是用表示的,逻辑表达式值为“假”是用表示的。

4.符号常量的定义方法是。

5.说明变量时,若省略存储类型符,系统默认其为存储类别,该存储类别的类型符为。

6.无符号基本整型的数据类型符为,双精度实型数据类型符为,字符型数据类型符为。

7.定义变量的完整语句格式是。

8.设有下列运算符:<<、+、++、&&、<=,则其中优先级最高的是,优先级最低的是。

9.设二进制数A是00101101,若想通过异或运算A∧B使A的高4位取反,低4位不变,则二进制数B应是。

10.设a=3;b=2;c=1;,则a>b的值为。

11.若已知a=10;b=20;,则表达式!a

12.设c='w';a=1;b=2;d=-5;, 则表达式'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==(a=2)的值分别为、、、。

13.设x和y均为int型变量,且x=1;y=2;,则表达式1.0+x/y的值为。

14.若已知short int s=10; int i=25; float f=0.5;,则表达式f+s*i的值为。

15.设float x=2.5,y=4.7; int a=7;,表达式x+a%3*(int)(x+y)%2/4 的值为。

16.int x=17;y=5; 执行语句x+=--x%--y后x的值为。

17.int x=17;y=5; 执行语句x%=x--/--y后x的值为。

18.ch是字符变量,判断ch是英文字母的逻辑表达式为。

19.判断int类型变量n是否为两位整数的逻辑表达式为。

20.判断变量a、b的值均不为0的逻辑表达式为。

21.判断变量a、b是否绝对值相等而符号相反的逻辑表达式为。

22.变量a、b中必有且只有一个为0的逻辑表达式为。

23.m是值为两位数的整型变量,判断其个位数是奇数而十位数是偶数的逻辑表达式为。

24.执行语句a=5+(c=6);后,表达式、a、c的值依次为、、。

25.执行语句a=(b=10)%(c=6);后,表达式、a、b、c的值依次为、、、。

26.执行语句x=a=3,6*a;后,表达式、x、a的值依次为、、。

27.求解逗号表达式(a=15,a*4),a+5,表达式、a的值依次为、。

28.求变量a、b中最大值的条件表达式为。

29.执行语句a=13;b=25;c= -17;后,条件表达式((y=(a

30.若s='d';,则执行语句s=(s>='a'&&s<='z')?s-32:s;后,字符变量s的值为。

31.int a=7;b=6;c=5;,表达式(a+b)>(c*c)&&b==c||c>b 的值为。

32.int a=3;b=5;c=7;,表达式a>c||c>b!=0&&c==b+a 的值为。

33.设整型变量x,y,z均为5:

①执行x- = y - z;后,x= ,

②执行x %= y+z;后,x= ,

③执行x=(y>z)? x+2:x-2,3,2后,x= 。

34.正确表达关系式(20

三、计算题

1.计算下列表达式的值。

①3&6 ②-12&7 ③3|9 ④-02|12

⑤(x=13)^9 ⑥15/2^1 ⑦~-14 ⑧~15/3

⑨7<<2 ⑩-9<<2

2.若有short a,b;分别写出执行下列语句后a、b 的值。

①a=2;b=7;a&b; ②a=-3;b=a|4;

③a=5;b=a<<2; ④a=-15;b=~a>>2

四、程序设计与分析题

1.输入一个整数,并输出该数的机内码,用十六进制数表示。

2.输入一个整数,将其低八位全置为1,高八位保留原样,并以十六进制输出该数。

3.输入一个字符串,删除字符串中的所有非汉字,并输出该字符串。

4.输入一个球半径值,求球的表面积和体积。

5.写出下面程序的运行结果。

#include

main()

{double a;

a=123456789.123456789;

printf("\n%f,%e",a,a);

}

6.写出下面程序的运行结果。

#include

void main()

{int a=2,b=2,x,y;

x=--a+2;

y=b--+2;

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

}

7.分析下面程序的运行结果。

#include

void main()

{int x=4,y;

y=--x+--x+x++;

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

}

8.分析下面程序的运行结果。

#include

void main()

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

float e;

d=-a*b/c+1.5+'a';

e=-a*b/c+1.5+'a';

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

printf("\ne=%f",e);

}

9.分析下面程序的运行结果。#include

void main()

{int i=2,j;

j=i+++i+++i++;

printf("\ni=%d ",i);

printf("\nj=%d",j);

}

10.分析下面程序的运行结果。#include

void main()

{int i=2,j;

j=(++i)+(++ i)+(++i);

printf("\ni=%d",i);

printf("\nj=%d",j);

}

11.分析下面程序的运行结果。#include

void main()

{int i=0;

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

}

12.分析下面程序的运行结果。#include

void main()

{int i=8;

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

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

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

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

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

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

}

13.分析下面程序的运行结果。#include

void main()

{int a,b,c;

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

a=b!=c; // 第5行

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

a==(b=c++*3); // 第7行

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

a=b>c>2; // 第9行

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

}

14.根据下列条件,写出C的逻辑表达式。

(1)条件“长度分别为a、b、c的三条线段能够组成三角形”。

(2)条件“|x|是一个两位数”。

(3)条件“y年是闰年”。

(4)条件“x、y 落在圆心在(0,0)半径为1的圆外、中心点在(0,0)边长为2的矩形内”。15.分析下面程序的运行结果。

#include "stdio.h"

void main()

{int x,y,z,m;

x=y=z=-1 ;

m=++x&&++y|| ++z;

printf("m=%d x=%d y=%d z=%d", m,x,y,z);

}

16.分析下面程序的运行结果。

#include "stdio.h"

void main()

{int a,b,c,x=10,y=9;

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

b=x++;

c=y;

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

}

17.分析下面程序的运行结果。

#include "stdio.h"

void main()

{int a=3,b=4,c;

c=a>b?++a:++b;

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

c=a-b?a-3?b:b-a:a;

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

}

18.使用条件表达式。

(1)求三个变量a、b、c中的最大值。

(2)字符变量ch若为小写字母则改为大写字母,其余字符不变。

(3)输出整型变量x的绝对值。

19.分析以下程序的输出结果。

#include

void main()

{short x,y;

x=5; y=x<<2;

printf("%hd, %hd\n",x,y);

x=-12; y=x<<2;

printf("%hd, %hd\n",x,y);

}

第3章基本控制结构

一、选择题

1.C程序的分支结构可以分为( )种。

A.1 B.2

C.3 D.无数

2.下列格式符中,哪一个可以用于以八进制形式输出整数( )。

A.%d B.%8d

C.%o D.%ld

3.下列格式符中,哪一个可以用于以十六进制形式输出整数( )。

A.%16d B.%8d

C.%o D.%x

4.a是int型变量,c是字符型变量,下列输入语句中哪一个是错误的( )。

A.scanf("%d,%c",&a,&c); B.scanf("%d%c",a,c);

C.scanf("%d%c",&a,&c); D.scanf("d=%d,c=%c",&a,&c);

5.设字符变量ch='A',int型变量k=25,则执行语句printf("%3d,%d3\n",ch,k);后,屏幕输出( )。

A.65,253 B.65 253

C.65,25 D.A 25

6.设int a=1234,b=12,c=34;,则执行语句printf("|%3d%3d%-3d|\n", a,b,c); 后,屏幕的输出是( )。

A.|1234 1234 | B.|123 1234|

C.|1234 12-34 | D.|234 1234|

7.使用scanf("x=%f,y=%f ",&x,&y); 要使x, y均为1.25, 正确的输入是( )。

A.1.25, 1.25 B.1.25 1.25

C.x=1.25, y=1.25 D.x=1.25 y=1.25

8.要使double x; long a; 获得数据,正确的输入语句是( )。

A.scanf("%d, %f ",&a,&x); B.scanf("%f, %1d",&x,&a);

C.scanf("%ld, %1f ",&a,&x); D.scanf("%1d, %1f",a, x);

9.要使double x; long a; 的数据能正确的输出,输出语句应是( )。

A.printf("%d, %f",a, x); B.printf("%d, %1f",a, x);

C.scanf("%1d, %1f",&a, &x); D.printf("%1d, %lf",a, x);

10.设int a=255,b=8;,则执行语句printf("%x,%o\n", a, b);后,屏幕输出的是( )。

A.255, 8 B.ff, 10

C.0xff, 010 D.输出格式错

11.设int i=010,j=10;,则执行语句printf("%d,%d\n",++i, j--);后,屏幕的输出的是( )。

A.11,10 B.9,10

C.010,9 D.10,9

12.设a、b为字符型变量,执行scanf("a=%c,b=%c",&a, &b);后,要使a为'A', b为'B',从键盘上的正确输入应是( )。

A.'A' 'B' B.'A','B'

C.A=A,B=B D.a=A,b=B

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

int a=0,y=10;

if(a=0) y--;else if(a>0) y++; else y+=y;

A.20 B.11

C.9 D.0

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

int 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

15.下列各语句序列中,能够且仅输出整型变量a、b中最大值的是( )。

A.if(a>b) printf("%d\n",a); printf("%d\n",b);

B.printf("%d\n",b); if(a>b) printf("%d\n",a);

C.if(a>b) printf("%d\n",a); else printf("%d\n",b);

D.if(a

16.下列各语句序列中,能够将变量u、s中最大值赋值到变量t中的是( )。

A.if(u>s)t=u; t=s; B.t=s; if(u>s)t=u;

C.if(u>s)t=s; else t=u; D.t=u; if(u>s)t=s;

17.下列各语句中,能够输出整型变量a、b中最大值的是( )。

A.printf("%d\n",(a>b)?a,b);

B.(a>b)? printf("%d",b):printf("%d",a);

C.printf("%d",if(a>b)a else b);

D.printf("%d\n",(a>b)?a:b);

18.下列语句应将小写字母转换为大写字母,其中正确的是( )。

A.if(ch>='a'&ch<='z') ch=ch-32;

B.if(ch>='a'&&ch<='z')ch=ch+32;

C.ch=(ch>='a'&&ch<='z')?ch-32:’’;

D.ch=(ch>'a'&&ch<'z')?ch-32:ch;

19.int a=1, x=1; 循环语句while(a<10) x++; a++; 的循环执行了( )。

A.无限次B.不确定次

C.10次D.9次

20.下列语句中,错误的是( )。

A.while(x=y) 5; B.do x++ while(x==10);

C.while(0) ; D.do 2;while(a==b);

21.循环语句for(x=0, y=0; (y! =123)| | (x<4); x++); 的循环体执行了( )。

A.无限次B.不确定次

C.4次D.3次

22.循环语句for(i=0, x=1; i=10 && x>0; i++); 的循环体执行了( )。A.无限次B.不确定次

C.10次D.9次

23.i、j 已定义为int类型,则以下程序段中内循环体的执行次数是( )。for(i=5;i;i--)

for(j=0;j<4;j++){…}

A.20 B.24

C.25 D.30

24.C语言while语句中,用于条件的表达式是( )。

A.关系表达式B.逻辑表达式

C.算术表达式D.任意表达式

25.下面的while循环,执行次数是( )。

i=4; while(--i) printf("%d",i);

A.3次B.4次

C.0次D.无数次

26.下列程序段执行后s的值为( )。

int i=1, s=0; while(i++) if(!(i%3)) break ; else s+=i ;

A.2 B.3

C.6 D.以上均不是

27.下列程序的输出结果是( )。

#include

void main( )

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

while(x++!=(y-=1)){ z++; if(y

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

}

A.x=4,y=4,z=1 B.x=5,y=4,z=3

C.x=5,y=4,z=1 D.x=5,y=5,z=1

28.int i=1,s=0;

while (i<100) {s+=i++;if (i>100 ) break;}

执行以上程序段后,s的值是( )。

A.1到101的和B.1到100的和

C.1到99的和D.以上均不是

29.假定i和j为int型变量,则执行以下语句后i的值为( )。

int i=1,j;

switch (i++)

{case 1: for (j=0;j<9;j++) if (i==1) break;

case 2: for (j=1;j<10;j++) if (i==2) break;

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

}

A.0 B.1

C.2 D.3

30.假定a和b为int型变量,则执行以下语句后b的值为( )。

a=1;b=10;

do { b-=a;a++;}

while (b--<0);

A.9 B.8

C.-1 D.-3

31.设x和y均为int型变量,则执行下面的循环后,x,y的值分别为( )。

for (y=1,x=1;y<=50;y++)

{if (x>=10 ) break;

if (x%2==1) {x+=5;continue;

}

x-=3;

}

A.10,6 B.2,51

C.2,50 D.3,50

32.求整数1至10的和并存入变量s,下列语句中错误的是( )。

A.s=0;for(i=1;i<=10;i++) s+=i; B.s=0;i=1;for(;i<=10;i++) s=s+i;

C.for(i=1,s=0;i<=10;s+=i,i=i+1) D.for(i=1;s=0;i<=10;i++) s=s+i;

33.若sizeof(int)为2,计算1至10的乘积,下列语句序列中正确的是( )。

A.int i,jc=1; for(i=2;i<=10;i++) jc*=i;

B.int i;float jc; for(jc=1,i=2;i<=10;i++,jc*=i);

C.int i; float jc=1; for(i=2;i<=10;jc*=i,i=i+1);

D.float jc; for(jc=1;i=2;i<=10;i++) jc*=i;

34.下列语句中,哪一个可以输出26个大写英文字母( )。

A.for(a='A';a<='Z';printf("%c",++a));

B.for(a='A';a<'Z';a++)printf("%c",a);

C.for(a='A';a<='Z';printf("%c",a++));

D.for(a='A';a<'Z';printf("%c",++a));

35.在C语言中,下列说法中正确的是( )。

A.不能使用“do语句while(条件);”的循环

B.“do语句while(条件);”的循环必须使用“break”语句退出循环

C.“do语句while(条件);”的循环中,当条件为非0时将结束循环

D.“do语句while(条件);”的循环中,当条件为0时将结束循环

二、填空题

1.结构化程序设计规定的三种基本结构是结构、结构和结构。

2.若有定义语句int a=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);

3.以下两条if语句可合并成一条if语句。

if(a<=b) x=1;

else y=2;

if(a>b) printf("***y=%d\n",y);

else prinft("***x=%d\n",x);

4.下列程序的功能是输入一个正整数,判断是否能被3或7整除,若能整除,输出

“YES”,若不能整除,输出“NO”。请为程序填空。

void main()

{

int k;

scanf ("%d", &k);

if printf("YES\n");

else printf ("NO\n");

}

5.三种循环语句是价的。

6.当循环体中的switch语句内有break语句,则只跳出语句。同样,当switch语句中有循环语句,内有break语句,则只跳出语句。

7.循环体中的continue 语句是。

8.若int k=10, 循环语句while (k=0) k=k-1; 执行次。

9.若int k=2, 循环语句while (k!=0) { printf("%d",k); k--; } 执行次。

10.若int i=10,s=0;,执行语句while(s+=i--,--i);后s、i的值分别为。

11.程序段int s,i; for(i=1;i<=100;s+=i,i++); 能否计算1~100的和? ,原

因。

12.若int类型变量字长为2,程序段int i,jc=1; for(i=2;i<10;i++)jc*=i; 能否计算1~10的阶乘? ,原因是。

13.设i, j, k均为int型变量,则执行完下面的for循环后,k的值为。

for(i=0,j=10; i<=j; i++,j--) k=i+j;

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

void main( )

{int i, x, y=1;

scanf("%d", &x);

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

if { y=0; break; }

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

}

15.输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。

#include

void main( )

{char ch;

int s1=0,s2=0;

while( !='\n')

{

if(ch>='0'&&ch<='9') s1++;

if(ch>='a'&&ch<='z' || ch>='A'&&ch<='Z') s2++;

}

}

三、程序分析题

1.阅读程序,写出运行结果。

void main ()

{int a=10,b=4,c=3;

if(a

if(a

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

}

2.阅读下列程序,写出程序的输出结果。void main ( )

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

if(a

if(b!=15)

if(!ok1) x=1;

else if(ok2) x=10;

else x=-1;

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

}

3.阅读下列程序,写出下列程序的输出结果。void main( )

{int k,a=1,b=2;

k=(a++==b)?2:3;

printf("%d",k);}

4.阅读下列程序,写出程序运行的输出结果。void main( )

{int y=9;

for( ;y>0; y--)

if(y%3==0) { printf("%d", --y); continue;}

}

5.阅读下列程序,写出程序运行的输出结果。void main ( )

{int i=5;

do

{

switch (i%2)

{

case 4: i--; break;

case 6: i--; continue;

}

i--; i--;

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

} while(i>0);

}

6.阅读下列程序,写出程序运行的输出结果。#include

void 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; break;

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

default: k=k/3;

}

k++;

}

while(c<'G');

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

}

7.阅读下列程序,当输入为:ab*AB%cd#CD$ 时,写出程序运行的输出结果。void main ( )

{char c;

while((c=getchar( ))!='$')

{if('A'<=c && c<'Z') putchar(c);

else if('a'<=c && c<='z') putchar(c-32);

}

}

8.阅读下列程序,输入数据:2,4 写出程序运行的输出结果。

#include

void main( )

{int i,s=1,t=1,a,n;

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

for(i=1;i

{t=t*10+1; s=s+t;

}

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

}

9.阅读下列程序,写出程序运行的输出结果。

#include

void main( )

{int i,j,n;

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

{for(j=1;j<=i;j++) printf(" ");

n=7-2*i;

for(j=1;j<=n;j++) printf("%1d",n);

printf("\n");

}

}

第4章数组

一、选择题

1.在C语言中,在int num[5]={10,20,30,40,50}中,num[3]的值是( )。

A.20 B.50

C.40 D.10

2.若int a[10];,则下列( )可以正确引用a数组的元素。

A.a [10] B.a[3+1]

C.a(5) D.a[11]

3.若int num[10];,要将10赋值到数组num的第4个元素,正确的方法是( )。

A.num[3]=10; B.Num[3]=10;

C.num[4]=10; D.Num[4]=10;

4.在C语言中,若要定义一个数组用于保存5个参赛者,参加4个不同项目的比赛成绩,是应是( )。

A.score[6][5] B.score[4][3]

C.score[5][4] D.score[5]

5.执行下面的C代码段后,屏幕输出结果是( ) 。

char str1[15] = "She is a girl";

char str2[15] = "He is a boy";

strcpy(str1,str2);

printf("%s\n",str1);

A.She is a girl B.He is a boy

C.She is a girl He is a boy D.He is a boy She is a girl

6.以下对二维数组a进行初始化,不正确的是( )。

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

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

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

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

7.下列描述中不正确的是( )。

A.字符型数组中可以存放字符串

B.可以对字符型数组进行整体输入、输出

C.可以对整型数组进行整体输入、输出

D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值

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

#include

#include

void main( )

{char b[30];

strcpy (&b[0],"AB");

strcpy (&b[1],"CDE");

strcpy (&b[2],"FGH");

printf ("%s\n",b);

}

A.CFGH B.ACFGH

C.ABCDEFGH D.FGH

9.假定int类型变量占用2个字节,若有定义:int x[8]={1,2,3};,则数组x在内存中所占字节数是( ) 。

A.3 B.6

C.10 D.16

10.若char x[ ]="abcd";

char y[ ]={'a','b','c','d'};

则正确的叙述为( )。

A.数组x和数组y长度相等B.数组x的长度小于数组y的长度

C.数组x的长度大于数组y的长度D.以上都不对

11.以下程序执行后的输出结果是( )。

#include

void main()

{int i,test ,p[17],head;

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

p[i]=i+1;

p[16]=0;

test=0;

while(test!=p[test])

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

{head=test;

test=p[test];

}

p[head]=p[test];

test=p[head];

}

p rintf("\n%5d",test);

}

A.1,2,3 B.2,3,4

C.10 D.4

12.有以下程序

#include

void main()

{ int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;

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

{ for(j=0;j<=i;j++) printf("%4c",' ');

for(j=_____;j<4;j++) printf("%4d",num[i][j]);

printf("\n");

}

}

若要按以下形式输出数组右上半三角

1 2 3 4

6 7 8

11 12

16

则在程序下划线处应填入的是( )。

A.i-1 B.i

C.i+1 D.4-i

13.若有定义语句:int b;char c[10];,则下列正确的输入语句是( )。

A.scanf("%d%s",&b,&c); B.scanf("%d%s",&b,c);

C.scanf("%d%s",b,c); D.scanf("%d%s",b,&c); 14.若定义:int a[100];,则下列数组元素的引用中,非法的是( )。

A.a[0] B.a[1]

C.a[99] D.a[100]

15.有以下程序

main()

{ char a[7]="a0\0a0\0";

int i,j;

i=sizeof(a); j=strlen(a);

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

}

程序运行后的输出结果是( )。

A.2 2 B.7 6

C.7 2 D.6 2

16.有以下程序

#define N 20

fun(int a[],int n,int m)

{ int i,j;

for(i=m;i>=n;i--)

a[i+1]=a[i];

}

main()

{

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

fun(a,2,9);

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

printf("%d",a[i]);

}

程序运行后的输出结果是( )。

A.10234 B.12344

C.12334 D.12234

17.有以下程序

main()

{ char str[][10]={"abcd","rste","rbsa","uxhk","xvy","rlby","ccvn"};

int n=0,i;