南昌航空大学C语言选择题(共六卷)_第1页
南昌航空大学C语言选择题(共六卷)_第2页
南昌航空大学C语言选择题(共六卷)_第3页
南昌航空大学C语言选择题(共六卷)_第4页
南昌航空大学C语言选择题(共六卷)_第5页
已阅读5页,还剩180页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言选择题(一)

(总分100分,考试时长90分钟)

一、理论基础(每小题1分,共10分)

1、以下叙述中正确的是O

A、在程序的一行上可以出现多个有效的预处理命令行

B、使用带参的宏时,参数的类型应与宏定义时的一致

C、宏替换不占用运行时间,只占编译时间

D、在以下定义中CR是称为〃宏名〃的标识符#defineCR045

2、以下叙述中错误的是一

A、用户所定义的标识符允许使用关键字

B、用户所定义的标识符应尽量做到〃见名识意〃

C、用户所定义的标识符中,大、小写字母代表不同标识

D、用户所定义的标识符必须以字母或下划线开头

3、以下关于常量的叙述也不正确的是o

A、常量可以表示一个具体的、不变的值

B、常量是指固定大变的值

C、不同类型的常登书写格式不同

D、不同类型的常量书写格式相同

4、以下不正确的叙述是o

A、在C程序中所月的变量必须先定义后使用

B、程序中,APH和aph是两个不同的变量

C、若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b

中的值不变

D、当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能

输入实型值

5、若采用双符号位判断溢出当结果的符号位为11时,表示(13)o

A、结果为正溢出

B、结果正,无溢

C、结果负溢出

D、结果为负,无溢出

6、流程图里面的开始和结束用()表示。

A、矩形

B、圆

C、椭圆

D、菱形

7、已知各变量的类型说明如下,则以下不符合c语言语法的表达式是:。int

k,a,b;unsignedlongw=5;doublex=l.422;

A、x%(-3)

B、w+=-2

C、k=(a=2,b=3,a+b)

D、a+=a=+(b=4)*(a=3)

8、下列条件语句中输出结果与其他语句不同的是o

A、if(a)prinL£(“%d\n”,x);

elseprintf(u%d\nw,y);

if(a==0)printf(w%d\nw,y);

elseprintf("%d\n”,x);

C、if(a!=0)printf("%d\n",x);

elseprintf("%d\n",y);

D、if(a=0)printf(<<%d\nw,x);

elseprintf("%d\n",y);

9、下列选项中,不合法的变量是o

intx=3;

charch='c';

C、floatf;

D、casec;

10、c语言提供的合法的数据类型关键字是.

A^Double

B、short

C、integer

DsChar

11>若有定义语句:inta=10;doubleb=3.14;,则表达式'a'+a+b值得类型

是o

A、char

B、int

C>double

D、float

12、与十六进制数200等值得十进制数为o

A、256

B、512

C、1024

D、2048

13、一个字长为8位的无符号二进制整数能表示的十进制数值范围是

A、0-256

B、0-255

C、1-256

D、1-255

14、执行下列语句后,a和b的值分别为o(注:a的accii码值为:97,a

的accii码值为:65)inta,b;a=l+fa;b=2+7%-4-,a*;

A、-63,-64

B、98,-60

C、1,-60

D、79,78

15、有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10),

*p=a;则数值为9的表达式是o

A、*p+9

B、*(p+8)

C^*p+二9

D、p+8

16、设inta=0;错误的语句是________。

A、++a;

a++;

C、a二一a;

D、(-++a);

17、下列两条语句〃

intcl=l,c2=2,c3;

c3=l.0/c2*cl;

〃执行后变量c3的值是。

A、0

B、0.5

C、1

D、2

18、下列对变量的引用中,错误的是o

A、inia;inL&p-a;

chara;char&p=a;

C>inta;int&p;p=a;

D、floata;float&p=a;

19、若intx,*p;则正确的赋值表达式是—。

A、p=&x

p二x;

C、*p=&x;

D、*p=*x

20、若有以下定义,则正确的语句是

uniondata

(

inti;

charc;

floatf;

}a;

intn;

A、c=5;

B、a={

2/a,1.2);

C、printf(,z%d\n,z,a);

D、n二a;

二、控制结构(每小题1分,共10分)

1、c语言中下面哪个天是条件语句?

A、if

ifelse

C、NSLog

D、switch

2、有以下程序

main()

