C语言选择题参考答案1Word文件下载.docx

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

C语言选择题参考答案1Word文件下载.docx

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

C语言选择题参考答案1Word文件下载.docx

,"

是一个特殊的运算符,叫做逗号运算符,它的一般形式为:

表达式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<

b)s=b;

s=s*s;

%d\n"

s);

}

则输出是______。

14

16

18

20

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

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

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

ch=(ch>

='

A'

ch<

Z'

)?

(ch+32):

ch

上面表达式的值是______。

a

Z

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

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

表达式1?

表达式2:

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

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

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

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))

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

11、下面程序

{

intx=10,y=3;

y=x/y);

的输出是______。

不确定的值

C

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

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

故本题答案为C。

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

1#include<

stdio.h>

2main()

3{

4floata[3]={0.0};

5inti;

6for(i=0;

i<

3;

i++)scanf("

a[i]);

7for(i=1;

i++)a[0]=a[0]+a[i];

8printf("

%f\n"

a[0]);

9}

第4行

第6行

第8行

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

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

13、有如下程序

main()

{

intn=9;

while(n>

6)

n--;

n);

}

该程序的输出结果是______。

987

876

8765

9876

本题考查点是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

选项A和C显然错误;

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

15、有如下程序

{floatx=2.0,y;

if(x<

0.0)y=0.0;

elseif(x<

10.0)y=1.0/x;

elsey=1.0;

y);

该程序输出结果是______。

0.000000

0.250000

0.500000

1.000000

本题考查的是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

编译出错

执行p=&

后,p指向整数a,*p即p的目标变量,也就是a;

所以a=*p+b等价于a=a+b,可知a的值最终为11。

17、有如下程序

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

for(i=0;

i<

k;

i++)n[i]=n[i]+1;

n[k]);

不确定的值

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

18、有如下定义

structperson{charname[9];

intage;

};

structpersonclass[10]={"

John"

17,

"

Paul"

19,

Mary"

18,

Adam"

16,};

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

printf("

%c\n"

class[3].name);

class[3].name[1]);

class[2].name[1]);

class[2].name[0]);

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

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

OxFF

1.2e0.5

2L

'

\72'

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

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

x/y*z

x*(1/(y*z))

x/y*1/z

x/y/z

21、设有以下说明语句

structex

{intx;

floaty;

charz;

}example;

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

struct是结构体类型的关键字

example是结构体类型名

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

structex是结构体类型

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

INPUTX,Y,Z;

scanf("

%d%d%d"

X,&

Y,&

Z);

X,Y,Z);

read("

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

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

  scanf("

格式字符串"

变量地址1,变量地址2,...);

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

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

while(t=1)

{......}

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

循环控制表达式的值为0

循环控制表达式的值为1

循环控制表达式不合法

以上说法都不对

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

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

24、设有以下函数;

f(inta)

{intb=0;

staticintc=3;

b++;

c++;

return(a+b+c);

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

{inta=2,i;

for(i=0;

i++)printf("

f(a));

A)B)C)D)

7777

89107

911137

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

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

本题答案为A。

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

inta[]={1,2};

char*a[3];

chars[10]="

test"

;

intn=5,a[n];

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

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

本题答案为D。

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

{inti,a[10];

for(i=9;

i>

=0;

i--)a[i]=10-i;

a[2],a[5],a[8]);

258

741

852

369

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

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

  for(表达式1;

表达式2;

表达式3)

语句部分;

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

{inta,b;

for(a=1,b=1;

a<

=100;

a++)

{if(b>

=10)break;

if(b%3==1)

{b+=3;

continue;

a);

101

6

5

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

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

CONTINUE语句和BREAK语句

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

inta,b;

voidfun()

{a=100;

b=200;

{inta=5,b=7;

fun();

%d%d\n"

a,b);

100200

57

200100

75

局部变量和全局变量

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

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

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

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

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

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

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

Void

int

float

double

函数的类型和返回值

31、有以下程序

structSTU

{charnum[10];

floatscore[3];

{structSTUs[3]={{"

20021"

90,95,85},

{"

20022"

95,80,75},

20023"

100,95,90}},*p=s;

inti;

floatsum=0;

i++)

sum=sum+p->

score[i];

%6.2f\n"

sum);

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

260.00

270.00

280.00

285.00

32、有以下程序

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

while(i<

7&

p[i]%2){k=k+p[i];

i++;

k);

执行后输出的结果是______。

58

56

45

24

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;

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

34、有以下程序

{inti,s=0;

for(i=1;

10;

i+=2)s+=i+1;

自然数1~9的累加和

自然数1~10的累加和

自然数1~9中奇数之和

自然数1~10中偶数之和

FOR循环结构

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

doublemyadd(doublea,doubleb)

{return(a+b);

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

doublemyadd(doublea,b);

doublemyadd(double,double);

doublemyadd(doubleb,doublea);

doublemyadd(doublex,doubley);

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

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

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

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

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

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

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

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

*

***

     *****

*******

{inti,j;

=4;

{for(j=1;

j<

=4-i;

j++)printf("

"

);

for(j=1;

=______;

*"

\n"

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

i

2*i-1

2*i+1

i+2

循环的嵌套

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

#include<

sub(intx,inty,int*z){

*z=y-x;

main(){

inta,b,c;

sub(10,5,&

a);

sub(7,a,&

sub(a,b,&

c);

%d,%d,%d\n"

a,b,c);

5,2,3

-5,-12,-7

-5,-12,-17

5,-2,-7

用指针作函数参数

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

#defineMIN(x,y)(x<

y)?

x:

y

inti,j,k;

i=10;

j=15;

k=10*MIN(i,j);

15

150

宏定义:

不带参数的宏定义;

带参数的宏定义

39、设有如下的程序段

charstr[]="

Hello"

char*ptr;

ptr=str;

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

o'

\0'

的地址

字符串与字符数组

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

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

,*(ptr+5)='

,最后的结果为'

40、已有定义:

charc;

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

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

isupper(c)

<

=c<

=c&

c<

=('

z'

-32)&

('

a'

-32)<

=c

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

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

intm=13;

intfun2(intx,inty)

{intm=3;

return(x*y-m);

main()

{inta=7,b=5;

fun2(a,b)/m);

7

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

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

42、有以下程序

#include<

intfun(chars[])

{intn=0;

while(*s<

9'

*s>

0'

){n=10*n+*s-'

s++;

return(n);

{chars[10]={'

6'

'

1'

'

*'

4'

fun(s));

程序的运行结果是______。

9

61490

61

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

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

在函数fun中,第一次执行while循环时,*s='

,所以while(*s<

)成立,执行n=10*n+*s-'

即n=10*0+'

-'

,其中字符'

和'

均代入ASCII码进行运算,所以n=6;

s++表示指针变量s后移一位,即*s='

由于前一次循环执行后的n的值为6,此时的等式为(n=10*6+'

),故n=61;

指针变量继续后移一位,*s='

)不成立,返回n=61的值。

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

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

fun(int*a,intn)

inti,j=0,p;

p=j;

for(i=j;

n;

j++)

if(a[i]<

a[p])______;

return(p);

i=p

a[p]=a[i]

p=j

p=i

44、有如下程序:

longfib(intn)

if(n>

2)

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

else

return

(2);

fib(3));

8

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

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

EOF

非零值

NULL

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

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

文件的读写,文件的定位

46、有如下程序

intfunc(inta,intb)

{return(a+b);

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

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

r);

该程序的输

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

当前位置:首页 > 表格模板 > 合同协议

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

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