一、判断题 (24分)
1. 函数的递归调用不过是一个函数直接地调用它自身。2分 2. 在c语言中,在main函数中定义的变量称为全局变量。2分 3. 静态变量和外部变量都是全局变量,它们的存储是静态的。2分 4. 静态局部变量只在本函数内可用。2分 5. 静态外部变量只在本文件内可用。
2分
2分
6. 变量根据其作用域的范围可以分作局部变量和全局变量.
2分
7. 任何数组在使用时必须先定义。2分
8. 如果想使一个数组中全部元素的值为1,可以写成 int a[10]={1*10};9. 如果定义数组int b[6]={1,2,3,4};则b[6]为0。
2分
2分
10. int n=10; int a[n];则数组a有10个元素。2分
11. int b[][3] = {1,2,3,4,5,6,7} ,表示数组b是3行3列的数组。
二、选择题 (36分)
1.根据下面函数print的定义,选出调用函数print(5378)的值是( )。 [A] 2分 void print(long n) {
if (n==0) return ; else{
print(n/10);
printf(\ d\
return ; } }
A. 5 3 7 8 B. 8 7 3 5 C. 3 5 7 8 D. 8 7 5 3 2.根据下面函数f,选出f(f(3))的值是( )。 [C] 2分 int f(int x)
{
static int k=0; x=x+k; k--; return x;
}
A. 5 B. 3 C. 2 D. 4
3.如果在函数中定义一个变量,有关该变量作用域正确的是( )。 [A] 2分
A. 只在该函数中有效 B. 在该文件中有效 C. 在本程序中有效 D. 为非法变量 4.下列叙述中,正确的叙述项是( )。 [B] 2分
A. 定义函数时,必须要有形参
B. 函数中可以没有return语句,也可以有多条return语句 C. 函数f可以用f(f(x))形式调用,这种调用形式是递归调用 D. 函数必须有返回值
5.下列说法正确的是( ) [D] 2分
A. 在C语言中,可以使用动态内存分配技术定义元素个数可变的数组 B. 在C语言中,数组元素的个数可以不确定,允许随机变动
C. 在C语言中,数组元素的数据类型可以不一致
D. 在C语言中,定义了一个数组后,就确定了它所容纳的具有相同数据类型元素的个数 6.以下能正确定义一维数组的选项是( )。 [D] 2分 A. int a[5]={0,1,2,3,4,5}; B. char a={′A′,′B′,′C′};
C. int a[5]=\
D. char a[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};
7.若有定义语句:int a[10];则下列对a中数组元素正确引用的是( )。 [A] 2分 A. a[10/2–5] B. a[10] C. a[4.5] D. a(1) 8.能对一维数组正确初始化的语句是( )。 [A] 2分 A. int a[6]={6*1} B. int a[6]={1,,,3} C. int a[6]={} D. int a[6]=(0,0,0) 9.下面对数组定义正确的是() [C] 2分
A. int b[]; B. int b[n],n=5; C. int b[10/2]; D. int b[4.8]; 10.假设int型变量占两个字节的存储单元,若有定义: int x[10]={0,2,4};
则数组x在内存中所占字节数为______。 [D] 2分 A. 3 B. 6 C. 10 D. 20
11.下列程序运行后的输出结果是______。 [D] 2分 Main() {int n[3],t,j,k; for(t=0;t<3;t++) n[t]=0; k=2;
for(t=0;t printf(\A. 2 B. 1 C. 0 D. 3 12.有以下程序 main() { int p[7]={11,13,14,15,16,17,18}, i=0,k=0; while(i<7 && p[i]%2) { k =k+ p[i]; i++; } printf(\ } 执行后输出结果是_______。 [D] 2分 A. 58 B. 56 C. 45 D. 24 13.若定义如下变量和数组_________。 int j; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是_________。 [C] 2分 For (j=0;j<3;j++) Printf(\ A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9 14.有以下程序 main() { int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0; i<3; i++) { printf(\ } 执行后输出结果是______。 [C] 2分 A. 4 5 6 B. 2 5 8 C. 3 6 9 D. 7 8 9 15.以下能正确定义数组并正确赋初值的语句是______。 [D] 2分 A. int N=5,b[N][N]; B. int a[1][2]={{1},{3}}; C. int c[2][]= {{1,2},{3,4}}; D. int d[3][2]={{1,2},{34}}; 16.以下程序的输出结果是_______。 [B] 2分 main() { int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) t=t+b[i][b[j][j]]; printf(\ } A. 3 B. 4 C. 1 D. 9 17.设int a[][4]={1,2,3,4,5,6,7,8,9};则数组a的第一维的大小是 [B] 2分 A. 2 B. 3 C. 4 D. 无确定值 18.若a是具有3个元素的一维整型数组,且各元素已被正确赋值,则下面程序段的功能是( )。 [D] 2分 if (a[0] { t=a[0]; a[0]=a[1]; a[1]=t;} if (a[1]>a[2]) m = a[1]; else if( a[0]>a[2]) m = a[2]; else m = a[0]; printf(\ A. 无特殊功能 B. 输出m值是三个元素的最小值 C. 输出m值是三个元素的最大值 D. 输出m值是三个元素的中间值 三、程序填空题 (22分) 1. 功能:通过函数的递归调用计算阶乘。 #include f=__(1)__; else f=1; return(f); } void main() 5分 { int n; long y; scanf(\ y=__(2)__; printf(\ } (1)答案 2分 power(n-1)*n (2)答案 2分 power(n) (3)答案 2分 y 2. 功能:以下程序是用选择法对10个整数按升序排序。 5分 #include int i,j,k,t; int a[N+1]; for(i=0;i<=N-1;i++) scanf(\ for(i=0;i __(2)__; for(j=i+1;__(3)__;j++) if(a[j] t=a[i]; a[i]=a[k]; a[k]=t; } } printf(\ for(i=0;i<=N-1;i++) printf(\ printf(\ return 0; } (1)答案 2分 N 10 (2)答案 2分 k=i (3)答案 2分 j (4)答案 2分 k != i 3. 功能:输出Fibonacci数列的前10项,要求每行输出5项。Fibonacci数列: 1,1,2,3,5,8,13........... 5分 #include int __(1)__[14],i; fib[0]=1;fib[1]=1; for (i=2;i<10;i++) fib[i]=fib[i-2]+__(2)__; for(i=0;i<10;i++) { printf(\ if ( i%5 == 4 ) printf(\ } } (1)答案 1分fib (2)答案 2分fib[i-1] 4. 功能:将一个数组中的元素按逆序存放。 #include { static int a[N]={12,9,16,5,7,2,1},k,s; __(1)__(\ for (k=0;k s=a[k]; a[k]=__(2)__; a[N-k-1]=s ; } printf(\ for (k=0;k printf (\} (1)答案 1分 printf (2)答案 (3)答案 四、程序设计题 (30分) 1. 母牛的故事 10分 题目描述 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头 2分 5分 a[N-k-1] 2分 k++