C语言 几道选择题

、若有定义:int a=8, b=5, c; 执行语句c = a/b+0.4 ;后,c的值为( )。

A) 1.4 B) 1 C) 2.0 D) 2
2 、以下程序中,while 循环的次数是( )。

#include <stdio.h>

void main(void)

{ int i = 0;

while (i<10) {

if (i<1) continue;

if (i==5) break;

i++;
}

}

A) 1 B) 死循环,不能确定次数 C) 6 D) 10

3、以下程序的输出结果是( )。

#include <stdio.h>

void main(void)

{ int a = 0, i;

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

switch (i) {

case 0:

case 3: a += 2;

case 1:

case 2: a += 3;

default: a += 5;

}

}

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

}

A) 31 B) 13 C) 10 D) 20

4、执行以下程序段后的输出结果是( )。

int x = 5;

int m, n;

n = (++x) + (++x);

m = (x--) + (x--);

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

A) 14 10 B) 13 13 C) 14 14 D) 14 12

5、执行以下程序后的输出结果是( )

#include <stdio.h>

void main(void)

{

int i = 0, j = 0, a = 6;

if ((++i>0)||(++j>0)) a ++;

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

}

A) i=0, j=0, a=6 B) i=1, j=1, a=7 C) i=1, j=0, a=7 D) i=0, j=1, a=7

6、执行以下程序后的输出结果是( )

#include <stdio.h>

void main(void)

{

char a[]=”abc\0abc”;

printf(“%s”, a);

}

A) abc\0abc B) abc\ C) abc\0 D) abc

7、以下程序的输出结果是( )

#include <stdio.h>

void main(void)

{

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

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

}

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

8、执行以下程序后,a的值为( )。

int *p, a = 10, b=1;

p = &a; a = *p + b;

A) 12 B) 编译出错 C) 10 D) 11

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

A) 在C语言中,main函数必须位于文件的开头

B) C语言每行中只能写一条语句

C) C语言本身没有输入、输出语句

D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误

10、以下各语句或语句组中,正确的操作是( )。

A) char s[5]="abcde" B) char *s; gets(s);

C) char *s; s="abcde"; D) char s[5]; scanf("%s", &s);

11、设有以下说明语句,则下面的叙述中不正确的是( )。
struct ex {

int x ; float y; char z ;

} example;
A) struct结构体类型的关键字 B) example是结构体类型名
C) x,y,z都是结构体成员名 D) struct ex是结构体类型

12对以下程序段,while 循环执行的次数是( )。
int k=0
while (k=1) k++;
A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次

15、在下列选项中,不正确的赋值语句是( )。
A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) a=b+c=1;
你们这答案五花八门啊,第一题我敢肯定就是选择 B 啊注意是int 类型啊~~

注:水平不高……第一想帮帮你,第二我也在学习C++,所以想试试,如有错误,请您见谅

【1】选(B)

因为A,B,C都是整型,在商的过程中,小数点后面都没有了,所以得出结果的1.4,最后因为C的整型类型的缘故,导致后面的小数点0.4没有了,结果只是1

【2】选(B)

continue的作用是,符合IF判断条件则跳出循环,进行下一循环,则由于i=0,符合判断条件if(i<1),然后就跳出循环,再重复while循环,然后再判断,又符合,然后再再执行循环,无限下去……因此是死循环

【3】选(A)

由于switch(i)的循环体内,并没有break,导致每一个case,如果符合条件,就会一条条的执行下去

若i=1,依次执行case1,case2,default,由于case1没有贡献,case2使得a=8,default使得a=13

若i=2,依次执行case2,default,由case2使得a=16,default使得a=21

若i=3,依次执行case3,case1,case2,default,这样下去,到i=4的循环执行完毕后,再判断一下i的大小

最后就跳出了,答案是a=31

【4】选(C)

这道题,直接放到编译器……就可以了,但是强调的是……不同的编译器选择的自增自减的语句原则不同

以VISUAL C++为例,一般符合学习语法,但是TUBOR和C FREE等,对自增自减的语法有不同的规定

举个例子,n=(++a)+(++a)+(++a);,假如a=3,那么有的编译器会认为n等于15,但有的认为是12

因为有的编译器认为每次都要自增,但是有的编译器认为自增一次后,等到等式运算结束,碰到分号,结束语句后再进行处理自增(虽然a=6,但是不同编译器处理n值结果不一样)。

本题如果按照visual C++来的话,应该是13 13。因为 n = (++x) + (++x);第一个x这时先自增成6,再参与加法运算,然后第二个x同理先自增,再运算,变成8,于是就是n=6+8;而m = (x--) + (x--);由n运算完毕的x是等于8的,参与m的减法运算之后,再自减,同理m=8+6;最后x还是等于5。