(

inti=l,j=l,k=2;

if((j++IIk++)&&i++)

printf("%d,%d,%d\n,z,i,j,k);

)

执行后输出结果是。

A、1,1,2

B、2,2,1

C、2,2,2

D、2,2,3

3、switch语句不能用于下列哪种数据类型()

A、double

B、byte

C、short

Dschar

4、若a的值为3时,下列程序段被执行后,c的值是

intc=1;

if(a>0)if(a>3)c=2;

elsec=3;

elsec=4;

A、1

B、2

C、3

D、4

5、选择出合法的if语句(设intx,a,b,c;)。

A、if(a=b)x++;

B、if(a=<b)x++;

C^if(a<>b)x++;

D、if(a=>b)x++;

6、执行以下程序段后,w的值为________。

intw=,a",x=14,y=15:w=((x||y)&&(wV'a'));

A、-1

B、NULL

C、1

D、0

7、与y=(x>0?l:x<0?-l:0);的功能相同的if语句是

A、if(x>0)y=l;

elseif(x<0)y=-l;

elsey=0;

B、if(x)

if(x>0)y=l;

elseif(x<0)y=-l;

elsey=0;

C、y—1

if(x)

if(x>0)y=l;

elseif(x-0)y=0;

elsey=-l;

D、y=0;

if(x>=0)

if(x>O)y=l;

elsey=-l;

8、下列程序的输出结果是o

main()

(

inta=0,i;

for(i=l;i<5;i+~)

(

switch(i)

(

case0:case3:a+=l;

case1;

case2:a+=2;

default:a+=3;

)

}

printf(〃%d〃,a):

)

A、19

B、1

C、6

D、8

9、有以下程序

#include<stdio.h>

main()

(

inta=5,b=4,c=3,d=2;

if(a>b>c)

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

elseif((c-1>=d)==1)

printf(〃%d\n〃,d+1);

else

printf(〃%d\n”,d+2);

)

执行后输出的结果是。

A、2

B、3

C、4

D、编译时有错,无结果

10、与〃y=(x>0?l:x<0?-l:0)〃;的功能相同的if语句是

A、if(x>0)y=l;

if(x)

elseif(x>0)y=l;

elsey=0;elseif(x%0)y=-l;

elsey=0;

C、y--l

D、y二0;

if(x)if(x>=0)

if(x>O)y=l;if(xi>=0)y=l;

elseif(x~0)y=0;elsey=-l;

elsey=-l;

三、循环结构(每小题1分,共10分)

1、c语言的跳转语句中,对于break和continue说法正确的是。

A、break语句只应用于循环体中

B、continue语句只应用于循环体中

C^break是无条件跳转语句,continue不是。

D、break和continue的跳转范围不够明确,容易产生问题

2、在循环结构中,可以使得同一组语句一次也不执行.

A、当型循环

B、直到型循环

C、都不能实现

D、do-while语句

3、下面描述中,符合结构化程序设计风格的是_______o

A、使用顺序、选择和重复(循环)3种基本控制结构表示程序的控制逻辑

B、模块只有一个入口,可以有多个出口

C、注重提高程序的执行效率

D、不使用GOTO语句

4、有以下程序:

main()

ints=0.n;

for(n=0;n<3;n~+)

switch(s)

case0;

easel:s-=l;

case2:s+=2;

break;

case3:s+=3;

defaulL:s+-4;

}

printf("%d,"s);

程序运行后的输出结果是o

A、1,2,4,

B、1,3,6,

C、3,10,14,

D、3,6,10,

5、c语言中while和do-while循环的主要区别是。

A、do-while的循环体至少无条件执行一次

B、while的循环控制条件比do-while的循环控制条件严格

C^do-while允许从外部转到循环体内

D、do-while的循环体不能是复合语句

6、以下for语句中不是死循环的是o

A、for(inti=0;i<l;i++);

B、for(inti=0;i++);

C、for(inti=l;i>0;++i);

D、for(;;);

7、for循环的循环次数o

A、通常是确定的,但也可以不确定

B、通常不确定,但也可以确定

C、是不确定的

D、是确定的

8、若变量已正确定义,以下while循环正常结束时,累加到pi的最后一项item

的值满足0

A、item的绝对值小于0.0001

B、item的绝对值大于0.0001

C、item的绝对值大于等于0.0001

D^item的绝对值小于等于0.0001

9、有以下程序

#include<stdio.h>

main()

(

inti,n;

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

(

n-rand()%5;

switch(n)

(

case1:

case3:

printf(〃%d\n〃,n);

break;

case2:

case4:

printf(〃%d\n〃,n);

continue;

case0:

exit(0);

)

printfn);

}

}

以下关于程序执行情况的叙述,正确的是O

A、for循环语句固定执行8次

B、当产生的随机数n为4时结束循环操作

C、当产生的随机数n为1和2时不做任何操作

D、当产生的随机数n为0时结束程序运行

10、以下描述中正确的是________O

A、由于d。-while循环中循环体语句只能是一条可执行语句,所以循环体

内不能使用复合语句

B、do-while循环由do开始,用while结束,在while(表达式)后面不能

写分号

C、在dozhile循环体中,是先执行一次循环,再进行判断

D、do-while循环中,根据情况可以省略while

四、数组/指针数组(每小题1分,共10分)

1、有以下程序:

main()

(

intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}),ij;

for(i=0;i<4;i+-)

