C语言基础测试题

C语言基础测试题

一 1. 2.

选择题(每题2分)

C语言程序的基本单位是( A )。

B. 过程

C. 语句

D. 子程序

对于while语句,错误的说法是( C )。

A. 函数

A.用条件控制循环体的执行次数 B.循环体至少要执行一次 C.循环体有可能一次也不执行 D.循环体中可以包含若干条语句 3. 4.

定义语句int a=3;则执行语句a+=a-=a*a后,变量a的值是( C )。 关于局部变量和全局变量的叙述中,错误的是 ( A )。 A. 3 B. 0 C. 9 D. -12 A.全局变量的重复赋值不会影响局部变量的使用。 B.主函数中定义的变量在整个程序中都是有效的 C.形式参数也是局部变量。

D.不论是局部变量还是全局变量,都以最近的一次赋值为准。 5. 已知:int a=13;那么:printf(\结果是( A )。 A. 13 B. 013 C. 01 D. 03 6.

在main函数中调用scanf给变量a赋值的方法是错误的,原因是( )。

int *p,a; p=&a; printf(\scanf(\

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. 数组的下标可以是任何类型的表达式 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(\输出结果是_________。 3.设int a=9,b=20;则printf(\的输出结果是_________。

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分)

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