【5】选(C)

因为if ((++i>0)||(++j>0)) a ++;这一句,编译器是这样执行的,当或语句出现,只要第一个条件满足,立刻忽略后面的语句,即编译器编译啊编译啊,突然编译到++i>0,这句时,发现时TRUE,是正确的,由或概念,可知,if语句判断通过,于是编译器直接忽略后面的++j,于是j的值其实根本没有改变。

【6】选(D)

字符串的放置,人是看不见的,在机器内部,默认的放置时,比如说char a[]=”abc”;那么系统会拿出4个“盒子”,打个比喻,说成盒子,其实盒子就内存。abc分别装入三个盒子,最后一个盒子装的是“\0”,这个“\0”符号表示的是结束的意思,就是说,系统一碰到这个符号,默认认为输入的字符立刻结束。所以说,你定义的char a[]=”abc\0abc”;,系统编译时,一碰到\0立刻停止往数组内输入数据,实际上字符串输入数组只有abc。另外:\0符号,不会输出在屏幕上的。

【7】选(C)

关键在于printf(“%d”, c>b>a);,C=3,B=2,那么C>B,是真,真就是1,系统默认的,就好比一个if判断语句,什么也不写。if(){/*这里面是程序*/},那么判断的时候,怎么判断呢?如果数据进入时0,那么就为假,如果数据进入的是1或者非零,就是真,道理就在这里。而且符号大于号,是判断符号,不是赋值符号。因此C>B的事实是正确的,因此C>B结果是1,然后按照比较符号的调用左规则,继续和A比较,而1是等于A的,而不是大于A,那么此事件是假,为假事件,那么假事件结果就是0

【8】选(D)

   p = &a,指的是*P这个指针现在等于a,注意是“星P”等于a,而P不是等于a的,P是a的地址,*P才是等于a,其实星P就是和a没有区别,a就是星P,星P就是a。然后a = *p + b;就是a=a+b;所以a=11了

【9】选(C)

 所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言 的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统将自动引用预处理程 序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换, 这称为 “宏代换”或“宏展开”。 宏定义是由源程序中的宏定义命令完成的。 宏代换是由预处理程序自动完成的。至于正确选项:C语言本身没有输入 输出语句,其功能须通过调用相关函数来实现。 语言本身没有输入/输出语句 其功能须通过调用相关函数来实现。

【10】选(B)

这个……A项少了分号,C项既然是指针,那么取的应该是地址,最后一项,显然……字符串,如果不是GETS()函数,那么就应该用循环,才能实现SCANF的输入

【11】选(B)

显然example是结构体内某个具体的对象,而x,y,z都是关于example属性修饰之类的成员,比如说example可以代表一本例子样本的书,那么x,y,z可以代表修饰书的作者,出版时间,出版社,都是书的成员属性。而至于一个结构体类型有其专有的标志,它由两个单词组成,第一个关键字struct,第二个单词按标识符命名规则指定。

【12】选(A)

由于判断的条件不是K==1,注意是两个等号,由于只是一个等号,系统认为,条件是K=1,注意是把1赋值给K,然后就成了,然后进入循环。切记=是赋值,==是判断。以后所有的……个跟第七题,很像了,凡是非零的数据进入判断,都是真事件

汗……怎么直接15题

【15】选(D)

显然……你之前的题目里面就有A项的赋值方法,然后B项可以理解为将n3的值赋给n2,然后再把覆盖的n2赋给n1,C项理解为判断i与j是否相等,相等则事件真,k就等于1,若为假,k就等于零。D项错在等号的赋值符号是具有右结合性的,应从右至左处理符号。显然最后一项有错误

以上全为个人所写,绝无雷同,请勿传播……如有错误,请指出,共同进步

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-09
呵呵` 我来帮帮你
1.A
2.D
3.A
4.这一题要看你的C的运行环境,不同的环境出来的结果可能不同
5.B
6.D
7.B
8.D
9.C
10.D
11.B
12.C
15.C
搞定,错了被打板了可不能怪我啊
第2个回答  2010-12-09
1、A
2、B
3、A(最后一句应该是输出a而不是d吧)
4、C
5,C
6,D
7,C
8,D
9,C
10,这题不会
11,C
12,C
15,D
第3个回答  2010-12-09
1,8/5只取商,为1,加上0.4等于1.4 A
2,A
3.C 4,B ++前缀,先增后用,——后缀,先用后减
5,B 6,A 7,D 8,D 9,D 10,D 11,A 12,D 15,A
第4个回答  2010-12-09
1 A
2 C
3 A
4 C
5 C
6 D
7 C
8 D
9 C
10 D
11 C
12 C
15 D