21.当输入a1b2c3d4e时,以下程序的输出结果为( A )。
#include
main( )
{char str[40];
printf(“请输入含有四个数字字符的字符串:\n”);
scanf(“%s”,str);
insert(str);
}
insert(char str[ ])
{int i;
for(i=strlen(str);i>0;i--)
{str[2*i]=str[i];
str[2*i-1]= ‘ ’;
}
printf(“\n结果是:%s”, str);
}
A) a 1 b 2 c 3 d 4 e
B) 1 2 3 4
C) a 1 b 2
D) 因输入错误,程序出错
22.在下列叙述中,错误的一条是( A )。
A) 主函数main中定义的变量在整个文件或程序中有效
B) 不同函数中,可以使用相同名字的变量
C) 函数中的形式参数是局部变量
D) 在一个函数内部,可在复合语句中定义变量,这些变量只在本复合语句中有效
23.以下程序的输出结果是( A )。
#include
main( )
{int i;
for(i=0; i<2; i++)
as ( );
}
as( )
{int lv=0;
static int sv=0;
printf(“lv=%d, sv=%d”, lv, sv);
lv++;
sv++;
}
A) lv=0,sv=0,lv=0,sv=1
B) lv=0,sv=0,lv=1,sv=1
C) lv=0,sv=0,lv=0,sv=0
D) lv=0,sv=1,lv=0,sv=1
24.在下列叙述中,错误的一条是( B )。
A) 全局变量存放在静态存储区中,在程序开始执行时就给全局变量分配存储区,程序执行完才释放
B) 在有参函数中,形参在整个程序一开始执行时便分配内存单元
C) 用数组名作函数实参和形参时,应在主调函数和被调用函数中分别定义数组
D) 在同一个源文件中,全局变量与局部变量同名时,在局部变量的作用范围内,全局变量不起作用
25.在下列语句中,不正确的是( D )。
A) c=2*max(a,B); B) m=max(a,max(b,C));
C) printf(“%d”,max(a,B));
D) int max(int x,int max(int y,int z));
26.若输入1.5、2.5,以下程序的输出结果为( C )。
main( )
{int max(float x, float y);
float a, b;
int c;
scanf(“%f, %f” , &a, &B);
c=max(a, B);
printf(“%d”, C);
}
max(float x, float y)
{float z;
z=x>y ? x : y;
return(z);
}
A) 1
B) 2.5
C) 2
D) 3
27、下列程序结构中,正确的是( D )。
A) main()
{float a,b,c;
scanf(“%f,%f”,&a,&B);
c=add(a,B);
…
}
int add(float x,float y)
{ … }
B) main()
{float a,b,c;
scanf(“%f,%f”,&a,&B);
c=add(a,B);
…
}
float add(float x,float y)
{ … }
C) float add();
main()
{float a,b,c;
scanf(“%f,%f”,&a,&B);
c=add(a,B);
…
}
float add(float x,float y)
{ … }
D) float add(float x,float y)
{ … }
main()
{float a,b,c;
scanf(“%f,%f”,&a,&B);
c=add(a,B);
…
}
28.在下列叙述中,错误的一条是( B )。
A) scanf函数可以用来输入任何类型的多个数据
B) 数组名作函数参数时,也采用“值传递”方式
C) 如果形参发生改变,不会改变主调函数的实参值
D) 函数的实参与形参的类型应一致
29.以下程序的输出结果是( B )。
main()
{int i=1,j=3;
printf(“%d”,i++);
{int i=0;
i+=j*2;
printf(“%d,%d”,i,j);
}
printf(“%d,%d\n”,i,j);
}
A) 1,6,3,1,3
B) 1,6,3,2,3
C) 1,6,3,6,3
D) 1,7,3,2,3
30.C语言中形参的缺省存储类别是( A )。
A) 自动(auto)
B) 静态(static)
C) 寄存器(register)
D) 外部(extern)
31.设有如下函数:
ggg(float x)
{printf(“\n%d”, x*x);}
则函数的类型为( C )。
A) 与参数x的类型相同
B) void
C) int
D) 无法确定
32.C语言规定,程序中各函数之间( A )
A) 既允许直接递归调用也允许间接递归调用
B) 不允许直接递归调用也不允许间接递归调用
C) 允许直接递归调用不允许间接递归调用
D) 不允许直接递归调用允许间接递归调用
33.下面程序的输出结果是( A )。
main()
{int i=2,p;
p=f(i,i+1);
printf(“%d”,p);
}
int f(int a,int B)
{int c;
c=a;
if(a>B) c=1;
else
if(a==B) c=0;
else c=-1;
return(C);
}
A) -1
B) 0
C) 1
D) 2
34.以下程序的输出结果为( B )。
f(int b[ ], int n)
{int i, r;
r=1;
for(i=0; i<=n; i++) r=r*b[i];
return(r);
}
main()
{int x, a[ ]={2,3,4,5,6,7,8,9};
x=f(a, 3);
printf(“%d\n”, x);
}
A) 720
B) 120
C) 24
D) 6
35.下列程序执行后的输出结果是( D )。
f(int a)
{int b=0;
static c=3;
a=c++, b++;
return(a);
}
main( )
{int a=2, i, k;
for(i=0;i<2;i++)
k=f(a++);
printf(“%d\n”, k);
}
A) 3
B) 0
C) 5
D) 4
36.下列程序执行后输出的结果是( A )。
int d=1;
fun(int p)
{int d=5;
d+=p++;
printf(“%d”, D);
}
main( )
{int a=3;
fun(a);
d+=a++;
printf(“%d\n”, D);
}
A) 84
B) 96
C) 94
D) 85
37.以下程序的输出结果是( B )。
fun(int k)
{if(k>0) fun(k-1);
printf(“%d”, k);
}
main( )
{int w=5;
fun(w);
}
A) 54321
B) 012345
C) 12345
D) 543210
38.以下说法中正确的是( C )。
A) C语言程序总是从第一个定义的函数开始执行
B) 在C语言程序中,被调用的函数必须在main()函数中定义
C) C语言程序总是从main()函数开始执行
D) C语言程序中的main()函数必须放在程序的开始部分
39.以下程序的输出结果是( C )。
int abc(int u, int v);
main()
{int a=24, b=16, c;
c=abc (a, B);
printf(“%d\n”, C);
}
int abc(int u, int v)
{int w;
while(v)
{w= u%v; u=v; v=w;}
return u;
}
A) 6
B) 7
C) 8
D) 9