1、C语言数组与函数阶段测试题答案 一、选择题(18*2=36分) 1、在定义“int a[5][6];”后,第11个元素是【 C 】 A、a[2][5] B、a[2][4] C、a[1][4] D、a[1][5] 2、假定int类型变量占用两个字节,其定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是【 D 】。 A、3 B、6 C、10 D、20 3、当接受用输入的含空格的字符串地,应使用的函数是【 B 】 A、scanf() B、gets() C、ge
2、tchar() D、getc() 4、设有数组定义:char array[]=”China”;。则数组array所占的空间为【 C 】 A、4个字节 B、5个字节 C、6个字节 D、7个字节 5、设有变量定义:int a [ ] = {1,2,3,4}; 执行语句a[3] = - - a[0]? a[1] + + : a[2] + +;执行后,数组的元素a[0], a[1], a[2], a[3]的值依次为【 D 】 A、 1,2,3,4 B、 0,3,3,4 C、 0,2,3,4 D、0,2,4,
3、3 6、以下程序的输出结果是【 C 】 void main( ) {int i, x[3][3] = { 1,2,3,4,5,6,7,8,9} for(i= 0;i < 3; i + +) printf("3%d", x[i][2 - i]); } A、 1 5 9 B、 1 4 7 C、3 5 7 D、 3 6 9 7、不能把字符串:Hello!赋给数组b的语句是【 B 】 A、 char b [10] = {‘H’ ‘e’ ‘l’ ‘l’ ‘o’ ‘!’};
4、 B、char b [10] ; b = “Hello!”; C、 char b [10] ; strcpy(b, “Hello!”); D、char b [10] = “Hello!”; 8、在函数间传递数据的四种方式中,不能把被调函数的数据带回到主调函数的是【 A 】 A、值传递 B、地址传递C、返回值传递D、全局外部变量 9、以下关于函数的叙述中不正确的是【 B 】 A、C程序是函数的集合,包括标准库函数和用户自定义函数 B、在C语言程序中,被调用的函数必须在main函数中定义 C、在C语言程序中,函数的定义不能嵌套
5、D、在C语言程序中,函数的调用可以嵌套 10、若用数组名作为函数调用的实参,则传递给形参的是【 A 】 A、数组的首地址 B、 数组的第一个元素的值 C、数组中全部元素的值 D、数组元素的个数 11、C语言中,凡未指定存储类别的局部变量的隐含存储类别是【 A 】 A、 auto B、static C、extern D、 register 12、若有以下函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是【 A 】 A、3 B、4 C、5 D
6、6 13、若程序中定义函数 float myadd(float a, float b) { return a+b;}并将其放在调用之后,则在调用之前应对该函数进行说明。以下说明中错误的是【 A 】 A、float myadd( float a,b); B、float myadd(float b, float a); C、float myadd(float, float); D、float myadd(float a, float b); 14、以下函数值的类型是【 A 】 fun (float x) { float y; y= 3*x-4; retu
7、rn y;}
A、 int B、不确定 C、 void D、 float
15、
#include
8、nt f(int n) { if(n= =1) return 1; else return f(n-1)+1; } main() { int i,j=0; for(i=1;i<3;i++) j+=f(i); printf("%d\n",j); } 程序运行后的输出结果是【 B 】 A)4 B) 3 C)2 D)1 17.以下程序的输出结果是【 D 】 int f() { static int i=0; int s=1; s+=i; i++; return s;} m
9、ain()
{
int i,a=0;
for(i=0;i<5;i++)
a+=f();
printf("%d\n",a);
}
A)20 B)24 C)25 D)15
18.在C语句中,函数的隐含存储类型是【 A 】
A)auto B)static
C)extern D)无存储类别
二、读程序写结果(8*5=40分)
1、#include
10、k])!='\0';k++)
{
switch (c)
{
case 'I': ++k; break ;
case 'L': continue;
default : putchar(c) ; continue ;
}
putchar('*');
}
}
程序运行后的输出结果是【 SW* 】
2、#include
11、
}
main()
{
int x=2,y=3;
fun(x,y);
printf("%d,%d\n",x,y);
}
程序运行后的输出结果是【 3,2,2,3 】
3#include
12、
{
if(a>b)
return a;
else return b;
}
main()
{
int x=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%d\n",r);
}
程序运行后的输出结果是【 12 】
5、#include
13、 { i=i+1; return(i); } 程序运行后的输出结果是【 4 】 6、int ff(int n) { static int f=1; f=f*n; return f; } main() { int i; for(i=1;i<=5;i++) printf("%5d",ff(i)); } 程序输出的最后一个值是【 120 】 7、#define MAX 5 int a[MAX],k; main() { fun1(); fun3(); fun2(); fun3
14、);
printf("\n");
}
fun1()
{
for(k=0;k
15、func(k,m);printf("%d\n",p); }
func(int a,int b)
{
static int m=0,i=2;
i+=m+1;
m=i+a+b;
return (m);
}
程序运行后的输出结果是
三、程序填空(12*2.5=30)
1 、下面程序求一个二维矩阵的最大值。
# include
16、 for(i = 0; i< M; ①i++; )
for(j = 0; j 17、 max = findmax(a);
printf(“%d”, max);
}
2、下面程序是输出两个字符串中对应相等的字符。
main ()
{char x [ ]= "programming", y[ ]= "Fortran";
int i=0;
while( ①x[i]!='\0'&&y[i]!='\0' )
if (x[i]==y[i])
printf ("%c", ②x[i++] );
else
③i++; }
3、以下为递归 18、法求n!的函数。
float Fac(int n)
{ float f ;
if ( n < 0 )
printf ( “error! ” );
else if ( n = = 0 | | n = = 1) ①f=(float)n;
else ②f=n*Fac(n-1);
return ( ③f )
}
4、 编写N个任意不同的正整数存入数组a,后求数组a最大值与平均值的差,最后输出。
#define N 8
main( )
{int a [N] = {8,6,4,10,7,9,5,1};
int i,max,sum,c;
max =a [0];
sum = ①a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7];
c = 0;
for(i=0;i < N;i + +)
{if(a[i] > max) ②max=a[i];
③c++; }
printf("%f\n", (max-1.0 * sum/c)); }






