好文档 - 专业文书写作范文服务资料分享网站

全国计算机等级考试二级C语言选择题

天下 分享 时间: 加入收藏 我要投稿 点赞

A) gets(s);

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

D) do{ scanf(\,&s[i]); }while(s[i++]!='\\n'); s[i]='\\0';

参考答案:C

【解析】字符串的输入不能使用scanf(\,s);而应该使用gets(s)。

设有定义:char p[]={'1', '2', '3'},*q=p; ,以下不能计算出一个char型数据所占字节数的表达式是( )。 A) sizeof(p) B) sizeof(char)

C) sizeof(*q) D) sizeof(p[0])

参考答案:A 【解析】根据题目中的定义可以知道sizeof(p),计算的是数组p中所有元素所占用的字节数,而不是char型数据所占字节数。

有以下程序:

#include #include main()

{ char str[][20]={\,\!\,*p=str[1]; printf(\,\,strlen(p)); printf(\,p); }

程序运行后的输出结果是( )。 A) 10,One*Dream!

B) 9,One*Dream! C) 9,One*World D) 10,One*World

参考答案:A

【解析】p是指向二维字符数组第二行One*Dream!的数组指针,所以长度是10,打印输出的也是该字符串。

有以下程序:

#include main()

{ char s[]=\; int i, n=0;

for ( i=0; s[i]!=0; i++ )

if(s[i] >= '0' && s[i] <= '9') n++; printf(\,n); }

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

A) 0 B) 3 C) 7 D) 8

参考答案:B

【解析】本题中遇到\\\\字符循环结束,所以只统计\\\\之前的数字字符,所以为3。

有以下程序:

#include fun(int x, int y)

{ static int m=0, i=2;

i+=m+1; m=i+x+y; return m; }

main()

{ int j=1, m=1, k;

k=fun(j,m); printf(\,\,k); k=fun(j,m); printf(\,k); }

执行后的输出结果是( )。 A) 5, 11 B) 5, 5 C) 11, 11 D) 11, 5

参考答案:A

【解析】声明静态局部变量:函数调用结束后,其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。本题子函数fun中的变量 i和m均为静态局部变量。所以第一次调用fun函数,返回m的值为5,第二次再调用fun函数时,i的值为3,m的值已经是5了,所以执行i+=m+1,i的值变为9,m=i+x+y=9+1+1=11。

在C语言中,只有在使用时才占用内存单元的变量,其存储类型是( )。 A) auto和static B) extern和register C) auto和register

D) static和register

参考答案:C

【解析】auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。register:为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,这种变量叫\寄存器变量\,只有局部自动变量和形式参数可以作为寄存器变量。extern:外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。static:静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。

下面结构体的定义语句中,错误的是( )。

A) struct ord {int x;int y;int z;} struct ord a; B) struct ord {int x;int y;int z;}; struct ord a; C) struct ord {int x;int y;int z;} a; D) struct {int x;int y;int z;} a; 参考答案:A

【解析】A)选项struct ord {int x;int y;int z;} struct ord a;错误,不能在定义结构体的同时,又用结构体类型名定义变量。应该写成B)选项或者D)选项的格式。

有以下程序:

# include

typedef struct { int b, p; } A;

void f(A c) /* 注意:c是结构变量名 */ { int j;

c.b += 1; c.p+=2; }

main() { int i;

A a={1,2}; f(a);

printf(\,%d\\n\, a.b, a.p); }

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

A) 2,4 B) 1,2 C) 1,4 D) 2,3

参考答案:B

【解析】结构体变量可以作为函数的参数和返回值。作为函数的实参时,可以实现函数的传值调用。当使用结构体变量作为函数的形参时,实参也应该是结构体变量名以实现传值调用,实参将拷贝副本给形参,在被调用函数中改变形参值对于调用函数中的实参没有影响。所以选择B)。

以下叙述中正确的是( )。

A) 在C语言中,预处理命令行都以\#\开头 B) 预处理命令行必须位于C源程序的起始位置 C) #include 必须放在C程序的开头

D) C语言的预处理不能实现宏定义和条件编译的功能

全国计算机等级考试二级C语言选择题

A)gets(s);B)while((s[i++]=getchar())!='\\n');s[i]='\\0';C)scanf(\,s);D)do{scanf(\,&s[i]);}while(s[i++]!='\\n');s[i]='\\0';参考答案:C【解析】字符串的输入不能使用scan
推荐度:
点击下载文档文档为doc格式
0i2vg5ozk69d31q9p63i6j6mw9sjhs00dta
领取福利

微信扫码领取福利

微信扫码分享