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、getchar() 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
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’ ‘!’};
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语言程序中,函数的定义不能嵌套
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
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; return y;}
A、 int B、不确定 C、 void D、 float
15、
#include<stdio.h>
f(in 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); }
上面程序的输出结果是【 B 】
A、 720 B、 120 C、24 D、 6
16.有以下程序:
int 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;}
main()
{
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<stdio.h>
void main ( )
{
char str[ ]="SSWLIA",c;
int k;
for (k=1;(c=str[k])!='\0';k++)
{
switch (c)
{
case 'I': ++k; break ;
case 'L': continue;
default : putchar(c) ; continue ;
}
putchar('*');
}
}
程序运行后的输出结果是【 SW* 】
2、#include<stdio.h>
void fun(int x,int y)
{
x=x+y;
y=x-y;
x=x-y;
printf("%d,%d,",x,y);
}
main()
{
int x=2,y=3;
fun(x,y);
printf("%d,%d\n",x,y);
}
程序运行后的输出结果是【 3,2,2,3 】
3#include <stdio.h>
int a[3][3]={1,2,3,4,5,6,7,8,9},b[10];
main()
{
f(b,a);
printf("%d\n",b[0]);
}
f(int s[],int p[ ][3])
{
s[0]=p[1][1];
}
程序运行后的输出结果是【 5 】
4、fun(int a, int b)
{
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 <stdio.h>
int i=5;
main()
{
int i=3;
{
int i=10;
i++;
}
f1();
i+=1;
printf("%d\n",i);
}
int f1()
{
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();
printf("\n");
}
fun1()
{
for(k=0;k<MAX;k++) a[k]=k+k; }
fun2()
{
int a[MAX],k;
for(k=0;k<5;k++)
a[k]=k;
}
fun3()
{
int k;
for(k=0;k<MAX;k++)
printf("%d",a[k]);
}
程序运行后的输出结果是
8、#include<stdio.h>
main()
{
int k=4,m=1,p;
p=func(k,m); printf("%d",p);
p=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 <stdio.h>
#define M 3
#define N 4
int findmax(int a[ ][N])
{ int i, j, max = a[0][0];
for(i = 0; i< M; ①i++; )
for(j = 0; j<N; j++)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论