C语言选择题参考答案1.docx

上传人:b****4 文档编号:3461611 上传时间:2022-11-23 格式:DOCX 页数:29 大小:30.35KB
下载 相关 举报
C语言选择题参考答案1.docx_第1页
第1页 / 共29页
C语言选择题参考答案1.docx_第2页
第2页 / 共29页
C语言选择题参考答案1.docx_第3页
第3页 / 共29页
C语言选择题参考答案1.docx_第4页
第4页 / 共29页
C语言选择题参考答案1.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C语言选择题参考答案1.docx

《C语言选择题参考答案1.docx》由会员分享,可在线阅读,更多相关《C语言选择题参考答案1.docx(29页珍藏版)》请在冰豆网上搜索。

C语言选择题参考答案1.docx

C语言选择题参考答案1

1、C语言中下列叙述正确的是______。

不能使用do-while语句构成循环

do-while语句构成的循环,必须用break语句才能退出

do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

do-while语句构成的循环,当while语句中的表达式值为零时结束循环

D

本题的考查点是do-while语句。

选项A是错误的,C语言支持do-while语句;选项B是错误的,do-while构成的循环,当while语句中的表达式值为零时结束循环,而不是非零;选项C也是错误的。

故本题答案为D。

3、能正确表示a和b同时为正或同时为负的逻辑表达式是______。

(a>=0||b>=0)&&(a<0||b<0)

(a>=0&&b>=0)&&(a<0&&b<0)

(a+b>0)&&(a+b<=0)

a*b>0

D

逻辑表达式是指用逻辑运算符将关系表达式或逻辑量连接起来。

选项A中,表达式表示的是a,b为异号;

选项B中,表达式表示的是0,因为没有满足条件的值;

选项C中,表达式表示的是0,因为没有满足条件的值;

选项D表示的是a和b为同号。

故本题答案为D。

 

5、请选出可用作C语言用户标识符的一组标识符______。

①void②a3_b3③For④2a

define_123_abcDO

WORDIFcasesizeof

1

2

3

4

B

本题的考查点是C语言的标识符。

C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。

①中的void和define都和C语言的关键字重名,不合法;

③中的case和C语言的关键字重名,不合法;

④中的2a是数字打头而且sizeof和C语言的关键字重名,不合法。

故本题答案为B。

6、若x和y都是int型变量,x=100、y=200,且有下面的程序片段

printf("%d",(x,y));

上面程序片段的输出结果是______。

200

100

200,100

输入格式符不够,输出不确定的值

A

本题的考查点是逗号表达式。

在(x,y)中的","是一个特殊的运算符,叫做逗号运算符,它的一般形式为:

表达式1,表达式2,求解过程为:

先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值,(x,y)的值为200,所以输出结果为200。

故本题答案为A。

 

8、若执行下面的程序时从键盘上输入3和4,

main()

