c语言习题及其答案(1)

C语言模拟题及其答案

一 选择题

B 1.C语言源程序的基本单位是( )。 A 过程 B 函数 C 子程序 D 标识符 C 2.下列程序的输出结果是( )。

main( ) { int a=7,b=5; printf(\}

A 5 B 1 C 0 D不确定值

;B 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。

A 7 B 8 C 9 D 2

B 4.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。

a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 C 5.设有如下程序段,下面描述中正确的是 ( )。

int k=10; while(k=0) k=k-1;

A 循环执行一次 B循环是无限循环 C循环体语句一次也不执行 D循环体语句

执行一次

A B 6.以下程序的输出结果为( )。 int i; void prt( )

{ for(i=5;i<8;i++) printf(\ printf(\} main( )

{ for(i=5;i<=8;i++) prt( ); }

A *** B *** *** *** *** C *** *** D * * *

B C 7.在C语言程序中,以下说法正确的是( )。

A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套

A C 8.以下函数调用语句中含有( )个实参。

func((e1,e2),(e3,e4,e5));

A 2 B 3 C 5 D 语法错误 A D 9.以下程序的输出结果为( )。

#define ADD(x) x*x main( )

{ int a=4,b=6,c=7,d=ADD(a+b)*c; printf(\ }

A d=70 B d=80 C d=140 D d=700 #define宏是直接替换,不会先给你计算的

dd(a+b) = a+b*a+b

d = add(a+b)*c = a+b*a+b*c =4+4*6+6*7 = 4+24+42 = 70

因此,如果希望实现 f(4+4)=f(8) 的效果,需要在定义宏函数时加括号,即需要定义

成以下方式: #define f(x) (x)*(x)

C A 10.已知职工记录描述如下,在Turbo C中,系统为变量w分配( )字节的空间。

struct worker { int no; char name[20]; char sex; union

{ int day; int month; int year;}birth; } w;

A 29 B 20 C 25 D 6

int 型变量在内存中占2字节 char 变量占1字节

union 联合也是一种新的数据类型, 它是一种特殊形式的变量。 联合说明和联合变量定义与结构十分相似。其形式为:

union 联合名{

数据类型 成员名; 数据类型 成员名; ...

} 联合变量名;

联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型

和不同长度的变量。当一个联合被说明时, 编译程序自动地产生一个变量, 其长度为联合中最大的变量长度。

故 变量w 在内存中所占字节数为:2+1*20+1+2=25

A 11.设有以下定义,值为5的枚举常量是( )。

enum week{sun,mon=4,tue,wed,thu,fri,sat} w; A tue B sat C fri D thu

A B 12.下面选项中正确的赋值语句是(设 char a[5],*p=a;)( )。 A p=\ B a=\ C *p=\ ? D *a=\

A p=“abcd”; P是字符型指针,将“abcd”的地址给了P,也就是P指向“abcd\的首地址,也就是 指向?a'的地址;

B a=“abcd”;a是字符数组的地址,不可赋值;

C *p=“abcd”; *P是字符,不能将字符串赋给它,若是*p='a',则正确。

B 13.设有以下程序段,则值为6的表达式是( )。

struct st { int n; struct st *next;}; static struct st a[3]= {5,&a[1], 7,&a[2], 9,0 },*p; p=&a[0];

A p++->n B ++p->n C p->n++ D (*p).n++

static struct st a[3]={5,&a[1],7,&a[2],9,'\\0'},*p;

p=&a[0];,则值为6的表达式是 A.p++->n B.p->n++ C.(*p).n++ D.++p->n

其实是一个链表,p->n指的就是其中的值,p++则指向下一个元素。 A p++->n相当于(&a[0]->n),于是是5 B p->n++相当于(&a[0]->n)++,也是5 C (*p).n++相当于(a[0].n)++,结果也是5 D ++p->n相当于++(p->n),结果6

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4