搜档网
当前位置:搜档网 › C语言测试卷及答案

C语言测试卷及答案

下笔如有神





语言程序设计试卷(二)
1~30题每小题1分,31~45题每小题2分,共60分)
以下合法的用户自定义标识符是(D)。
、 b-b B、float C、 D、 _isw
若变量已正确定义并赋值,以下不符合C语言语法的表达式是(B)。
、a*b/c; B、3.14%2 C、2, b D、a/b/c
下列不正确的字符常量是(C)
、'n' B、'1' C、a D、'101'
在 C 语言中,表示逻辑值“真”用 (B)
、1 B、非 0 的数 C、非 1 的数 D、 大于 0 的数
把x、y定义成float类型变量,并赋同一初值3.14是(C)
、float x, y=3.14; B、float x, y=2*3.14;
、float x=3.14, y=x=3.14; D、float x=y=3.14;
若变量已正确定义,值不为2的表达式是(C)
、2&3 B、1<<1 C、a==2 D、1^3
若变量已正确定义,和语句“if(a>b) k=0; else k=1;”等价的是(C)
、k=(a>b)?1:0; B、k=a>b;
、k=a<=b; D、a<=b ? 0 : 1;
设变量定义为“int a, b;”,执行下列语句时,若a和b的值都是10,则应输入 ()D &b);

D、、 Ca=10 b=10 A、10 10 B、10, 10
)9. 下列程序的输出结果是 (Dc) int fun(int a, int b,
{ c =a*b;


int


printf(”%dn”,c);}
D、无法确定 1 、 C、6 0 A、 B )A10. 在C程序中,若对
则函数的隐含类型为( D、char void C、 double 、Aint B、
)的值是(B11. 表达式 strlen(”hello”)
D、 6 、 B A、4 、5 C
)D语言语法的表达式是(C,则不符合”a[4];int 设变量定义为“12.
下笔如有神
、*a B、a[0] C、a D、a++
设变量定义为“int x, *p=&x;”,则&*p相当于(A)
、p B、*p C、x D、*&x
若变量已正确定义,不能使指针p成为空指针的是(A)
、p=EOF B、p=0 C、p='' D、p=NULL
对于以下的变量定义,不符合C语言语法的表达式是(D)
struct node {
int len;
char *pk;
} x = {2,
*p = &x;
、p->pk B、*p.pk C、*p->pk D、*x.pk
有如下程序





”,r);


(D)

对于基类型相同的两个指针变量之间,不能进行的运算是 (C)

有如下程序





”,fib(3));

(B)

有如下定义





M的语句是 (D)
”,class[3].mane);

”,class[3].name[1]);

”,class[2].name[1]);

”,class[2].name[0]);

以下所列的C语言常量中,错误的是 (B)
下笔如有神
有以下程序段


(A)

B) 有语法错,不能执行

D) 执行1次

以下程序的输出结果是 (C)
无定值








下列程序段的输出

结果是 (A)








当调用函数时,实参是一个数组名,则向函数传送的是 (B)
B) 数组的首地址

D) 数组每个元素中的值

以下程序的输出结果是 (A)






”, fun(3)); }

以下程序的输出结果是 (B)






下笔如有神
有以下程序




(D)

以下叙述中正确的是:(A)
C程序的基本单位是函数




以下选项中非法的表达式是 :( D )
)0<=x<100 B)i=j==0
)(char)(65+3) D)x+1=x+1
下列条件语句中,功能与其他语句不同的是:(D)

以下不能定义为用户标识符的是 :( D )
)scanf B)Void C)_3com_ D)int
C语言中用于结构化程序设计的三种基本结构是:(A)
B) if、switch、break

while、do-while D) if、for、continue
若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的
( A )
B) scanf(%d%d%d,&a,&b,&d);
D) scanf(%d%d%d,a,b,*d);
若有定义:int aa[ 8];。则以下表达式中不能代表数组元aa[1]的地址的是:( C )
B) &aa[1] C) &aa[0]++ D) aa+1
有以下程序

(B)

以下程序的输出结果是:( A )

下笔如有神











)31 B) 13 C) 10 D) 20
有以下程序


