admin 管理员组

文章数量: 887021


2023年12月16日发(作者:c语言中eof)

C语言练习题集(答案解析)

福建省高等学校计算机等级考试(二级

C 语言)选择题试题库

答案 试题

1. 在 C 语言源程序中,以下表达正确的选项是(

A. main

函数一定位于文件的开头

C B. 每行只好写一条语句

C. 程序中的一个语句能够写成多行

D. 每个语句的最后一定有点号

)。

2. 对于 C 语言的源程序的表达中,错误的选项是(

A. C 语言的源程序由函数构成

C B. main 函数能够书写在自定义函数以后

C. 一定包含有输入语句

D. 一行能够书写多个语句

3. 对于 C 语言数据种类的表达,正确的选项是(

A. 列举种类不是基本种类

C B. 数组不是结构种类

C. 变量一定先定义后使用

D. 不同意使用空种类

4. C 程序中 main 函数的地点( )。

A. 一定在最开始

C B. 一定在系统库函数后边

C. 能够在自定义函数后边

D. 一定在最后

)。

)。

C语言练习题集(答案解析)

5. C 语言的函数体由( )括起来。

A.()

B B. {}

C. [ ]

D. /* */

6. 对于 C 语言的表达中,不正确的选项是(

)。

A. C 程序可由一个或多个函数构成

D

B. C 程序一定包含一个 main() 函数

C. C 程序的基本构成单位是函数

D. 说明说明只好位于一条语句的后边

7. 以下表达不正确的选项是(

A. C 程序的履行老是从

D

)。

main

函数开始

main

函数

B. 一个 C 源程序一定包含一个

C. C 语言程序的基本构成单位是函数

D. 在编译 C 程序源程序时,可发现说明中的拼写错误

8. 结构化程序设计的三种基本结构是(

A. 函数结构、分支结构、判断结构

C B. 函数结构、嵌套结构、平行结构

C. 次序结构、分支结构、循环结构

D. 分支结构、循环结构、嵌套结构

9. 对于 C 语言源程序,以下表达错误的选项是(

C

A. 能够有空语句

)。

)。

C语言练习题集(答案解析)

B. 函数之间是同等的,在一个函数内部不可以定义其余函数

C. 程序调试时假如没有提示错误,就能获得正确结果

D. 说明能够出此刻语句的前方

10.

下边对于

选项是(

C 语言用户表记符的描绘,正确的)。

A. 不划分大小写

D B. 用户表记符不可以描绘常量

C. 种类名也是用户表记符

D. 用户表记符能够作为变量名

11. 以下( )是正确的变量名。

D B. if

C.

D. _f5

12. 以下( )是正确的常量。

A. E-5

DB. 1E5.1 C.

'a12' D.

32766L

13. 以下( )是正确的变量名。

D

B. -p11

C. int

C语言练习题集(答案解析)

D. p_11

14. 以下( )是正确的字符常量。 单引号括起来

A. "c"

