C语言考试2 题目整理

1. 若x、i、j、k都是int型变量,则计算下面表达式后,x的值为

x=(i=4,j=16,k=32)

A) 4 B) 16 C) 32 D) 52

赋值的时候,逗号表达式里的值总是由最后一项决定的.

2. 下列四组选项中,均不是C语言关键字的选项是

A) define IF type

B) getc char printf

C) include case scanf

D) while go pow

关键字就是那些可以被用来当作变量名的,显然这么写 int while = 0;看起来很尴尬。并且IDE会自动替把那些关键字高亮显示。

3. 下面正确的字符常量是

A) “c” B) ‘\\’’ C) ‘’ D) ‘K’

4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 __

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

各种类型进行运算时候,结果会转化成那个占用内存最大的数据类型,Double占用内存最大,所以转成那个占用内存最大的类型。

5. 阅读以下程序,当输入数据的形式为:25,13,10<CR>(注:<CR>表示回车),则正确的输出结果为

main()

{ int x,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) 不确定值

因为输入的时候是输了坑爹的逗号。一般人是不会用逗号输入的。

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

main()

{ char ch1,ch2,ch3;

输入语句

printf(“%c%c%c”,ch1,ch2,ch3);

}

输出形式:A B C

输入形式:A B C

A) scanf(“%c%c%c”,&ch1,&ch2,&ch3); 如果输入的是ABC的话,那么就符合题意。

B) scanf(“%c,%c,%c”,&ch1,&ch2,&ch3); 输入里面有逗号,显然不对。

C) scanf(“%c%c%c”,ch1,ch2,ch3); 输入不带地址符,也不对。

D) scanf(“%c%c”,&ch1,&ch2,&ch3);才输入两个数,对不了。

7. 设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为

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

首先 执行判断 a > b,显然a不大于b,结果是false,也就是0,然后把0赋给m。于是前面那个(m= a >b)就是0,也表示false。

&& 表示是并且的意思,只有两边同时为true结果才为true。计算机如果看到&&前面都是false了,那么&&后面就不用看了。换句话说,如果&&前面的表达式为false,整个结果肯定是false,那么&&后面的表达式就不执行了。所以n还是2. 如果把题中的&&换成||的话,那么||前面的表达式是false的话,后面还是要执行的。那时后的n 的值为0了。如果把题目再改一下:

改成(m=a<b)||(n=c>d) 那么n的值又变成2了。因为||前面的表达式都已经是true了,整个结果肯定是true了,||后面的也就不执行了。所以n还是2。

这种只看一半就能判断出整个表达式的真假的原则据说叫做短路原则

8.若有如下语句

int x=3;

do{printf(""%d\n",x-=2);}while(!(--x)); 这里的减减X有点小。

则上面程序段________.

A)输出的是1 B)输出的是1和-2 C)输出的是3和0 D)是死循环

x-=2 就是 x = x- 2;

执行第一次,x = 1被打印出来,去while里面判断(!(- - x))是真是假,如果是真,就继续执行,如果是假就不做了。此时的x已经是1了,做完自减运算就是0了,0是false,但是又取反,结果又是true,于是再做一次,x = -2被打印出来,再做自减运算,x = -3,其实只要(- - x)的值不为0,(!( - -x))的值就是false。此时就跳出循环了。

9.若i为整型变量,则以下循环执行次数是_____.

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

A)无限次 B)0次 C)1次 D)2次

通常我们写for循环是这么写的:for(i = 0; i < 10 ; i++)

意思是,给i赋值为0,如果i小于10,那么执行循环体,然后再加1,再判断。

本题中给定了i= 2,判断是 i == 0 才执行打印,i是2,不满足条件,所以没有打印内容。

如果要看到执行打印的话,这么写for(i =0; i == 0) prinf(“%d”,i--); 这样会执行一次循环。

10.以下正确的函数定义形式是________.

A)double fun(int x,int y)

B)double fun(int x; int y)

C)double fun(int x, int y); 这是声明

D)double fun(int x,y);

11.已有以下数组定义和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])

12.请读程序:

#include <stdio.h

#define MUL(x,y) (x)*y

main()

{

int a=3,b=4,c;

c=MUL(a++,b++);

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

}

上面程序的输出结果是__________.

A)12 B)15 C)20 D) 16

原文地址:https://www.cnblogs.com/ligongzi/p/2659142.html