(

for(>0;j<=i;j++)printf(飞4c〃,');

for(j=______;j<4;j++)printf(〃%4d”,num[i][j]);

printf(〃\n〃:;

}

)

若要按以下形式输出数组右上半三角1234678111216则在程序下划

线处应填入的是。

A、i-1

B、i

C、i+1

D、4-i

2、以下函数func()的功能是:使具有n个元素的一维数组b的每个元素的

值都增加2,划线处应填入_____.

func(intb[],intnJ

int;

for(i=0;i<n;i+-)

}

A、b[i++]

B、b[i]++

C、b[i+=2]

D、b[i]+=2

3、以下关于数组的描述正确的是

A、数组的大小是同定的,但可以有不同的类型的数组元素c

B、数组的大小是可变的,但所有数组元素的类型必须相同。

C、数组的大小是同定的,但所有数组元素的类型必须相同。

D、数组的大小是可变的,但可以有不同的类型的数组元素。

4、若有定义语句:intm[]=(5,4,3,2,1},i=4;则下面对m数组元素的引用中

错误的是—

A、ni[-i]

m[2*2]

C、

D、

5、若有说明:inta[10];则对a数组元素的正确引用是()。

A、a[10]

B、a[3,5]

C、a(5)

D、a[10-10]

6、c语言中数组下标的下限是o

A、1

B、0

C、视具体情况而定

D、无固定下限

7、定义如下变量和数组:inti,x[3][3]={1,2,3,4,5,6,7,8,9

};则下面语句for(i=0;i<3;i++)printf(〃机1〃,乂[口[2-口);的输出结果是

A、159

B、147

C、357

D、369

8、下列定义数组的语句中,正确的是o

A^intN=10;

B、#defineN10

intxFNl:intxFNl;

C、intx[0..10];

Dsintx口;

9、设有如下定义:char*aa设]={"abed","abed");则以下说法中正确的是

A、aa数组成元素的值分别是〃abed〃和ABCD〃

B、aa是指针变量,它指向含有两个数组元素的字符型一维数组

C、aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

D、a社数组的两个元素中各自存放了字符‘I和'A'的地址

10、下列选项中合法的数组定义是O

A、inta□二〃string”;

B、inta[5]={

0,1,2,3,4,5);

C、chara=〃sting”;

D、chara口二{

0,1,2,3,4)

五、字符串/字符串指针(每小题1分,共10分)

1、以下选项中,合法的C语言常量是。

A、2XY

B、HELLO'

C、〃\0.\0

D、1.0

2、判断字符串a和b是否相等,应当使用。

A、if(a=b)

B、if(a=b)

C、if(strcmp(a,b))

D^if(strcmp(a,b)==0)

3、以下程序运行后的输出结果是

main()

(

chars口:”ABCD〃,*p;

for(p=s+l;p<s+4;p++)printf(,,%s\n,,»p);

)

A、ABCD

BCD

CD

D

B、A

B

C

D

C、B

C

D

D、BCD

CD

D

4、下列字符串中,不可以用作c标识符的是

A、y_2006

B、_FEST_H

C、Return

D、switch

5、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是

________0

A、大写字母

B、连接符

C、数字字符

D、下划线

6、以下正确的字符串常量是_______。

A、〃\\\〃

B、'abc,

C、OlympicGames

D、〃〃

7、设有以下语句,若0。<4,下列选项中对字符串的非法引用是()。

charstr[4][2]={"aaa","bbb","ccc",〃ddd"},*strp[4];

intj;

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

strp[j]=str[j];

A^strp

B、str[k]

C、strp[k]

*strp

8、下面关于编译预处理命令,正确的是。

A、^definecharCHAR

B、SDefineE0.0000034

C、##defineFALSE0

D、^defineDIM26

9、下列选项中,能够满足〃若字符串si等于字符串s2,则执行st〃要求的是

A^if(strcmp(s2,si)==0)ST;

B、if(sl==s2)ST;

C、if(slrcpy(s1,s2)―1)ST;

D、if(sl-s2=0)ST;

10、下列数据中属于〃字符串常量〃的是

A、ABC

B、〃ABC〃

C、'ABC'

D、'A'

六、函数/函数指针(每小题1分,共10分)

1、以下正确的说法是O

A、定义函数时,形参的类型说明可以放在函数体内

B、return后边的值不能为表达式

C、如果函数值的类型与返回值类型不一致,以函数值类型为准

D、如果形参与实参类型不一致,以实参类型为准

2、在c语言中,函数的数据类型是指()

A、函数返回值的数据类型

B、函数形参的数据类型

C、调用该函数时的实参的数据类型

D、任意指定的数据类型

3、结构化程序设计所规定的三种基本控制结构是o

A、输入、输出、处理

B、顺序结构、选择结构、循环结构

C、for、while、switch

D、主程序、子程序、函数

4、以下关于程序中函数的定义、调用和声明的叙述中,正确的是_____o

A、函数的定义必须放在该函数的调用之前

B、函数的声明必须放在该函数的调用之前

C、函数的定义必须放在该函数的声明之前

D、函数的声明必须放在该函数的定义之前

5、以下与库函数slrcpy(chtti沐pl,chai*p2)功能不等的程序段是

A、strcpyl(char*pl,char*p2){

while((*pl++=*p2-+)!='\0');

)

B、strcpy2(char*pl,char*p2){

while((*pl=*p2)!='\0'){

pl++;p2++;

C^strcp)^3(char*pl,char*p2){

while(*pl++=*p2+-);

}

strcpy4(char*pl,char*p2){

while(*p2)*pl++=*p2++;

}

6、以下说法错误的是________o

A、由三种基本结构组成的结构化程序不能解决过于复杂的问题

B、由三种基本结构组成的结构化程序能解决些简单的问题

C、由三种基本结构组成的结构化程序能解决递归问题

D、由三种基本结构组成的结构化程序能解决数学上有解析解的问题

7、有如下函数定义;

voidfunc(inta,int&b)

(

a++;

b++;

)

若执行代码段:intx=0,y=l;

func(x,y);

则变量x和y的值分别是o

A、0和1

B、1和1

C、0和2

D、1和2

8、以下说法中正确的是________o

A、C语言程序总是从第一个的函数开始执行

B、在C语言程序中,要调用的函数必须在mam()函数中定义

C、C语言程序总是从main。函数开始执行

D、C语言程序中的main()函数必须放在程序的开始部分

9、请阅读程序:

#include<math.h>

#include<stdio.h>

main()

(

floata,b,c;

scanf(/z%f%f,z,&a,&b);

c=a/b;

while(l){

if(fabs(c)>1.6){

a=b;

b=c;

c=a/b;

)

elsebreak;

)

printf("%f\n',b);

)

若运行时从键盘上输入3.62.4〈回车,,则输出结果是o

A、1.500000

B、1.600000

C、2.000000

D、2.400000

10、对函数inimax(inLa,inib-O,inLc-O,iriL(1-0,inLe-O);下列调月方

式正确的是。

A、intm=max(10,11,12,13,14);

B、intm=max(10,,12,13,14);

C^intm=max(10,IL,13,14);

D、intm=max(10,11,12,,14);

七、指针(每小题1分,共10分)

1、函数的值通过return语句返回,下面关于return语句的形式描述错误的是

A、return表达式;

B、return(表达式);

C、一个return语句可以返回多个函数值

D、一个return语句只能返回一个函数值

2^表达式sizeof(double)是。

A、函数调用

B、double型表达式

Csint型表达式

D、非法表达式

3、下列字符数组长度为5的是o

A、chara[10]={'h','a','b','c','d'};

B、charb[]={'h',‘a口'b','e','d',

C>charc[]={,h*,'a','b','c','d'};

D、chard[6]={'h','a','b','c',''0'};

4、x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是

A、INPUTx、v、z;

B、scanf(〃%d%d%d〃,&x,&y,&z);

C^scanf(〃%d%d%d〃,x,y,z);

D、read(〃%d%d%d〃,&x,&y,&z);

5、当全局变量与局部变量重名时,那么在调用时;)

A、局部变量会被屏蔽

B、全局变量会被屏蔽

C、都不会调用,系统会报错

D、会调用两次,元调用局部变量,再调用全局变量

6、设有定义:chars[81];inti=0;以下不能将一行(不超过80个字符)带有

空格的字符串正确读入的语句或语句组是o

A、gets(s);

while((s[i++]=getchar())!='\n');s[i]=<\0,;

C、scanf(,s);

D、do{scanf(“%c",&s[i]);}while(s[i++]!=<\n,);s[i]='\0;

7、字符串指针变量中存入的是o

A、字符串

B、字符串的首地址

C、第一个字符

D、字符串变量

8、下列对字符数组进行初始化的语句正确的是o

A、chara口="Hello”;

B、chara□□=

C^chara[5]="Hello”;

D、chara[2]"World"};p

9、若有说明:int*p,n=5,n:以下正确的程序段是。

A、p=&n;scanf(〃机T,&p);

p=&n;scanf*p)

C、scanf(〃/d〃,&p;*p=6);

D、p;&n;*p=m;

10、下列说法中错误的是。

A、一个数组只允许存储同种类型的变量

B、如果在对数组进行初始化时,给定的数据元素个数比数组元素个数少时,

多余的数组元素会被自动初始化为最后一个给定元素的值

C、数组的名称其实是数组在内存中的首地址

D、当数组名作为参数被传递给某个函数时,原数组中的元素的值可能被修

八、结构体(每小题1分,共10分)

1、下面赋值表达式不正确的是.

structstudent

(

longnum;

charname[20];

}stl,*p=&stl,st2={101,"tom'}:

A、stl=st2

B、p->name=st2.name

C、p->num=st2.num

D、*p=st2

2、下列程序的输出结果是o

structstu

(

charnum[10];

floatscore[3];

)

f

intmain()

(

structstus[3]=

{{"20021〃,90,95,85},「20022〃,95,80,75},{"20023",100,95,90}};

structstu*p=s;

inti;

floatsum=0;

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

(

sum=sum+p->score[i];

}

printf(〃%6.2f”,sum):

return0;

)

A、260.00

B、270.00

C、280.00

D、285.00

3、设有以下说明语句structstu

inta;

floatb;

}

stutype;

则下面的叙述不正确的是。

A、struct是结构体类型的关键字

B、structstu是用户定义的结构体类型

C、stutype是用户定义的结构体类型名

D、a和b都是结构体成员名

4、有以下定义和语句:

structstudents{

intnum;

charname[20];

charc;

struct(

intgrade1;

intgrade2;

}s;

};

structstudentsw,*pw;

*pw=w;

下列赋值语句不正确的是o

A、num=1002:

B、w.gradel=85;

C^pw->num=1002;

Dsw.s.grade2=85;

5、设有下面的定义:

structst

(

inta;

floatb;

}d;

int*p;

要使P指向结构变量d中的a成员,正确的赋值语句是

A、*p=d.a;

B、p=&a;

C、p=d.a;

D、p—&d.a;

6、以下关于逻辑运算符两侧运算对象的叙述中正确的是o

A、可以是任意合法的表达式

B、只能是整数0或非0整数

C、可以是结构体类型的数据

D、只能是整数0或1

7、有以下程序

ttinclude<stdio.h>

main()

(

structstu

(

charname[9];

charsex;

doublescore[2];

)

t

structstua={"zhao〃,'m',85.0,90.0},b={〃qian〃,'f',95.0,92.0};

b=a;

printf(〃%s,%c,%2.Of,%2.0f\nz,,b.name,b.sex,b.score[0],b.score[1]);

}

程序的运行结果是O

A、Qian,f,95,92

B、Qian,m,85,90

C、Zhao,f,95,92

D、Zhao,m,85,90

8、下列描述说明正确的是________o

A、定义结构体时,它的每个成员的数据类型可以不同

B、不同结构体的成员名不能相同

C、结构体定义时,其成员的数据类型不能是结构体本身

D、结构体定义时各成员项之间可用分号也可用逗号隔开

9、设有以下说明语句:

typedefstructstu

(

inta;

floatb;

}stutype;

则下面叙述中错误的是________。

A、struct是结构类型的关键字

B、structstu是用户定义的结构类型

C、a和b都是结构成员名

D、stutype是用户定义的结构体变量名

10、以下程序的运行结果是

#include,,stdio.h〃

main()

(

sLrucLdale{

intyear,month,day;

}today;

printfsizeof(structdate));

)

A、6

B、8

C、10

D、12

九、程序题(每小题1分,共10分)

1、有以下程序

#include<stdio.h>

voidfun(char*c,intd)

(

*c二*c+1;

d=d+l;

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

}

main()

(

charb='a',a=Ja';

fun(&b,a);

printf("%c,%c\n",b,a);

)

程序运行后的输出结果是o

A^b,B,b,A

B、b,B,B,A

C^a,B,B,a

D、a,B,a,B

2、下列程序执行后的输出结果是o

main()

(

intx='f';printf'A'+(x-'a'+1);;

)

A、G

B、H

C、I

D、J

3、若有以下定义和语句,则输出结果是。

int**pp,*p,a=10,b=20;pp=&p;p=&a;p;&b;printf(,,%d\n,/,*p,**pp);

A、10,20

B、10,10

C、20,10

D、20,20

4、若有定义:inta,b,c;以下程序段的输出结果是a=l1;b=3;c=0;

printf(〃%d\n〃,c=(a/b,a%b));

A、2

B、0

C、3

D、1

5、下列程序的输出结果是o

intaF51={2,4,6,8,10},*D,**k:

P=a;

k=&p;

printf*(p++));

printf(〃%d\n〃,**k);

A、44

B、22

C、24

D、46

6、以下程序输出的结果是.

ttinclude<stdio.h>

voidmain()

(

inta[]={1,2,3,4,5),i,j,s=0;

for(i=0;i<5;i+-)s=s*10+a[i];

/,,,

printf(s=%d\n>s);

}

A、s=12345

s=l2345

C、s=54321

D、s=54321

7、下述程序的输出结果是

#include<sLdio.h>

voidmain(){

chara=l,b=2;

charc=a"b<<2;

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

)

A、9

B、10

C、12

D、2

8、以下程序的输出结果为

#include<stdio.h>

intmain()

{

inti=l,j=l;

printf(,z%d%d\nz/,i,j++):

)

A、11

B、12

C、21

D、22

9、如下程序,输出结果为

voidmain()

(

floata=l;

printfa;;

printf("%0.2f\n",a);

printf(,z%3.lf\n*,a);

)

A、l\nl.OO\nl.O

B、l.OOOOOO\nl.OO\nl.O

C、LOOOOOO\nLOO\n【空格】1.00

D、l\nl\nl

10、有如下程序

main()

(

inta=7,b=5,c=9:

if(a<b)if(b<0)c=0;

elsec++;

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

)

该程序的输出结果是o

A、0

B、10

C、9

D、7

参考答案

一、理论基础

1、C

2、A

3、D

【解析】在VisualFoxPro中,常量用以表示一个具体的、不变的值。常量共

有6种类型,分别是:字符型、货币型、日期型、日期时间型、逻辑型、数值

型,不同类型的常量书写格式是不同的。

4、D

5、D

【解析】本题考查定点数加、减法溢出问题。

定点数加、减时,若采用双符号位法,即采用两个符号位,如果两个符号位

相同,则没有溢出;若不同,则表示出现溢出,而第一符号位才是真正的符

号。即两个符号位的高位为1表示负溢出,而高位为0、低位为1则表示正溢

出。

题目中给出的结果的符号位为11,根据上面的分析\第一个符号位才是真正

的符号,那么此数是负数,但两个符号位相同,表示没有溢出。

6、C

7、A

8、D

9、D

10、B

11、C

12、B

13、B

【解析】无符号数,即自然数。8位无符号的二进制数的范围是00000000〜

11111111,转换成十进制就是0~255。

14、B

15、B

16、D

17、A

18、B

19、A

20、C

二、控制结构

1、C

2、C

【解析】首先计算if语句后面的表达式值,先计算运算符&&前面括号里的

“II”运算。在“II”运算中先计算j++,值为:(j的值为2),为真,后面的

k++将不再计算,k的值依旧为2。计算&&后面的表达式i++,值为l(i的值变

为2)。整个表达式的值为真,所以执行后面的输出语句,最后输出的i、j和k

的值为2、2和2。

3、A

【解析】swish语句中表达式expression只能返回这儿种类型的值:int>

byte、short和ch”。如果比较的数据类型是double型,则不能使用switch

结构。

4、C

【解析】此题主要考查if-else的使用,当if语句中的条件为真时执行后的

语句,并跳过else执行下面的语句;当条件为假时执行else后的语句。

5、A

【解析】A虽然是赋值语句,但是在逻辑运算中自动将赋值语句的结果当作逻

辑值,方法是,如果赋值语句的结果是非零值则当作逻辑真,否则当作逻辑

假。C语言中关系运算符有〈(小于)、》(大于)、>=(大于等于)、<二(小于等

于)、二二(等于)、!二(不等于)等六种,可见其他的条件表达式中的关系符写错

了。

6、C

【解析】字符变量w的初值为字符'A',其ASCII码值为65,字符'a'的ASCII

码值为97,所以关系表达式wV'a'的值为1;变量x=14,变量y=15,x||y为

或,x、y均为真,所以x||y的结果1。因而逻辑表达式(x||y)&&(wV'a')的值

为lo

7、A

8、A

9、B

【解析】第二个if语句中的表达式"cT>=d”的值为逻辑值1,所以该条件

成立。

10、B

三、循环结构

1、B

【解析】break语句和continue语句都是C的跳转语句。break语句又称为跳

出语句,它可以用在循环语句和switch语句中。在switch语句中,break用

来使执行流程跳出switch语句。在循环语句中,break语句用来使执行流无条

件跳出本层循环体。continue语句又称为继续语句,它仅用在循环语句中。

它的功能是:结束本次循环,接着进行下一次是否执行循环的条件判定。

2、A

3、A

【解析】应该选择只有一个入口和一个出口的模夬,故B选项错误;首先要保

证程序正确,然后才要求提高效率,故C选项错误:严格控制使用got。语句,

必要时可以使用,故D选项错误。

4、C

5、A

6、A

【解析】考查循环语句for的使用。

[解题要点]循环的一般格式为(初始化部分;终止条件判断部分;迭代

部分){循环体;}说明如下:for循环开始时,首先执行初始化操作,然后判断

终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。

完成一次循环后,重新判断终止条件。

[错解分析]在for语句中,如果省略了终止条件判断部分,开且在语句中没有

break,或者是终止条件判断部分始终没有终止,都将出现死循环。

[考点链接]for循环语句可由while循环语句来代替。

7、A

【解析】for循环通常用于循环次数确定的情况,但也可以根据循环结束条件

完成循环次数不确定的情况。

8、A

9、D

【解析】阅读本程序匕知,当产生随机数为4时,会继续执行循环;当产生随

机数为1和2时,会顺势执行case1或case2下面的语句,进而输出结果;

当产生随机数为()时,正常结束程序的运行。for循环语句随着产生的随机数

的不同,执行的次数也不相同。

10、C

【解析】dowhile语句的一般形式为:do循环体语句while(表达式);,其中

循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分

号作为语句的结束,在do-while循环中,不可以省略while。

四、数组/指针数组

1、B

【解析】本题程序为二重循环,外循环控制输出数据的行数,内循环控制输出

数据的列数。从本题输出的形式来看,程序要求输出的是4行4歹4。

2、D

3、C

4、C

5、D

6、B

7、C

8、B

9、D

10>A

五、字符串/字符串指针

1、D

【解析】C语言常量包含整型常量,实型常量,字符常量,字符串常量。其中字符

常量是用单引号括起来的单个字符,选项B只有半边单引号;字符串常量使用双

引号括起来的多个字符,选项只有双引号的半边。整型常量包含:十进制,八进制

和I六进制。选项A中X和Y不是有效字符。本题答案为D选项。

2、D

3、D

【解析】本题考查指向字符串指针的运算方法。执行p=s+1后,指针变量p就

指向字符串中的第二个字符B,然后输出字符串〃BCD〃并换行;继续执行循环语

句,指针变量P指向下一个字符c,输出字符串〃CD〃,最后一次循环,p指向字

符〃D〃,输出字符串〃D"。

4、D

【解析】在C中,变量标识符必须是以大小写字母、下画线开始,由数字或者

字母下画线等组成的一个字符串,其中C++关键字不能作为标识符,不能包含

-、+、*、/等运算符号。C++变量区分大小写,所以Retrun不是关键字,而是

一个合法变量;swith为关键字,所以不能定义为标示符。

5、B

【解析】C语言的标识符要符合以下规定:

①标识符是个以字母或下划线开头的,由字母、数字、下划线组成的字符

串:

②标识符不能与任意一个关键字同名:

③标识符中的字母区分大小写。

故本题应该选择Bo

6、D

7、A

8、D

【解析】无参宏定义的一般格式用define标识符语言符号字符串,其

中:“define”为宏定义命令;”标识符为所定义的宏名,通常用大写字母表示,

以便于与变量区别;“语言符号字符串”可以是常数、表达式、格式串(格式串

是用双引号括起来的字符串)等,选项ABC错误,选项D正确;本题答案为

Do

9、A

10、B

六、函数/函数指针

1、C

【解析】选项A)中定义函数时,形参的类型说明应该放在形参表列内说明。老

版本C语言中,对形参类型的声明是放在函数定义的第2行,也就是不在第1

行的括号内指定形参的类型,而在括号外单独指定。选项B)中return后面的

值可以是一个表达式。选项D)中实参与形参的类型应相同或赋值兼容。如昊实

参为整型而形参为实型,或者相反,则按不同类型数值的赋值规则进行转换,

以形参类型为准。

2、A

3、B

【解析】结构化程序有三种基本结构组成,分别是顺序结构、选择结构和循环

结构。

4、B

【解析】在程序中,函数定义是指对函数的完整定义,包括函数首部和I函数

体,函数调用是指对所定义函数的使用,一个函数只有被调用才能得到执行。

函数声明是指函数的定义在后面I而前面需要对它进行调用,这样就需要预先

进行声明,以便编洋程序检查调用的合法性。一般来说,函数的声明只是函数

首部加上分号即可。函数声明不是必需的,若函数调用在函数定义之后,则无

须声明。

5、D

6、A

【解析】顺序结构、选择结构、循环结构是三种基本结构,由三种基本结构所构

成的程序称为结构化程序,由三种基本结构组成的算法可以解决任何复杂的问

题,选项A错误,本题答案Ao

7、C

【解析】本题考查的知识点是:函数参数的传递方式。C的默认参数传递方式

是传值,即将实参值的副本传递(拷贝)给被调用函数的形参。如果需要传地

址,可通过传递指针、引用或数组类型的参数来实现。传值时,对形参的改变

不会影响到实参;而传地址,则会同时改变实参。本题中形参a是普通参数,

即传值调用,函数中走a增1不会影响到实参x的值;而形参b是引用,即传

址调用,函数中对b增1同时也改变了实参y的值(y也增1了)。故最终结果

是0和2,应该选择C。

8、C

9、D

【解析】本题考查用break语句终止循环。程序中定义了两个实型变量a、b,

并给scanf()函数赋值,键盘输入3.62.4〈回车〉后,a=3.6,b=2.4,

c=a/b=3.6/2.4=1.5,因为c=1.5VL6,退出循环,输出b的原值。表面上

看,whiled)条件恒为真,将会产生死循环,但利用break语句可以终止循

环。

10、A

七、指针

1、C

【解析】return语句口的表达式的值就是所求的函数值,此表达式值的类型必

须与函数首部所说明的类型一致。如果类型不一致,则以函数值的类型为准,

由系统自动进行转换。一个return语句只能返回一个值。

2、C

3、C

【解析】注意是字符数组的长度,不是字符串的长度。

4、B

【解析】考查格式输入函数scanf的使用。

[解题要点]scanf函数的一般格式是:

scanf(格式控制,地址表列)

该格式中,地址表列中应是变量地址,而不是变量名。

[考点链接]调用putchar和getchar函输出和输入字符。

5、B

【解析】当局部变量与全局变量重名时,全局变量会被屏蔽。

6、C

7、B

8、A

【解析】本题考查对字符数组的初始化。A选项口,数组a在定义后紧跟初始

化的情况下可省略数组长度,其最终数组长度由所赋字符串常量的长度给定。A

选项正确。B选项中,a是一个二维数组,二维数组也能在定义时被初始

化.如果对全部元素都赋初值,则定义数组时第一维的大小可以忽略,但第二

维的大小不能省略。故B选项错误。C选项和D选项都忽略了字符串的大G要

比字符串中的字符数多1这一点,造成了数组的越界。

9、D

【解析】“&”是求址运算符,是指针变量说明符。选项A),B)应改为

scanf(〃%d〃,p);选项C)中指针变量p未指向一确定的内存单元,不能为其

赋值,这样做很危险,建议不使用。

10、B

八、结构体

1、B

2、B

3、C

4、B

【解析】本题主要考查的是结构体变量的嵌套定义,也就是说一个结构体变量

也可以是一个结构体。在本题中student这个结陶体中包含了结构体s。所以

对结构体变量w中grade1成员的引用是w.s.grade1或w->s->gradelo

5、D

【解析】本题主要考查按结构数组元素方式引用结构成员。结构体变量的成员

引用方法有3种:①结构体变量名,成员名;②韦针变量名成员名;③;*指

针变量名).成员名。因为p是指针变量,所以应该将地址值赋给p。

