C语言 几道选择题

2024-12-19 20:12:10
推荐回答(5个)
回答1:

注:水平不高……第一想帮帮你,第二我也在学习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项错在等号的赋值符号是具有右结合性的,应从右至左处理符号。显然最后一项有错误

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

回答2:

呵呵` 我来帮帮你
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
搞定,错了被打板了可不能怪我啊

回答3:

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

回答4:

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

回答5:

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