一 单项选择题
1.以下程序的输出结果是( C )。
int d=1;
fun(int p)
{static int d=5;
d+=p;
printf("%d ",D);
return(D);
}
main( )
{ int a=3; printf("%d\n",fun(a+fun(D)));}
A) 6 9 9
B) 6 6 9
C) 6 15 15
D) 6 6 15
2.下列程序执行后的输出结果是( C )。
void func1(int i);
void func2(int i);
char st[ ]="hello,friend!";
void func1(int i)
{printf("%c", st[i]);
if(i<3){i+=2;func2(i);}
}
void func2(int i)
{printf("%c", st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{int i=0; func1(i); printf("\n");}
A) hello
B) hel
C) hlo
D) hlm
3.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( B )。
A) 地址传递
B) 单向值传递
C) 由实参传给形参,再由形参传回实参
D) 传递方式由用户指定
4.以下函数值的类型是( A )。
fun( float x )
{float y;
y=3*x-4;
return y;
}
A) int
B) 不确定
C) void
D) float
5.设有以下函数:
f( int a)
{int b=0;
static int c=3;
b++; c++;
return(a+b+C);
}
如果在下面的程序中调用该函数,则输出结果是( A )。
main()
{int a=2, i;
for(i=0;i<3;i++) printf("%d\n", f(a));
}
A) 7
B) 7
C) 7
D) 7
8 9 10 7
9 11 13 7
6.以下程序的输出结果是( B )。
int a, b;
void fun()
{a=100; b=200;}
main()
{int a=5, b=7;
fun();
printf("%d%d\n", a,
B);
}
A) 100200
B) 57
C) 200100
D) 75
7.以下所列的各函数首部中,正确的是( C )。
A) void play(var a:Integer, var b:Integer)
B) void play(int a, B)
C) void play(int a, int B)
D) Sub play(a as integer, b as integer)
8.以下程序的输出结果是( C )。
fun(int x, int y, int z)
{z=x*x+y*y; }
main()
{int a=31;
fun(5, 2, a);
printf("%d", a);
}
A) 0
B) 29
C) 31
D) 无定值}
9.当调用函数时,实参是一个数组名,则实参向形参传递的是( B )。
A) 数组的长度B) 数组的首地址
C) 数组每一个元素的地址
D) 数组每个元素中的值
10.以下程序的输出结果是( A )。
long fun( int n)
{long s;
if(n= =1 || n= =2) s=2;
else s=n-fun(n-1);
return s;
}
main()
{printf("%ld\n", fun(3)); }
A) 1
B) 2
C) 3
D) 4
11.有如下函数调用语句:
func(rec1, rec2+rec3, (rec4, rec5));
在该函数调用语句中,含有的实参个数是( A )。
A) 3
B) 4
C) 5
D) 有语法错
12.有如下程序:
int func(int a,int B)
{return(a+B);}
main( )
{int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%d\n”,r);
}
该程序的输出的结果是( D )。
A) 12
B) 13
C) 14
D) 15
13.以下程序的输出结果是( B )。
long fib(int n)
{if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main( )
{printf(“%ld\n”,fib(3));}
A) 2
B) 4
C) 6
D) 8
14.在C语言中,变量的隐含存储类别是( A )。
A) auto
B) static
C) extern
D) 无存储类别
15.在下列的函数调用中,不正确的是( D )。
A) max(a,B);
B) max(3,a+B);
C) max(3,5);
D) int max(a,B);
16.以下程序的输出结果是( C )。
func(int x, int y)
{int z;
z=x+y;
return z;
}
main( )
{int a=10, b=20, c=30, s;
s=func((a--, b++, a+B), c--);
printf(“%d\n”, s);
}
A) 30
B) 40
C) 60
D) 50
17.现有以下程序:
#include<string.h>
inverse(char str[ ])
{char t;
int i, j;
for(i=0, j=strlen(str); i<strlen(str)/2; i++, j--)
{t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}
main( )
{char str[100];
scanf(“%s”, str);
inverse(str);
printf(“%s\n”, str);
}
如果输入an anple,该程序的输出结果是( D )。
A) an anple
B) elpna na
C) an
D) na
18.在下列叙述中,正确的一条是( A )。
A) puts和gets函数只能输入或输出一个字符串
B) 在C语言中,函数可以递归调用或递归定义
C) 用scanf函数输入数据时可以规定精度,例如scanf(“%7.2f”,&a);
D) 外部变量只限于本文件中使用
19.以下程序的输出结果是( C )。
power(int x, int n)
{int p;
if(n>0) p=power(x, n-1)*x;
else p=1;
return (p);
}
main( )
{int x=2, n=3;
printf(“%d\n”, power(x, n));
}
A) 5
B) 6
C) 8D) 9
20.在C语言的函数中( C )。
A) 必须有形参
B) 形参必须是变量名
C) 可以有也可以没有形参
D) 数组名不能作形参