当前位置:文档之家› C语言基础测试题

C语言基础测试题

C语言基础测试题
一选择题(每题2分)
1. C语言程序的基本单位是( A )。

A. 函数
B. 过程
C. 语句
D. 子程序
2. 对于whil e语句,错误的说法是( C )。

A.用条件控制循环体的执行次数
B.循环体至少要执行一次
C.循环体有可能一次也不执行
D.循环体中可以包含若干条语句
3. 定义语句int a=3;则执行语句a+=a-=a*a后,变量a的值是(C)。

A.3
B.0
C.9
D.-12
4. 关于局部变量和全局变量的叙述中,错误的是(A)。

A.全局变量的重复赋值不会影响局部变量的使用。

B.主函数中定义的变量在整个程序中都是有效的
C.形式参数也是局部变量。

D.不论是局部变量还是全局变量,都以最近的一次赋值为准。

5. 已知:int a=13;那么:printf("%02d",a)结果是(A)。

A.13
B.013
C.01
D.03
6. 在main函数中调用scanf给变量a赋值的方法是错误的,原因是()。

int *p,a; p=&a;
printf("input a:");
scanf("%d",*p);
A. *p表示的是指针变量p的地址
B. *p表示的是变量a 的值,而不是变量a的地址
C. *p表示的是指针变量p的值
D. *p只能用来说明p是一个指针变量
7.若有以下定义,则对a数组元素地址的正确引用是()。

A.a+5
B.*a+1
C.&a+1
D.&a[0]
8. 若int k=4,a=3,b=2,c=1;则k<a?k:c<b?c:a的值是()。

A.4
B.3
C.2
D. 1
9. 关于数组,以下说法正确的是()。

A. 数组的下标可以是任何类型的表达式
B. 数组的下标只能是常量或者常量表达式
C. 二维数组必须完成初始化
D. 指针不可以操作数组里面元素的值
10. 设int a=11,b=2;执行下述程序段后,变量a和b的值分别是( )。

do{a/=b++;}
while(a>b);
A. 1,3
B. 1,4
C. 2,3
D. 2,4
二.填空题。

(每空3分)
1.写一个宏MIN,这个宏输入两个参数并返回较小的一个_________。

2.main函数中:for(int i=0; i<3; i++){printf("%d",i);}输出结果是_________。

3.设int a=9,b=20;则printf("%d,%d",a--,--b);的输出结果是_________。

4.设int a[2][4]={{1,3,5,7},{2,4,6,8}};则*(*a+1)的值为_________。

5.定义一个指向含有十个数字的数组的指针_________。

6.已知int a=1,b=2,c=3; if(a>b)c=a; a=b; b=c;语句执行后a,b,c的值是_________。

三.判断题。

(每题2分)
1.在C语言中,定义int a=b=c=5;是错的,而int a,b,c;a=b=c=5;是对的。

()
2.int x=3,y=2;则表达式(y++==--x)?y++:x++的值为3。

()
3.若有定义:int a[5][5],*p;则操作p=a;是合法操作。

()
4.两个字符串所包含的字符个数相同时才能比较字符串大小。

()
5.宏定义可以实现嵌套定义。

()
6.若变量均为整型,且num=sum=7,则计算表达式sum=num++,sum++,++num后sum的值为8。

()7.若有int i=10,j=0;则执行完语句if(j=0)i++; else i--;后i的值为11。

()
8.若有int a[3][4]; 则a[3][4]是对二维数组的正确访问。

()
9.初始化值列表中的初始化值个数多于数组元素的个数是错误的。

()
10.如果在一个函数中的复合语句中定义了一个变量,则该变量在该函数中都有效。

()
11.用语句a=a+b,b=a-b,a=a-b;可以交换a,b两个变量的值。

()
四.简答题。

1.简述形参和实参的区别。

(3分)
2.回答break和continue的异同点。

(2分)
3.简述指针的概念。

(2分)
4.请叙述你对面向对象和面向过程的理解。

(3分)
五.编程题。

1.已知一个数组array,里面有五个数:12,25,8,9,16;把数组里面的数按照从小到大的顺序排列。

(15分)
2.写一个程序,可以输入若干个数,直到输入0时结束,然后实现求这些数的平均值。

(15分)。

相关主题