{inta,b,s;

scanf("%d%d",&a,&b);

s=a;

if(a

s=s*s;

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

}

则输出是______。

14

16

18

20

B

本题的考查点是给变量赋值。

用户输入的3和4分别赋给了a和b,在if语句进行判断时,因为表达式的值为真,所以b的值将赋给s,s*s=16,最后的打印结果为16。

故本题答案为B。

9、设ch是char型变量,其值为A,且有下面的表达式

ch=(ch>='A'&&ch<='Z')?

(ch+32):

ch

上面表达式的值是______。

A

a

Z

Z

B

本题的考查点是条件运算符。

条件表达式的一般形式为:

表达式1?

表达式2:

表达式3,条件运算符的执行顺序:

先求解表达式1,若非0则求解表达式2,此时表达式2的值就作为整个表达式的值,若表达式1的值为0,则求解表达式3,此时表达式3的值就作为整个表达式的值。

本题中,表达式1的值为1,所以整个表达式的值为表达式(ch+32)的值,即为a。

故本题答案为B。

10、设有以下语句,其中不是对a数组元素的正确引用的是______。

(其中0≤i<10)

inta[10]={0,1,2,3,4,5,6,7,8,9,},*p=a;

a[p-a]

*(&a[i])

p[i]

*(*(a+i))

D

本题的考查点是通过指针引用数组元素。

11、下面程序

main()

{

intx=10,y=3;

printf("%d\n",y=x/y);

}

的输出是______。

0

1

3

不确定的值

C

本题的考查点是除法运算。

x/y的结果约为3.33333,但是由于打印要求为整型,所以自动转换为整型(相当于截取整数位),打印结果为3。

故本题答案为C。

12、下面的程序中______错误(每行程序前面的数字是行号)。

1#include

2main()

3{

4floata[3]={0.0};

5inti;

6for(i=0;i<3;i++)scanf("%d",a[i]);

7for(i=1;i<3;i++)a[0]=a[0]+a[i];

8printf("%f\n",a[0]);

9}

第4行

第6行

第8行

C

本题的考查点是函数scanf()的格式输入。

根据函数scanf()的语法可知,在函数中的参数表列部分,应当是欲赋值变量的内存地址,象第六行这样,将数组元素直接放在参数表列中是无法达到给数组元素赋值的目的。

故本题答案为C。

13、有如下程序

main()

{

intn=9;

while(n>6)

{

n--;

printf("%d",n);

}

}

该程序的输出结果是______。

987

876

8765

9876

B

本题考查点是While语句循环次数的问题。

符合n>6的n只有7,8,9;所以循环次数为3。

选项C、D可以排除。

又因n在输出之前要执行n--,所以输出结果只能是876。

本题答案为B。

14、若变量已正确定义并赋值,下面符合C语言的表达式是______。

a:

=b+1

a=b=c+2

int18.5%3

a=a+7=c+b

B

选项A和C显然错误;对于表达式a=a+7=c+b(答案D),是先执行赋值表达式a+7=c+b,再把这个表达式的值赋给a,显然,表达式a+7=c+b非法,因为赋值表达式的左值不能为常量或表达式。

本题答案为B。

15、有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=1.0/x;

elsey=1.0;

printf("%f\n",y);

}

该程序输出结果是______。

0.000000

0.250000

0.500000

1.000000

C

本题考查的是IF…ELSE语句的使用。

x=2.0,符合第二个IF语句的条件x<10.0,所以执行y=1.0/x语句,即y=1.0/2.0=0.500000。

本题答案为C。

16、有如下程序段

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

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

执行该程序段后,a的值为______。

12

11

10

编译出错

B

执行p=&a;后,p指向整数a,*p即p的目标变量,也就是a;所以a=*p+b等价于a=a+b,可知a的值最终为11。

本题答案为B。

17、有如下程序

main()

{

intn[5]={0,0,0},i,k=2;

for(i=0;i

printf("%d\n",n[k]);

}

该程序的输出结果是______。

不确定的值

2

1

0

D

一维数组和多维数组的定义、初始化和引用

18、有如下定义

structperson{charname[9];intage;};

structpersonclass[10]={"John",17,

"Paul",19,

"Mary",18,

"Adam",16,};

根据上述定义,能输出字母M的语句是______。

printf("%c\n",class[3].name);

printf("%c\n",class[3].name[1]);

printf("%c\n",class[2].name[1]);

printf("%c\n",class[2].name[0]);

D

结构体和共用体类型数据的定义方法和引用方法

19、以下列出C语言常量中,错误的是______。

OxFF

1.2e0.5

2L

'\72'

B

C的数据类型及其定义方法

20、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*z)的C语言表达式是______。

x/y*z

x*(1/(y*z))

x/y*1/z

x/y/z

A

C的数据类型及其定义方法

21、设有以下说明语句

structex

{intx;floaty;charz;}example;

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

struct是结构体类型的关键字

example是结构体类型名

x,y,z都是结构体成员名

structex是结构体类型

B

结构体和共用体类型数据的定义方法和引用方法

22、X、Y、Z被定义为int型变量,若从键盘给X、Y、Z输入数据,正确的输入语句是______。

INPUTX,Y,Z;

scanf("%d%d%d",&X,&Y,&Z);

scanf("%d%d%d",X,Y,Z);

read("%d%d%d",&X,&Y,&Z);

B

本题考查C语言的格式化输入语句。

  C语言中没有INPUT与read语句,scanf()语句的格式为:

  scanf("格式字符串",变量地址1,变量地址2,...);

本题答案C中,应为变量地址。

本题答案为B。

23、t为int类型,进入下面的循环之前,t的值为0,

while(t=1)

{......}

则以下叙述中正确的是______。

循环控制表达式的值为0

循环控制表达式的值为1

循环控制表达式不合法

以上说法都不对

B

 

本题考查C语言的while循环语句。

  本题的t=1是一个赋值表达式,其值为变量的值,所以while语句的循环控制表达式的值为1。