C B. '''

C. 'W'

D. "32a"

15. 以下( )是不正确的字符串常量。 双引号括起来

A. 'abc'

AB. "12'12"

C. "0"

D. " "

16. 以下( )是错误的整型常量。

A. -0xcdf

B

B. 018

C. 0xe

D. 011

// 八进制数不可以超出

8

17. 以下( )是正确的浮点数。

A. e3

B B. .62

C.

D. 123

A

18.

如有说明语句:

char c='95';

则变量 c 包含(

)个字符。

//e

前方一定有数字,指数一定为整数

C语言练习题集(答案解析)

A. 1

B. 2

C. 3

ddd :

表示 1 到 3 位八进制数所代表的字符

xhh

表示

1 到 2 位十六进制数所代表的字符

D. 语法错误

19.

如有定义: int a=2; 则正确的赋值表达式是(

A. a-=(a*3)

A

B. double(-a)

C. a*3

D. a*4=3

20.

语句 x=(a=3,b=++a);

A. 3,3,4

CB. 4,4,3

C. 4,4,4

D. 3,4,3

21. 语句 a=(3/4)+3%2;

A. 0

B

)。

//(double)(-a)

运转后, x、 a、 b 的值挨次为(

)。

// 逗号运算符及逗号表达式

运转后, a 的值为(

)。

B. 1// 注意除号 / 两边均为整型时,结果为整数(不含小数点)

C. 2

D. 3

22. char 型变量寄存的是( )。// 考察变量种类

A

A. ASCII 代码值

B. 字符自己

C语言练习题集(答案解析)

C. 十进制代码值

D. 十六进制代码值

23.

如有定义: int x,a;则语句 x=(a=3,a+1); 运转后, x、a 的值挨次为(

A. 3,3

C B. 4,4

C. 4,3

D. 3,4

24. 如有定义: int a; 则语句 a=(3 * 4)+ 2 % 3;运转后, a 的值为( )。

A. 12

B B. 14

C. 11

D. 17

// 考察逗号表达式及逗号运算符

)。

25. 如有定义: int

a,b; double

A. x%(-3)

B. a+=-2

C. a=b=2

D. x=a+b

x,则以下不切合

C 语语言法的表达式是(

)。

//% 双侧均应为整型数据

A

26. 如有定义: int

x=2,y=3;float

A. x=x*3=2

B. x=(y==1)

C. i=float(x)

D. i%(-3)

//x*3

i;,则以下切合

C 语语言法的表达式是(

)。

不是一个变量名

B

// 应改为 i=(float)x

//% 双侧均应为整型数据

C语言练习题集(答案解析)

27.

设 double 型变量 a,b,c,e 均有值 ;对代数式 (3ae)/(bc) ,不正确的

C 语言表达式

是( )。

A. a/b/c*e*3

C

B. 3*a*e/b/c

C. 3*a*e/b*c

D. a*e/c/b*3

28.

下边表达正确的选项是(

)。

// 改为 3*a*e/b/c

A. 2/3

等价

与 2/3

等价

C. ++5

与 6

等价

// 独自写 ++5

是错误的,能够写成 a=++5

D. 'A' 与 "A" 等价

29.

下边表达中,错误的选项是(

A. 其算术运算对象不包含函数

A B. %( 模运算符 )的运算对象只好为整型量

C. 算术运算符的联合方向是 " 自左至右 "

D. 自加和自减运算符的联合方向是" 自右至左 "

30. 下边表达正确的选项是( )。 //++ -- 只好用于变量,而不可以用于常量或表达式

A. 强迫种类变换运算的优先级高于算术运算

A B. 若 a 和 b 是整型变量 ,(a+b)++ 是合法的

C. 'A'*'B' 是不合法的

D. "A"+"B" 是合法的

B

31.

如有定义: int k,i=2,j=4; 则表达式

k=(++i)*(j--)

的值是(

)。

)。

C语言练习题集(答案解析)

A. 8

B. 12// 注意前缀 后缀的差别

C. 6

D. 9

32. 设整型变量 a 为 5 ,使 b 不为 2 的表达式是( )。

A. b=(++a)/3

CB. b=6-(--a)

C. b=a%2

D. b=a/2

// 结果为 1

33.

如有定义: int a=1,b=2,c=3;

A. 1

则语句 ++a||++b&&++c;

运转后 b 的值为( )。

C. 2

D. 3

// 注意运算的不完整性

34.

如有定义: int i,j; 则表达式 (i=2,j=5,i++,i+j++)

A. 7

B B. 8

C. 9

D. 10

的值是(

)。

35.

如有定义: int a,b; 则表达式 (a=2,b=5,a*2,b++,a+b)

B A. 7

的值是(

)。

B. 8

C语言练习题集(答案解析)

C. 9

D. 10

36.

如有定义: int m=5,n=3;

A. 6

B. 7

C. 8

D. 9

则表达式 (m+1,n+1,(--m)+(n--))

的值是(

)。

B

37.

已知 int a;使用 scanf() 函数输入一个整数给变量

A. scanf("%d",a);

a,正确的函数调用是(

)。

B

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

C. scanf("%f",&a);

D. scanf("%lf",&a);

38.

已知 double

a;使用 scanf() 函数输入一个数值给变量

a,正确的函数调用是(

)。

A. scanf("%ld",&a);

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

C. scanf("%7.2f",&a);

D. scanf("%lf",&a);

D

// 输入数据时不可以规定精度

39.

已知 char a;使用 scanf() 函数输入一个字符给变量

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

B

B. scanf("%lf",&a);

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

D. scanf("%u",&a);

a,不正确的函数调用是(

)。

// 字符型变量与整型等价,但不与浮点型等价

C语言练习题集(答案解析)

40. putchar()

函数的功能是向终端输出(

A. 多个字符

B B. 一个字符

C. 一个实型变量值

D. 一个整型变量表达式

41. getchar() 函数的功能是从终端输入()。

A. 一个整型变量值

D B. 一个实型变量值

C. 多个字符

D. 一个字符

42.

如有定义 :int x=1234,y=123,z=12;

运转后的输出结果为( )。

)。 // char *str0;

.;puts( str0);

则语句

printf("%4d+%3d+%2d",

x, y, z);

A. 123412312

D

B.

C. 1234+1234+1234

D. 1234+123+12

43. 已有以下定义和输入语句,

int a; char c1,c2;

scanf("%d%c%c",&a,&c1,&c2);

A

若要求 a、 c1 、 c2 的值分别为 10 、 A 和 B,正确的数据输入是(

A. 10AB // 输入数据时,遇空格、回车、

B.10 A B

TAB 、及非法输入

)。

或按规定的宽度结束

C语言练习题集(答案解析)

C. 10A

B

D. 10 AB

44. 已有以下定义和输入语句:

int a,b;

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

// “格式控制” 字符串中除了格式说明还有其余字符,

入 //

时应在相应地点输入

则输

B

若要求 a、 b

A. 10 20

的值分别为

10 和 20 ,正确的数据输入是(

)。

B. 10,20

C. a=10,b=20

D. 10;20

45.

以下程序的运转结果是(

void main()

{

int a=65;

char c='A';

D printf("%x,%d",a,c);

}

A. 65,a

B. 41,a

C. 65,65

D. 41,65

)。

C语言练习题集(答案解析)

46. 下边表达中,( )不是结构化程序设计中的三种基本结构之一。

A. 数据结构

A B. 选择结构

C. 循环结构

D. 次序结构

47. 下边表达中 ,( )不是结构化程序设计三种基本结构的共同特色。

A. 先判断后履行

A B. 单进口,单出口

C. 程序中没有履行不到的语句

D. 无死循环

48.

结构化程序设计不包含(

A. 最优化

A B. 自顶而下,逐渐细化

C. 模块化设计

D. 结构化编码

49.

以下运算符中优先级最高的是(

A. >

D B. ||

C. &&

)。

)。

D. + // 初等运算符() []

单目 算术 关系 逻辑(不含 !) 赋值

逗号

50.

如有定义 :int x=3,y=4; 则表达式

!x||y 的值为( )。

A

A. 1

C语言练习题集(答案解析)

B. O

C. 3

D. 4

51.

如有定义 :int i=7,j=8; 则表达式

i>=j||i

A. 1

A B. 变量 i 的值

C. 0

D. 变量 j 的值

的值为(

)。

52. 若希望当 a 的值为奇数时 ,表达式的值为 " 真 ",a 的值为偶数时 ,表达式的值为 "假 " 。

则不可以知足要求的表达式是()。

A. a%2==1

C

B. !(a%2==0)

C. !(a%2)

D. a%2

53.

如有定义:

int x=3,y=4,z=5;

则值为

0 的表达式是(

)。

A. 'x'&&'y'

D

B. x<=y

C. x||y+z&&y-z

D. !((x

// 考察运算符优先级

的值是(

54.

如有定义: int a=5,b=2,c=1; 则表达式

a-b

A A. 0

)。

B. 1

C语言练习题集(答案解析)

C. 2

D. -1

55.

已知 double

a=5.2; 则正确的赋值表达式是(

)。

A. a+=a-=(a=4)*(a=3)

A

B. a=a*3=2

C. a%3

D. a=double(-3)

56.

已知 char a='R';

则正确的赋值表达式是(

)。

A. a=(a++)%4

A

B. a+2=3

C. a+=256--

D. a='078'

57.

已知 int

a='R';

则正确的表达式是(

A. a%10

)。

A B. a=int(3e2)

C. 2*a=a++

D. a=a+a=a+3与 C 同属一类错误

58. 设单精度型变量 f 、 g 的值均为 2.0 ,使 f 为 4.0 的表达式是( )。

A. f+=g

AB. f-=g+2 C.

f*=g-6 D.

f/=g*10

C语言练习题集(答案解析)

59.

如有定义: float

x=3.5;int z=8; 则表达式 x+z%3/4

的值为(

)。

B

C. 3

D. 4

60.

如有定义 :int a=1,b=2,c=3,d=4,x=5,y=6;

为( )。

A. 0

则表达式

(x=a>b)&&(y=c>d)

的值

A

B. 1

C. 5

D. 6

61.

有 定 义 :

int a=2,b=3; float x=3.5,y=2.5;

则 表 达 式

(float)(a+b)/2+(int)x%(int)y

的值是(

)。

A

B.

C.

D.

62.

如有定义: int b=7;

float a=2.5,c=4.7;

则表达式

a+(b/2*(int)(a+c)/2)%4

是( )。

的值

C

A. 2.5

//(b/2*(int)(a+c)/2)=10

注意运算次序

C语言练习题集(答案解析)

63.

如有定义: int a=6,b=2;char

( )。

A. 7

C

B. 8

C. 9

D. 表达式错误

c1='a',c2='b';

则表达式

a+b%5+c2-c1

的值是

64.

以下的 if 语句中, x 的值必定被从头赋值的是(

A. if(x==y) x+=y;

// 注意 if 语句后的空语句

;

)。

B. if(x>y && x!=y );

x+=y;

C. if(x!=y)

B

scanf("%d",&x);

else

scanf("%d",&y);

D. if(x

{ x++;y++;

}

65. C 语言对 if 嵌套语句的规定: else 老是与( )配对。

A. 第一个 if

B

B. 以前近来的且还没有配对的

if

C. 缩进地点同样的 if

D. 以前近来的 if

C语言练习题集(答案解析)

66. 对于整型变量 x,下述 if 语句( )与赋值语句:

x=x%2==0?1:0;

不等价。

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

B. if (x%2) x=1; else x=0;

C. if (x%2==0) x=1; else x=0;

D. if (x%2==1) x=0; else x=1;

67. 如有定义 :int x=1,y=2,z=4; 则以下程序段运转后 z 的值为( )。

if(x>y)

z=x+y;

else z=x-y;

B

A. 3

B. -1

C. 4

D. 不确立

68.

如有定义 :int a=1,b=2,c=3; 则履行以下程序段后

a,b,c 的值分别为(

if (a

{c=a;a=b;b=c;}

D

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

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

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

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

D

69.

以下程序段运转后变量

a 的值为(

)。

)。

C语言练习题集(答案解析)

int x=6,y=5;

int a;

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

A. 0

B. 1

C. 6

D. 5

70.

以下程序的运转结果是(

)。//

注意分支中有无

break

的差别

void main()

{

int n='e';

switch(n--)

{

default:

printf("error

case 'a':

case

'b':

printf("good

case

'c':

printf("pass

case

'd':

printf("warn

}

}

");

C

"); break;

");

");

A. error

B. good

C语言练习题集(答案解析)

C. error

good

D. warn

71.

以下程序的运转结果是(

void main()

{

int n='c';

switch(n++)

{

default:

printf("error

case

'a':

case

'b':

printf("good

case

'c':

printf("pass

case

'd':

printf("warn

}

}

)。

"); break;

C

"); break;

");

");

A. pass

B. warn

C. pass warn

D. error

72.

以下程序的运转结果是(

D void main( )

{ int n=5;

)。

C语言练习题集(答案解析)

if(n++>=6)

printf("%dn",n);

else

printf("%dn",++n);

}

A. 4

B. 5

C. 6

D. 7

73. 设有整型变量 x,下述语句( )不会出现死循环。

A. for(;;x+=1);

B B. for(;(x=getchar())!='n';);

C. while(1) {x++;}

D. for(x=10;;x--);

74. 对于整型变量 x,与 while(!x) 等价的是( )。

A. while(x!=0)

BB. while(x==0) C.

while(x!=1) D.

while(~x)

75. 对于整型变量 x 和 y,语句

A

for(x=0,y=0;(y!=123)&&(x<4);x++)

中的 “y++ ;”被履行(

)。

y++;

C语言练习题集(答案解析)

A. 4

C. 123

76.

在 c

语言中

while

循环和

do--while

循环的主要差别是(

)。

A. do--while

循环体内能够使用

break

语句, while

循环体内不可以使

break

语句

B. do--while

的循环体起码无条件履行一次,

while

的循环体不是

B

C. do--while

循环体内能够使用

continue

语句,while

循环体内不可以使用

continue

语句

D. while

的循环体起码无条件履行一次,

do--while

的循环体不是

77.

以下程序段运转后,循环体运转的次数为(

int i=10,x;

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

B A. 10

B. 0

C. 1

D. 无穷

78. 以下程序段运转后变量 n 的值为( )。

int i=1,n=1;

D for (;i<3;i++)

{continue;n=n+i;}

)。

A. 4

C语言练习题集(答案解析)

B. 3

C. 2

D. 1

79.

以下程序的运转结果是(

void main()

{

int sum = 0, item

while(item

{

item++;

sum += item;

B

if(sum==5)

break;

}

printf("%dn",sum);

}

A. 10

B. 15

C. 5

D. 6

80.

以下程序的运转结果是(

C

void main()

< 5)

= 0;

)。

)。

C语言练习题集(答案解析)

{

int sum = 0, item

while(item

{

item++;

sum += item;

if(sum>=6)

break;

}

printf("%dn",sum);

}

A. 10

B. 15

C. 6

D. 7

81.

以下程序的运转结果是(

void main()

{

B

int sum = 0, item

while(item

{

item++;

= 0;

< 5)

)。

= 0;

< 5)

C语言练习题集(答案解析)

if(item ==

2)

continue;

sum += item;

}

printf("%dn",sum);

}

A. 10

B. 13

C. 15

D. 1

82.

以下数组定义中,正确的选项是(

)。

A. int a[5]={0};

A

B. int

a[]={0

1 2};

// int a[]={0

, 1,2};

注意元素与元素之间加逗号

C. int

a[5]=0;

// int

a[5]={0};

D. int a[]; // 一定指明数组大小

83.

以下数组定义中,正确的选项是(

)。

A. int a[10];

A

B. int

n=10,a[n]; // 下标一定是常量表达式

C. int

N=10;int a[N];

D. int n;scanf("%d",&n);

int a[n];

84.

已知 int

a[10];

则对

a 数组元素引用不正确的选项是(

)。

A

A. a[10]

//10

个元素的数组下标范围从

0 到

9

,故本题越界

C语言练习题集(答案解析)

B. a[3+5]

C. a[10-10] // 引用数组元素时,下标能够是整型常量或整型表达式

D. a[5]

85.

如有定义 :int a[3]={0,1,2}; 则 a[1] 的值为(

A. 0

B B. 1

C. 2

D. 3

)。

86.

如有定义 :int a[5]={1,2,3,4,5};

值为( )。

A. 6

则语句 a[1]=a[3]+a[2+2]-a[3-1];

运转后

a[1] 的

A

B. 5

C. 1

D. 2

87.

以下能对一维数组 a 进行正确初始化的语句是(

A. int a[5]=(0,0,0,0,0);

B. int a[5]=[0]; // 注意使用大括号

)。

D

C. int a[5]={1,2,3,4,5,6,7}; // 剩余 2 个

D. int a[]={0}; // 定义一个只有一个元素的一维数组,指为

88.

下边程序段的运转结果是(

int

i=0,a[]={3,4,5,4,3};

do{

0

)。

D

C语言练习题集(答案解析)

a[i]++;

}while(a[++i]<5);

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

printf("%d

",a[i]);

89.

下边程序段的运转结果是(

int i=0,a[]={7,5,7,3,8,3};

do{

a[i]+=2;

}while(a[++i]>5);

C for(i=0;i<6;i++)

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

)。

A. 9795105

B. 9593103

C. 9573 83

D. 7573 83

90.

下边程序段的运转结果是(

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

do{

)。

C语言练习题集(答案解析)

a[i]+=10;

}while(a[++i]>2);

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

printf("%d

A.11 2345

B.1 2345

C. 11 12 13 14 15

",a[i]);

91. 设有以下程序段:

int a[3][3]={1,0,2,1,0,2,1,0,1},i,j,s=0;

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

for( j=0;j

s=s+a[i][j];

C

则履行该程序段后 ,s 的值是(

A. 0

B. 1

C. 2

D. 3

)。

92. 有以下定义

int a[][3]={1

, 2 , 3 , 4 , 5, 6, 7 , 8}; //

考察二维数组的初始化

B

则数组 a 的行数是(

A. 2

)。

C语言练习题集(答案解析)

B. 3

C. 4

D. 没法确立的

以下数组定义中,正确的选项是93.

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

)。

//剩余 1个

D

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

C. int a[2][]=

D. int a[][4]=

{1,2,3,4,5,6};

{6};

// 第二维长度不可以省

94.

如有定义 :int

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

A. 0

B. {1,2}

C. 1

D. 3

则 a[1][1]

的值为( )。

A

95.

如有定义 :int

a[3][3]; 则表达式 &a[2][1]-a

A. 7

B. 8

C. 6

D. 9

//&a[2][1]-a

的值为( )。

代表二者之间的元素个数,近似指向同种种类的指针相减

A

96.

如有定义 :int

i=0,x=0;int

值为( )。

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

则以下程序段运转后

x 的

C

for (;i<3;i++)

A. 0

x+=a[i][2-i];

C语言练习题集(答案解析)

B. 12

C. 15

D. 18

97.

如有定义

int a[2][3]; 则对数组元素的非法引用是(

A. a[0][1/2]

DB. a[1][1] C. a[4-4][0] D.

a[0][3]

)。

98.

以下数组定义中,正确的选项是(

)。

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

C B. int a[][2]={{0},{}};

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

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

99.

如有定义

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

的值为( )。

则表达式

sizeof(a)/sizeof(a[0])

A. 3

D

B. 4

C. 5

D. 9

100. 设有以下变量定义:

A

char str1[]="string",str2[8],*str3,*str4="string";

( )是正确的。

C语言练习题集(答案解析)

A. strcpy(str1,"China");

B. str2="China";

C. strcpy(*str3,"China");

D. strcpy(str4[0],"China");

101. 有以下定义:

char str[6]={

则语句 :

printf("%s",str);

D 的输出结果是( )。

A. ab

B. abdef

C. ab0

D. ab

'a','b','0','d','e','f'};

102. 设有以下数组定义:

char str[8]={ "FuJian"};

则分派给数组 str 的储存空间是(

C A. 6

B. 7

C. 8

D. 9

103.

如有定义 :char a[]="abcdef";char

B

( )。

b[]="xyz";

则以下程序段运转后屏幕输出为

)个字节。

C语言练习题集(答案解析)

strcpy(a,b);

printf("%c",a[2]);

A. c

B. z

C. 0

D. d

104.

以下程序段运转后屏幕输出为(

char a[]="abc0mis";

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

)。

B. 8

C. 3

D. 4

105.

如有定义 :int a=2; 则语句 a=strcmp("miss","miss");

A. 1

B

运转后 a 的值为( )。

// 相等返回 0 ,字符串 1> 字符串 2,返回一个正整数,不然返回负整数

B. 0 //strcmp(str1,str2)

C. -1

D. 2

106.

以下程序段运转后屏幕输出为(

)。

char str[]="abcd";

注意

代表一个反斜杠字符

B

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

A. 4

C语言练习题集(答案解析)

B. 5

C. 6

D. 7

107.

以下程序段运转后屏幕输出为(

)。

char str[80];strcpy(str,"hello");printf("%d",strlen(str));

A. 5

A

B. 6

C. 7

D. 80

108.

如有定义: char str1[6]="abcdm",*ps,*str2="abcdef";

A. strcpy(str1,str2);

B

B. 表达式 strcmp(str1,str2)

C. str1=str2;

D. 表达式 strlen(str1) 的值为 6

的值大于

0

( )是正确的。

109. 设有以下函数定义:

int fun(char

{ char *p=str;

while ( *p != '0')

A

return

(p-str);

}

则以下语句履行后的输出结果是(

printf("%dn",fun("Student"));

)。// 返回字符串个数

p++;

*str)

C语言练习题集(答案解析)

A. 7

B. 8

C. 9

D. 10

110.

以下程序的运转结果是(

int fun(int

{ int j;

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

printf("n");

}

main()

A

{ int a[4][4]={0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0};

fun(a);

}

)。

array[4][4])

printf("%2d",array[2][j]);

111. 以下 fun 函数的种类是( )。

fun(float x)

C

{double y; int z ;

y=x * x ;

C语言练习题集(答案解析)

z=(int)y

return(z);

}

A. void

B. double

C. int

D. float

;

112.

以下程序运转后屏幕输出为(

#include

int f(int x,int y)

)。

{

return(x+y);

}

main()

B

{

int a=2,b=3,c;

c=f(a,b);

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

}

A. 0

B. 2+3=5

C. 2+3=0

C语言练习题集(答案解析)

D. 3+2=5

113.

以下程序运转后屏幕输出为(

#include

int a=2,b=3;

int max(int

{

int c;

c=a>b?a:b;

return(c);

}

D

main()

{

int a=4;

printf("%d",max(a,b));

}

A. 2,3

B. 2

C. 3

D. 4

114.

以下程序运转后屏幕输出为(

B

#include

void f(int i)

// 两个函数中的 a 不同样

a,int b)

)。 // 考察全局变量与局部变量的差别及范围

)。

C语言练习题集(答案解析)

{

int a=2;

a=i++;

printf("%d,",a);

}

main()

{

int a=1,c=3;

f(c);

a=c++;

printf("%d",a);

}

A. 4,3

B. 3,3

C. 4,5

D. 3,5

115. 如有以下函数定义: // 注意静态变量的使用

int fun()

{

D

static int k=0;

return ++k;

}

C语言练习题集(答案解析)

以下程序段运转后屏幕输出为(

)。

int i;

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

printf("%d",fun());

A. 0

B. 1

C. 5

D. 6

116.

下边程序的输出结果是(

#include

int global=100;

fun()

{

int global=5;

return ++global;

D

}

void main()

{

printf("%dn",fun());

}

A. 100

B. 101

fun();

)。

C语言练习题集(答案解析)

C. 5

D. 6

117.

以下对于

C 语言函数的描绘中,正确的选项是(

)。

A. 函数的定义能够嵌套,但函数的调用不可以够嵌套

B B. 函数的定义不可以够嵌套,但函数的调用能够嵌套

C. 函数的定义和函数的调用都能够嵌套

D. 函数的定义和函数的调用都不可以够嵌套

118. 如有以下宏定义,

#define MOD(x,y)

x%y

则履行以下程序段后,

z 的值是(

)。

int z,a=15,b=100;

D z=MOD(b,a);

A. 100

B. 15

C. 11

D. 10

119.

以下表达中,正确的选项是(

A. “#define

B

)。

PRICE= 30 ”定义了与 30 等价的符号常量

B. 预编译办理命令行都一定以 “# ”开头

C. 宏名只好包含大写字母和数字字符

PRICE

// 能够包含小写字母

D. 在程序的一行上能够书写几个有效的宏定义

A

120.

以下表达中,正确的选项是(

)。

C语言练习题集(答案解析)

A. 宏睁开不占用运转时间,只占用编译时间

B. 预编译办理命令行一定以分号结束

C. 一个源程序只好有一个预编译办理命令行

D. 使用带参数的宏定义时,应当说明每个参数的数据种类

121.

以下的表达中不正确的选项是(

)。

A. 宏睁开不占用运转时间,只占用编译时间

C B. 宏名无种类

C. 宏名一定用大写字母表示

D. 预办理命令行都一定以 # 号开始

如有定义 :#define

A. 12

A B. 4

C. 3

D. 不确立

123. 以下程序运转后 ,屏幕输出为( )。

#define MIN(a,b) ((a)<(b)?(a):(b))

main()

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

C

z=2*MIN(x,y);

printf("%d",z);

}

A. 2

PI 3,则表达式 PI*2*2

的值为(

122.

C语言练习题集(答案解析)

B. 3

C. 4

D. 6

124.

下边程序的输出结果是(

)。

#include

#define SQR(x) (x*x)

void main()

{

int a,b=3;

A

a=SQR(b+2);

printf("n%d",a);

}

A. 11

B. 25

C. 不定值

D. 产生错误

125.

下边程序的输出结果是(

)。

#include

#define ONE 1

C

#define TWO ONE+1

#define THREE TWO+1

void main()

C语言练习题集(答案解析)

{

printf("%dn",THREE-ONE);

}

A. 产生错误

B. 1

C. 2

D. 3

126.

以下表达中正确的选项是(

)。

A. 预办理命令行一定位于

C 源程序的开端地点

B

B. 在

C 语言中,预办理命令行都以

"#"

开头

C. 每个 C 程序一定在开头包含预办理命令行:

#include

D. C 语言的预办理不可以实现宏定义和条件编译的功能

127.

设有以下语句,则(

)是对 a 数组元素的不正确引用,此中

*p=a;

0 ≤i< 10 。

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

A. a[p-a]

D

B. *(&a[i])

C. p[i]

D. *(*(a+i))

128.

对于基种类同样的两个指针变量之间,不可以进行的运算是(

)。

A. <

C

B. =

C. +

C语言练习题集(答案解析)

D. -

129.

履行以下程序段的输出结果是(

int a=10,*p=&a;

printf("%d",++*p);

B A. 10

B. 11

C. 变量 a 的地点

D. 变量 a 的地点 + 1

130. 以下程序段运转后 *(p+3) 的值为( )。

char a[]="good";

char *p;

p=a;

A

A. 'd'

B. '0'

C. 寄存 'd' 的地点

D. 'o'

131. 以下程序段运转后 *(++p) 的值为( )。

char a[5]="work";

char *p;

C

p=a;

A. 'w'

B. 寄存 'w' 的地点

)。

C语言练习题集(答案解析)

C. 'o'

D. 寄存 'o' 的地点

132.

如有定义 :int *p,a=4;

A. a,p

B B. &a,p

C. &a,*p

D. a,*p

p=&a; 则以下均代表地点的是(

)。

133. 如有说明语句: double *p,a; 则能经过 scanf 语句正确给输入项读入数据的程序段是( )。

A. *p=&a;scanf("%lf",p);

D

B. *p=&a;scanf("%lf",*p);

C. p=&a;scanf("%lf",*p);

D. p=&a;scanf("%lf",p);

134.

在 16 位编译系统上, 如有定义

int a[]={10,20,30},*p=&a;

表达错误的选项是( )。

当履行 p++; 后以下

A. p 向高地点移了一个字节

A

B. p 与 a+1 等价

C. 语句 printf("%d",*p);

D. p 指向数组元素 a[1]

输出 20

135. 下边语句正确的选项是( )。

B

A. int *p; *p=20;

B. char *s="abcdef";

printf("%sn",s);

C语言练习题集(答案解析)

C. char str[]="abcd";

str++; // 数组名不可以改变

//%s

输出字符串,一定以

’0 ’结束

D. char str[]={'a','b','c'};printf("%s",str);

136.

如有以下程序段,且

是(

)。

0 ≤i< 4 , 0 ≤j<3 ,则不可以正确接见 a 数组元素的int i,j,(*p)[3];

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

p = a;

D

A. *(*(a+i)+j)

B. p[i][ j]

C. (*(p+i))[j]

D. p[i]+j

137. 若函数 fun 的函数头为:

int fun(int i, int j)

且函数指针变量

p 定义以下:

int(*p)(int

B

i, int j);

则要使指针 p 指向函数 fun 的赋值语句是( )。

A. p=*fun;

B. p=fun;

C. p=fun(i,j);

D. p=&fun;

138. 设有以下变量定义:

D

char aa[][3]={'a','b','c','d','e','f'};

char (*p)[3]=aa;

C语言练习题集(答案解析)

则以下程序段的运转结果是(

)。

p++;

printf("%c",**p);

A. a

B. b

C. c

D. d

139. 以下程序段运转后 x 的值为( )。

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

int i,x,*p;

x=1;

p=&a[2];

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

x*=*(p+i);

A. 不确立

B. 24

C. 120

D. 60

140. 以下程序段运转后 x 的值为( )。

int a[]={1,2,3},b[]={4,2,5};

B

int *p,*q;

int i,x;

C语言练习题集(答案解析)

p=a; q=b;

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

if(*(p+i)==*(q+i))

x=*(p+i)*2;

A. 2

B. 4

C. 6

D. 不确立

141. 以下程序段运转后 x 的值为( )。

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

int *p,*q;

int i,x;

p=&a[0];

q=&a[8];

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

if(*(p+i)==*(q-i))

x=*(p+i)*2;

A. 2

B. 4

C. 6

D. 不确立

A

142.

下边程序的输出结果是(

)。

C语言练习题集(答案解析)

#include

void main()

{

int i;

char *s="abc";

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

printf("%sn",s+i);

}

A. abc

bc

c

B. c

bc

abc

C. abc

c

bc

D. a

ab

abc

143.

A

下边程序的输出结果是(

)。

#include

C语言练习题集(答案解析)

void main()

{

char *str="12345",*ps=str+4;

printf("%cn",ps[-4]);

}

A. 1

B. 2

C. 3

D. 错误

144. 以下程序履行时,输入 1 2 3 4 5< 回车 > ,输出为:

#include

#define N 5

void main()

{

int a[N];

A int *p=a;

while(p

scanf("%d",p++);

while(p>a)

printf("%d

}

",*(--p));

C语言练习题集(答案解析)

145. 设有以下定义语句:

struct

student

{ int num;

char name[10];

float score;

C } wang,zhang;

则不正确的表达是( )。

A. struct 是结构体种类的重点字

B. zhang 是结构体变量名

C. wang 是结构体种类名

D. num , name , score 都是结构体种类 student 的成员名

146. 设有以下定义语句:

struct

student

{ int num;

char name[10];

B

float score;

} wang,zhang;

则变量 wang

所占的内存字节数是(

A. 14

)。


本文标签: 函数 结构 运转 定义 语句