1. 若函数中局部变量的值经过函数调用后仍然保存,则该局部变量定义为 。
A、auto变量 B、static变量
C、extern变量 D、register变量
2. 若有定义:int a=12,v=5,c;执行语句c=a/b;后,c的值为 。
A、2 B、4 C、5 D、6
3. 以下正确的描述是 。
A、函数的定义可以嵌套,但函数的调用不可以嵌套。
B、函数的定义不可以嵌套,但函数的调用可以嵌套。
C、函数的定义和函数的调用均不可以嵌套。
D、函数的定义和函数的调用均可以嵌套。
4. 用于字符串比较的库函数是 。
A、strcat B、strcpy C、strcmp D、strlen
5. 若有函数定义:
fun(int a,int b)
{
return a+b;
}
则该函数的返回类型是 。
A、void B、float C、int D、未知类型
6. 下面程序执行后代输出结果是 。
int fun(int x,int y)
{
int z=x*x+y*y;
return z;
}
main()
{
int a=-1,b;
b=fun(a,2);printf("%d",b);
}
A、4 B、5 C、6 D、7
7. 若有定义:char ch;,则能判断出ch为小写字母的表达式是 。
A、'a'<=ch<='z' B、(ch>='a')||(ch<='z')
C、(ch>='a')AND(ch<='z') D、(ch>='a')&&(ch<='z')
8. 若有说明:int a[][4]={{1,2,3},{4,5,6},{7,8,9}};
则数组第1维的大小为 。
A、3 B、4 C、5 D、不能确定
9. 下面程序段执行后的输出结果是 。
char c[5]={ 'a', 'b', '\0', 'c', '\0'};
printf("%s",c);
A、'a''b' B、ab C、ab c D、abc
10. 若有定义int a[2][3];则对a数组的第i行第j列元素值的正确引用是 。
A、*(*(a+i)+j) B、(a+i)[j]
C、*(a+i+j) D、*(a+i)+j
11. 下面程序段中while循环的循环次数是 。
int i=0;
while(i<10)
{
if(i<1) continue;
if(i==5) break;
i++;
}
A、1次 B、10次 C、6次 D、循环次数不能确定
12. 有以下程序
#include <stdio.h>
main()
{
int i=2007;
int *p=&i;
}
通过________可获得p的地址。
A、&i B、p C、*p D、&p
13. 下面程序执行后的输出结果是 。
#include <stdio.h>
main()
{
int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0;
for(i=0;i<4;i++) s+=aa[i][0];
printf("%d",s);
}
A、10 B、13 C、17 D、20
二、问答题
1. 传值调用(call by value)和传引用调用(call by reference)之间的区别,可以用实例说明。
2. 说明什么是函数抽象(function abstraction)及其优势