6、A

【解析】C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以

是任意合法的表达式,所以选择A

7、D

8、A

9、C

10、A

【解析】在解答本题时应该考虑两个问题:结构体变量的长度及sizcof。求字

节数的运算符。结构体变量的长度是其内部成员总长度之和,本题中,struct

date中包含year,month,day三个整型变量。一个整型变量所占的字节数为

2o

九、程序题

1、A

2、A

3、D

4、A

5、C

6、A

7、A

【解析】本题主要考查C语言最基本的算术运算“左移(VV)”和“异或

“左移”或“右移”运算表达式的一般形式为:xVVn或x>>n。"左移

«<)"运算的规则是将x的二进制位全部向左移动n位,将左边移动的高位

舍弃,右边空出的位补0:“右移(>>)”运算的规则是将x的二进制位全部

向右移动n位,将右边移动的高位舍弃,左边高位空出要根据原来符号位的情

况进行补充,对无符号数则补0,对有符号数,若为正数则补0,若为负数则补

lo

“异或”运算是当两个运算量的相应位相同时结果为0,不相同时结果为1。

b=2的二进制为(00000010)bVV2后为00001000,a=l的二进制为00000001,

所以c=£bVV2为00001001,转化为十进制后为9o

8、A

9、B

10、C

C语言选择题(二)

