word格式
printf(\ p=func(k,m);
printf(\}
A.8,15 B.8,16 C.8,17 D.8,8 答案:C
解析:函数体内的静态局部变量不随函数的调用结束而销毁,而是一直存在。 26、以下程序的输出结果是( )。 int d=1;
int fun(int p) {
static int d=5; d+=p;
printf(\ return d; }
void main() {
int a=3;
printf(\}
A.6 9 9 B.6 6 9 C.6 15 15 D.6 6 15 答案:C
解析:首先调用fun(d),将全局变量d=1带入,此时fun()函数内的静态局部变量d的值
是1,d+=p后d的值是6,输出d的值,返回d的值; 然后调用fun(a+6),将局部变量a=3带入,此时fun()函数内的静态局部变量d的值是6,
d+=p后d赋值15,输出d的值,返回d的值。
27、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是( )。 A.extern B.register C.auto D.static 答案:D
解析:static修饰全局变量时,表示该变量仅在本文件中可使用。 28、下列程序的输出结果是( )。 int b=2;
int func(int *a) {
.. ..
word格式
b += *a; return b; }
void main() {
int a=2, res=2; res += func(&a); printf(\}
A.4 B.6 C.8 D.10 答案:B
解析:func()函数中,对全局变量b自增a的值,func()函数返回4;res+=4,res赋值
为6。
29、请读程序: void main() {
int a=1,b=2,c=3; ++a; c+=++b; {
int b=4,c; c=b*3; a+=c;
printf(\ a+=c;
printf(\ }
printf(\}
该程序的输出是( )
A.first: 12,4,12 Second: 26,4,12 third: 4,3,6 B.first: 14,4,12 Second: 26,12,12 third: 26,3,4 C.first: 14,4,12 Second: 26,4,12 third: 26,3,6 D.first: 14,4,12 Second: 26,6,12 third: 26,4,6 答案:C 解析:程序运行到第6行时,a=2,b=3,c=6;程序运行到第10行时,a=14,局部变量b=4,
c=12;程序运行到第13行时,a=26,局部变量b=4,c=12;程序运行到第15行时,a=26,b=3,c=6。
30、以下程序运行后,输出结果是( )。 int d=1;
int fun(int p)
.. ..
word格式
{
int d=5; d+=p++;
printf(\}
int main() {
int a=3; fun(a); d+=a++;
printf(\}
A.84 B.99 C.95 D.44 答案:A
解析:fun()函数调用时代入局部变量a的值,fun()函数体内局部变量d自增3,输出d
的值,即8,fun()函数返回8,此时全局变量d的值不变。d+=a++后,全局变量d自增3,此时全局变量d的值是4,输出全局变量d的值。
31、以下程序的输出结果是( )。 int a, b; void fun() {
a=100; b=200; }
void main() {
int a=5, b=7; fun();
printf(\}
A.100200 B.57 C.200100 D.75 答案:B
解析:fun()函数改变的是全局变量的值,printf()函数输出的是局部变量的值,fun()函
数不会改变局部变量a、b的值。
多选题
1、在调用外部函数时,下列描述中正确的是( )(多选) A.只要有函数名,就能调用外部函数
.. ..
word格式
B.调用外部函数要包含外部函数所在的头文件 C.外部函数与调用者定义在同一个源文件下
D.在声明外部函数时,外部函数与原函数定义的返回值类型、函数名称和参数列表必须一致
答案:B,D
解析:外部函数调用时要包含其所在的头文件,当调用者声明了外部函数的原型,也可以
不用包含头文件
判断题
1、局部变量就是在函数内部声明的变量。 答案:true
解析:局部变量就是在函数内部声明的变量。
2、局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量就会失去作用。 答案:true
解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量
就会失去作用。
3、局部变量就是在函数内部声明的变量,它只在本函数内有效。 答案:true
解析:局部变量就是在函数内部声明的变量,它只在本函数内有效,也就是说,只能在本
函数内使用它。
4、局部变量只有当它所在的函数被调用时才会被使用,当函数调用结束时局部变量还会一直存在。
答案:false
解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量
就会失去作用。
简答题
1、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 void func(int a, int b) {
printf(\}
void main() {
func(3,2); printf(\}
答案:5
解析:fun()是一个实现两个数相加的函数,在主函数中调用并传入值,得到两个数的和
.. ..
word格式
2、请阅读下面的程序,在空白处填写正确的代码,将函数的结果返回给调用者。 int func(int a, int b) {
int sum = 0; sum = a + b; ; }
void main() {
int sum = 0;
= func(3,2);
printf(\两个数相加的结果为%d\}
答案:return sum; sum ;
解析:return sum;return 将函数结果返回 sum ;主函数中sum接收函数返回的值
3、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 void main() {
int num = 100;
printf(“%d, %o, %x\\n”,num,num,num); }
答案:100 144 64
解析:printf()函数将十进制数100分别以十进制,八进制,十六进制形式输出。
4、请阅读下面的程序,当用户从键盘输入hello world时,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 void main() {
char str[256]; scanf(“%s”,str); printf(“%s\\n”,str); }
答案:hello
解析:输入hello world时,中间的空格对scanf()函数来说是终止符,后面的内容无法
读取。
5、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。 用户从键盘输入两个整型数据,将两个数据相加输出。 void main() {
int a,b; ;
printf(“%d\\n”, );
.. ..