int i,len=0;
for(i=1;i printf(“5d\n”,len);

ex.exe,若运行时输入以下带参数的命令行
abcd efg h3 k44
( D )
B)12 C)8 D)6
下列选项中正确的语句组是 :( D )
char s[8]; s={Beijing}; B)char *s; s={Beijing};
)char s[8]; s=Beijing; D)char *s; s=Beijing;
有以下程序






( B )
)3 B)6 C)9 D)2
以下符合C语言语法的实型常量是:( C )
B) 3.14.159E C) .5E-3 D) E15
以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是:( A )
B) if((a>b)||(b>c)) k=1;
else k=0; else k=0;
k=0; D)if(a>b) k=1;
else if(b<=c) k=1; else if(b>c) k=1;
else k=0;
若程序中定义了以下函数 42.
下笔如有神读书破万卷
double


则在调用之前应该对该函数进行说明,以下选项中错误的 ) A 说

A)double myadd(double a,b);

C)double myadd(double b,double a);
43. fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp) A )

0值 D)一个非 C)-1 ) A)0 B1

语言数据文件的叙述中正确的是:( D 44. 下列关于C 语言只能读写文本文件 A)
ASCII码字符序列组成,C B)文件由二进制数据序列组成,C语言只能读写二进制
)文件由记录序列组成,可按数据存放形式分为二进制文件和文本文件 C )文件由数据
D 45. 有以下程序main()





( B )
B) 19 C) 13 D) 20

2分,共30分)
表示“x≥y≥z”的C表达式是___ x>=y && y>=z ____。
下列程序段的输出是__1____。
printf(%on, 010<<1^1);
下列程序段的输出是__6,90____。
int k;
float s;
for (k=0, s=0; k < 7; k ++)
s += k/2;
k, s);
下列程序段的输出是__5,25_____。

f(a, b, x) a*x+b
%dn, f(3,2,1), f(6, 5, f(3, 2, 1)));
下列程序段的输出是_*#*#____。

int k;
for(k=1; k<5; k++) {

2) % if(k
下笔如有神
else continue;
printf(#);
}

下列程序段的输出是__5 8___。
include
f(int x)
static y=1;
y++;
x += y;
return x;

main()
int k;
k=f(3);
printf(%d %dn, k, f(k));

下列程序段的输出是___5__。
*p, *q, k = 5 , j = 6 ;
; p = q ; q = &j ;
*p);
函数
void f(char s[ ], char t[ ])
{ int k=0;
while (s[k]=t[k]) k++;
}

void f(char *s, char *t)
{ while (_*s++=*t++____);
}
下列程序段的输出是_ ne,s ____。
wo}, **p=a;

-1);
下列程序编译后生成 t.exe, 运行 t input output zoo oil 的输出结果是 。__zoo__
]) char argc, * argv[ void main(int

int {

char

for(k=2;
p)>0) if(strcmp(argv[k],
printf(%sn,

11

12.以下程序输出的结果是 0
下笔如有神





.以下程序中给指针p分配三个double型动态内存单元,请填空。


double *p;
p=(double *) malloc( 3*sizeof(double) );

p[0]=1.5;p[1]=2.5;p[2]=3.5;
printf(“%f%f%fn”,p[0],p[1],p[2]);

14.有以下程序

*x=*x+y;}

int x=2,y=4;
f(y,&x);
printf(“%d n”,x,y);

8 4
.以下程序的运行结果是 2002Shangxian








STU a={“zhangsan”,2001,95},b={“Shangxian”,2002,90},
“Anhua”,2003,95}, d, *p=&d;
d=a;
if(strcmp(https://www.sodocs.net/doc/6e16092321.html,,https://www.sodocs.net/doc/6e16092321.html,)>0) d=b;
d=c;
printf(“%ld%sn”,d.sno,p->name);



(段)填空题(每空2分,共10分)
. 以下函数返回a所指数组中最小的值所在的下标值,请填空:

下笔如有神




下列程序调用swap函数交换a和b的值,并输出交换后的a和b的值。程序的输出
After swap 5, 3
void main( )
{ int a=3, b=5;
swap( &a, &b ) ;
printf(After swap %d, %d, a, b);
}
swap( int *p, int *q )
{ int t;
t=*p; ;

*p=*q ;
*q=t ;


相关主题