(总分100分,考试时长90分钟)

一、理论基础(每小题1分,共10分)

1、c语言中,int型数据在内存中的存储形式是_______o

A、ASCH码

B、补码

C、反码

D、原码

2、以下表达式中,其值不等于数值3的是。

A、0+'3'

B、

C、

D、‘d'-a'

3、以下叙述中不正确的是o

A、一个好的程序应该有详尽的注释

B、在C程序中,赋值运算符的优先级最低

C、在C程序中,j++;是一条赋值语句

D、C程序中的#1万111(16和#define均不是C语句

4、已知inta,b;用语句scanf(飞d%d",&a,&b);输入a,b的值时,不能作

为输入数据分隔符的是o

A、,

B、.空格

C、回车

D、Tab键

5、在计算机中,用()位二进制码组成一个字节。

A、8

B、16

C、32

D、64.

6、若变量a是int类型,并执行了语句:a='a'+:.6;,则正确的叙述是

A、a的值是字符C

B、a的值是浮点型

C、不允许字符型和浮点型相加

D、a的值是字符飞'的ASCH值加上1。

7、关于指针概念说法不正确的是o

A、一个指针变量只能指向同一类型变量

B、一个变量的地址称为该变量的指针

C、只有同一类型变量的地址才能放到指向该类型变量的指针变量之中

D、指针变量可以曰整数赋,不能用浮点赋

8、下列关于实型变量书写正确的是o

A、E3

B、2e0.3

C、1.2e3

D、1.2E0.3

9、59,73,83,94,()

A、107

B、101

C、105

D、113

10、执行下列语句后,1和n的值为()inti=10;intn=i++%5;

A、10,0

B、10,1

C、11,0

D、11,1

11、若有以下数组说明,则i=10;a[a[i]]元素数值是。

inta[12]={l,4,7,10,2,5,8,11,3,6,9,12};

A、10

B、9

C、6

D、5

12、C语言中,逻辑〃真〃等价于

A、大于零的数

B、非零的数

C、大于零的整数

D、非零的整数

13、inta=10;下列哪个选项的值不是20?

A、a<<1

B、a>>l

C、a*2

D、a+10

14、若要对a进行++运算,则a应具有下面说明

A、inta[3][2];

B、char*a[]“12〃,〃ab〃;

C^char(*a)[3];

D、intb[10],*a=b;

15、若有以下定义和语句uniondata

(

inti;

charc;

floatr;

}x;

inty;

则以下语句正确的是。

A^x=10.5;

B、x.C=101:

C、Y二x;

D、printf(〃%d\n",x);

16、若有代数式|x3+lgx|,则正确的c语言表达式是o

fabs(x*3+log10(x))

abs(pow(x,3)+loglO(x))

C^abs(pow(x,3)0)+logl0(x))

D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论