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.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、B
3、A(最后一句应该是输出a而不是d吧)
4、C
5,C
6,D
7,C
8,D
9,C
10,这题不会
11,C
12,C
15,D
2,A
3.C 4,B ++前缀,先增后用,——后缀,先用后减
5,B 6,A 7,D 8,D 9,D 10,D 11,A 12,D 15,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