本题答案为B。

24、设有以下函数;

f(inta)

{intb=0;

staticintc=3;

b++;c++;

return(a+b+c);

}

如果在下面的程序中调用该函数,则输出结果是______。

main()

{inta=2,i;

for(i=0;i<3;i++)printf("%d\n",f(a));

}

A)B)C)D)

7777

89107

911137

 

A

B

C

D

 

A

本题考查的是C语言的静态数据类型。

静态数据类型的变量的值在退出了函数时依然存放在内存中,且只初始化一次。

本题答案为A。

25、以下定义语句中,错误的是______。

inta[]={1,2};

char*a[3];

chars[10]="test";

intn=5,a[n];

D

本题考查C语言数组的定义与初始化。

  在C语言中数组的初始化可以对部分元素,数组的定义,不能含有变量。

本题答案为D。

26、以下程序的输出结果是______。

main()

{inti,a[10];

for(i=9;i>=0;i--)a[i]=10-i;

printf("%d%d%d",a[2],a[5],a[8]);

}

258

741

852

369

C

 

本题使循环语句给数组元素赋值。

C语言中for循环语句的一般形式为:

  for(表达式1;表达式2;表达式3)

{

语句部分;

}

本题答案为C。

27、以下程序的输出结果是______。

main()

{inta,b;

for(a=1,b=1;a<=100;a++)

{if(b>=10)break;

if(b%3==1)

{b+=3;continue;}

}

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

}

 

101

6

5

4

D

本题主要考查考生对C语言中的循环语句和程序的执行逻辑。

本题中for循环语句共执行3次,所以a的值累加3次,结果为4。

本题答案为D。

CONTINUE语句和BREAK语句

28、以下程序的结果是______。

inta,b;

voidfun()

{a=100;b=200;}

main()

{inta=5,b=7;

fun();

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

}

100200

57

200100

75

B

局部变量和全局变量

29、以下叙述中正确的是______。

C语言中的文件是流式文件,因此只能顺序存取数据

打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

D

文件的打开与关闭(FOPEN,FCLOSE)

30、C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是______。

Void

int

float

double

B

函数的类型和返回值

31、有以下程序

structSTU

{charnum[10];floatscore[3];}

main()

{structSTUs[3]={{"20021",90,95,85},

{"20022",95,80,75},

{"20023",100,95,90}},*p=s;

inti;floatsum=0;

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

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

printf("%6.2f\n",sum);

}

程序运行后的输出结果是______。

260.00

270.00

280.00

285.00

B

结构体和共用体类型数据的定义方法和引用方法

32、有以下程序

main()

{intp[7]={11,13,14,15,16,17,18},i=0,k=0;

while(i<7&&p[i]%2){k=k+p[i];i++;}

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

}

执行后输出的结果是______。

58

56

45

24

D

一维数组和多维数组的定义、初始化和引用

33、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是______。

x=x*100+0.5/100.0;

x=(x*100+0.5)/100.0

x=(int)(x*100+0.5)/100.0;

x=(x/100+0.5)/100.0;

C

表达式语句,空语句,复合语句

34、有以下程序

main()

{inti,s=0;

for(i=1;i<10;i+=2)s+=i+1;

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

}

自然数1~9的累加和

自然数1~10的累加和

自然数1~9中奇数之和

自然数1~10中偶数之和

D

FOR循环结构

35、若程序中定义了以下函数

doublemyadd(doublea,doubleb)

{return(a+b);}

并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是______。

doublemyadd(doublea,b);

doublemyadd(double,double);

doublemyadd(doubleb,doublea);

doublemyadd(doublex,doubley);

A

对函数的“定义”和“说明”不是一回事。

“定义”是指对函数功能的确立,包括指定函数名,函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。

而“说明”则是对已定义的函数的返回值进行类型说明(或称“申明”),它只包括函数名、函数类型、以及一个空的括弧,不包括形参和函数体。

对被调函数进行说明的作用是告诉系统:

在本函数中将要用到的某函数是XX类型。

也就是说明该函数的返回值的类型,以便在主调函数中按此类型对函数值作相应的处理。

本题选项A中,对变量b的类型没有说明,默认的为整型,不合题意。

故本题答案为A。

36、下面程序的功能是输出以下形式的金字塔图案:

*

***

     *****

*******

main()

{inti,j;

for(i=1;i<=4;i++)

{for(j=1;j<=4-i;j++)printf("");

for(j=1;j<=______;j++)printf("*");

printf("\n");

}

}

