C语言考试试题及答案

  • 格式:docx
  • 大小:22.46 KB
  • 文档页数:10

《C语言》考卷

一 单选题(每题2分,共25题,共50分)

1.要把高级语言编写的源程序转换为目标程序,需要使用( )[2分][2分]

A.编辑程序

B.驱动程序

C.诊断程序

D.编译程序

参考答案:D

2.以下叙述中正确的是( )[2分][2分]

A.C语言程序将从源程序中第一个函数开始执行

B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

C.C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束

D.main可作为用户标识符,用以命名任意一个函数作为主函数

参考答案:C

3.若变量a是int类型,并执行了语句:a=‘A'+1.6;,则正确的叙述是 ( )[2分][2分] int a int a=66 = 65 + 1.6 =66.6

A.a的值是字符B

B.a的值是浮点型

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

D.a的值是字符‘A’的ASCII值加上2

参考答案:A

int a = ‘A’;

char b = 65;

4.若变量已正确定义并赋值,以下符合C语言语法的表达式是( )[2分][2分]

A.a:=b+1

B.a=b=c+2

C.18.5%3

D.a=a+7=c+b

参考答案:B

5.下列可用于C语言用户标识符的一组是( )[2分][2分]

A.void, define, WORD

B.a3_b3, _123,car

C.For, -abc, IF Case

D.2a, DO, sizeof

参考答案:B

6.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )[2分][2分] A.scanf("%d",a,b,c);

B.scanf("%d%d%d",a,b,c);

C.scanf("%d",p); //scanf(“%d”,&c);

D.scanf("%d",&p);

参考答案:C

7.以下关于long、int和short类型数据占用内存大小的叙述中正确的是( )[2分][2分]

A.均占4个字节

B.根据数据的大小来决定所占内存的字节数 // long a = 1 int b = 1000000

C.由用户自己定义

D.由C语言编译系统决定

参考答案:D

8.若变量已正确定义,有以下程序段

i=0;

do{

printf("%d,",i); //0

}while(i++); //while(0) i=1

printf("%d\n",i); //1

其输出结果是( )[2分][2分]

A.0,0

B.0,1

C.1,1

D.程序进入无限循环

参考答案:B

9.有以下计算公式

则不能够正确计算上述公式的程序段是( )(提示:库函数sqrt()用来求一个数的平方根)[2分][2分]

A.if(x>=0) y=sqrt(x); else y=sqrt(-x); //if/else配合使用

B.y=sqrt(x) if(x<0) y=sqrt(-x);

C.if(x>=0)y=sqrt(x); if(x<0)y=sqrt(-x); //if单独使用

D.y=sqrt(x>=0?x:-x);

参考答案:B

10.设有条件表达式:

EXP ? i++ : j--;

则以下表达式与之完全等价的是( )[2分][2分]

A.(EXP==0) ? i++ : j--;

B.(EXP!=0) ? i++ : j--;

C.(EXP==1) ? i++ : j--;

D.(EXP!=1) ? i++ : j--;

参考答案:B

11.有以下程序#include

int main(void)

{

int y=9;

for( ; y>0; y--)

{

if(y%3 == 0)

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

}

}

程序的运行结果是( )[2分][2分]

A.741

B.963

C.852

D.875421

参考答案:C

12.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )[2分][2分]

A.函数的实参和其对应的形参共占同一存储单元

B.形参只是形式上的存在,不占用具体存储单元 //局部变量

C.同名的实参和形参占同一存储单元

D.函数的形参和实参分别占用不同的存储单元

参考答案:D

13.已知字符‘A’的ASCⅡ代码值是65,字符变量c1的值是‘A’,c2的值是‘D’。

则执行语句printf("%d,%d",c1,c2-2);后,输出结果是( )[2分][2分]

A.A,B

B.A,68 char c1 = ‘A’ char c1 = 65 char c2 = 68

C.65,66

D.65,68

参考答案:C

14.以下叙述中错误的是( )[2分][2分]

A.函数的形参存放在数据段中 B.函数可以返回地址值

C.可以给指针变量强制赋一个浮点数作为地址值

D.可以给指针变量赋NULL

参考答案:A

15.以下正确的字符串常量是( )[2分][2分]

A."\\\"

B.‘abc’

C.Olympic Games

D.""

参考答案:D

16.设有定义:char p[]={'a', 'b', 'c'},*q=p; ,以下不能计算出一个char型数据所占字节数的表达式是( )[2分][2分]

A.sizeof(p) = 3

B.sizeof(char)

C.sizeof(*q)

D.sizeof(p[0])

参考答案:A

17.有以下程序:

int func(char *s)

{

char *t=s;

while(*t++){;}

t--;

return(t-s);

}

int main(void)

{

char *s = "abcdefghijk";

int n = func(s);

printf("%d\n", n)

}

程序的执行结果是( )[2分][2分]

A.字符串s的长度 11

B.比较两个串的大小

C.将串s复制到串t

D.求字符串s所占字节数 12

参考答案:A

18.若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是( )[2分][2分]

A.a[0][4] B.a[1][3]

C.a[0][3]

D.a[1][4]

参考答案:B

19.有以下程序

#include

void fun(char * (*p) )

{

++p;

printf("%s\n",*p);

}

int main(void)

{

char *a[ ]={"Morning","Afternoon","Evening","Night"};

fun(a);

}

程序的运行结果是( )[2分][2分]

A.Afternoon

B.fternoon

C.Morning

D.orning

参考答案:A

20.若有定义语句:int a[2][3],*p[3]; ,则以下语句中正确的是( )[2分][2分]

A.p=a;

B.p[0]=a;

C.p[0]=&a[1][2];

D.p[1]=&a;

参考答案:C

21.有以下程序

#include

int fun(char s[])

{

int n=0;

while(*s<=‘9’&& *s>=‘0’)

{

n = 10*n + *s -‘0’;

s++;

}

return(n);

}

int main(void) {

char s[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,

'*'};

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

}

程序运行的结果是( )[2分][2分]

A.9

B.61490

C.61

D.5

参考答案:C

22.以下能正确定义一维数组的选项是( )[2分][2分]

A.int a[5]={0,1,2,3,4,5};

B.char a[ ]={0,1,2,3,4,5};

C.char a={’A’,’B’,’C’};

D.int a[5]="0123";

参考答案:B

23.以下叙述中正确的是( ) [2分][2分]

A.预处理命令行必须位于源文件的开头

B.在源文件的一行上可以有多条预处理命令

C.宏名必须用大写字母表示

D.宏替换不占用程序的运行时间

参考答案:D

24.若有以下说明和定义( )

union dt

{

int a;

char b;

double c;

}data;

data.a = 5;

以下叙述中错误的是[2分][2分]

A.data的每个成员起始地址都相同

B.变量data所占的内存字节数与成员c所占字节数相等

C.语句printf("%f\n",data.c)的输出结果为5.000000

D.data可以作为函数的实参

参考答案:C

25.以下语句或语句组中,能正确进行字符串赋值的是 ( ) [2分][2分]

A.char *sp; *sp="abcd";