在下划线处应填入的是______。

i

2*i-1

2*i+1

i+2

 

B

循环的嵌套

37、请选出以下程序的输出结果______。

#include

sub(intx,inty,int*z){

*z=y-x;

}

main(){

inta,b,c;

sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);

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

}

5,2,3

-5,-12,-7

-5,-12,-17

5,-2,-7

B

用指针作函数参数

38、请选出以下程序段的输出结果______。

#include

#defineMIN(x,y)(x

x:

y

main()

{

inti,j,k;

i=10;j=15;

k=10*MIN(i,j);

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

}

15

100

10

150

C

宏定义:

不带参数的宏定义;带参数的宏定义

39、设有如下的程序段

charstr[]="Hello";

char*ptr;

ptr=str;

执行完上面的程序段后,*(ptr+5)的值为______。

'o'

'\0'

不确定的值

'o'的地址

B

字符串与字符数组

本题的考查点是字符数组的结束标志。

ptr=str实际上是将串str的首地址赋给了指针变量ptr,所以ptr+5将指向str串的第六个数组元素,即是串的隐含结束标志'\0',*(ptr+5)='\0',最后的结果为'\0'。

故本题答案为B。

40、已有定义:

charc;,程序前面已在命令中包含ctype.h文件。

不能用于判断c中的字符是否为大写字母的表达式是______。

isupper(c)

'A'<=c<='Z'

'A'<=c&&c<='Z'

c<=('z'-32)&&('a'-32)<=c

B

C运算符的种类、运算优先级和结合性

41、下面程序的输出是______。

intm=13;

intfun2(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun2(a,b)/m);}

1

2

7

10

B

本题的考查点是函数的调用。

函数fun2()的作用是将形参x和y的值相乘后-3,在fun2()中的变量m是一个局部变量,它的值在fun2()函数内有效,在主函数中的m指的是全局变量,其值为13,所以fun2(a,b)/m的值为(7*5-3)/13,即2。

故本题答案为B。

42、有以下程序

#include

intfun(chars[])

{intn=0;

while(*s<='9'&&*s>='0'){n=10*n+*s-'0';s++;}

return(n);

}

main()

{chars[10]={'6','1','*','4','*','9','*','0','*'};

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

}

程序的运行结果是______。

9

61490

61

5

C

字符串与字符数组

本题考查的是指针的应用。

本题主函数中定义了一个字符型数组s,当调用fun函数时,将字符型数组s的地址指向形参字符数组s,则形参与实参共用占同一存储单元,其值也相等。

在函数fun中,第一次执行while循环时,*s='6',所以while(*s<='9'&&*s>='0')成立,执行n=10*n+*s-'0';即n=10*0+'6'-'0',其中字符'6'和'0'均代入ASCII码进行运算,所以n=6;

s++表示指针变量s后移一位,即*s='1',所以while(*s<='9'&&*s>='0')成立,执行n=10*n+*s-'0';由于前一次循环执行后的n的值为6,此时的等式为(n=10*6+'1'-'0'),故n=61;指针变量继续后移一位,*s='*',所以while(*s<='9'&&*s>='0')不成立,返回n=61的值。

故本题程序输出结果是61。

本题答案为C。

43、以下函数返回a所指数组中最小值所在的下标值。

fun(int*a,intn)

{

inti,j=0,p;

p=j;

for(i=j;i

if(a[i]

return(p);

}

在下划线处应填入的是______。

i=p

a[p]=a[i]

p=j

p=i

D

一维数组和多维数组的定义、初始化和引用

44、有如下程序:

longfib(intn)

{

if(n>2)

return(fib(n-1)+fib(n-2));

else

return

(2);

}

main()

{

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

}

该程序的输出结果是______。

2

4

6

8

B

函数的正确调用,嵌套调用,递归调用

45、若fp是指向某文件的指针,且已读到此文件的末尾,则函数feof(fp)的返回值是______。

EOF

0

非零值

NULL

C

本题的考查点是文件结束符的返回值问题。

函数feof是用来判断文件是否已读到末尾,如果已读到末尾则返回非零值,否则返回0。

本题答案为C。

文件的读写,文件的定位

46、有如下程序

intfunc(inta,intb)

{return(a+b);}

main()

{intx=2,y=5,z=8,r;

r=func(func(x,y),z);

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

}

该程序的输

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动物植物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1