C语言程序设计单元测试题三
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计_单元测试题三本单元包含“数组、函数”的内容。
一、选择题
1.以下为一维整型数组a的正确说明是_________.
A)int a(10); B)int n=10,a[n];
C)int n; D)#define SIZE 10;
scanf("%d",&n); int a[SIZE];
int a[n];
2.以下对二维数组a的正确说明是________.
A)int a[3][]; B)float a(3,4);
C)double a[1][4] D)float a(3)(4);
3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______.
(假设a[0][0]位于数组的第一个位置上。
)
A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1
4.若二维数组a有m列,则在a[i][j]前的元素个数为________.
A)j*m+i B)i*m+j C)i*m+j-1 D)i*m+j+1
5.25.若有以下程序段:
int a[]={4,0,2,3,1},i,j,t;
for(i=1;i<5;i++)
{t=a[i];j=i-1;
while(j>=0&&t>a[j])
{a[j+1]=a[j];j--;}
a[j+1]=t;}
... ...
则该程序段的功能是_________.
A)对数组a进行插入排序(升序) B)对数组a进行插入排序(降序)
C)对数组a进行选择排序(升序) D)对数组a进行选择排序(降序)
6.有两个字符数组a、b,则以下正确的输入语句是_______.
A)gets(a,B); B)scanf("%s%s",a,B);
C)scanf("%s%s",&a,&B); D)gets("a"),gets("b");
7.下面程序段的运行结果是_________.
char a[7]="abcdef";</P< p>
char b[4]="ABC";
strcpy(a,B);
printf("%c",a[5]);
A)空格B)\0 C)e D)f
8.判断字符串s1是否大于字符串s2,应当使用_______.
A)if(s1>s2) B)if(strcmp(s1,s2))
C)if(strcmp(s2,s1)>0) D)if(strcmp(s1,s2)>0)
9.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔,请选择填空。
#include <stdio.h>
main()
{
char s[80],c1,c2='';
int i=0,num=0;
gets(s);
while(s[i]!='\0')
{c1=s[i];
if(i==0)c2='';
else c2=s[i-1];
if(___)num++
i++;
}</P< p>
printf("There are %d words.\n",num);
}
A)c1==''&&c2=='' B)c1!=''&&c2==''
C)c1==''&&c2!='' D)c1!=''&&c2!=''
10.下面程序的运行结果是________.
#include <stdio.h>
main()
{char str[]="SSSWLIA",c;
int k;
for(k=2;(c=str[k])!='\0';k++)
{switch(C)
{case 'I':++k;break;
case 'L':continue;
default:putchar(C);continue;
}
putchar('*');
}
}
A)SSW* B)SW* C)SW*A D)SW
11.以下正确的说法是_________.
建立函数的目的之一是
A)提高程序的执行效率B)提高程序的可读性
C)减少程序的篇幅D)减少程序文件所占内存
12.以下正确的函数定义形式是________.
A)double fun(int x,int y) B)double fun(int x; int y)
C)double fun(int x, int y); D)double fun(int x,y);
13.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为______.
A)地址传递
B)单向值传递
C)由实参传给形参,再由形参传回给实参
D)由用户指定传递方式
14.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是______.
A)float B)int C)long D)double
15.已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array 的错误定义方式为________.
int a[3][4];
f(A);
A)f(int array[][6]) B)f(int array[3][])
C)f(int array[][4]) D)f(int array[2][5])
16.以下程序的正确运行结果是_________.
#include <stdio.h>
void num()</P< p>
{extern int x,y;int a=15,b=10;
x=a-b;
y=a+b;
}
int x,y;
main()
{
int a=7,b=5;
x=a+b;
y=a-b;
num();
printf("%d,%d\n",x,y);
}
A)12,2 B)不确定C)5,25 D)1,12
17. 以下对一维整型数组a的正确的说明是_________。
A)int a(10); B)int n=10,a[n];
C)int n; D)#define SIZE 10
scanf(“%d”,&n); int a[SIZE];
int a[n];
18. 若有说明:int a[10];则对a数组元素的正确引用是_________。
A)a[10] B)a[3.5] C)a(5) D)a[10-10]
19. 以下能对一维数组a进行正确初始化的语句是_________。
A)int a[10]=(0,0,0,0,0) B)int a[10]={};
C)int a[ ]={0}; D)int a[10]={10*1};
20.下面程序段的运行结果是_________。
char a[7]=”abcdef”;
char b[4]=”ABC”;
strcpy(a,b);
printf(“%c”,a[5]);
A)[空格] B)\0 C)e D)f
21.对两个数组a和b进行如下初始化
char a[ ]=”ABCDEF”;
char b[ ]={‘A’,’B’,’C’,’D’,’E’,’F’};
则以下叙述正确的是_________。
A)a与b数组完全相同 B)a与b长度相同
C)a和b中都存放字符串 D)a数组比b数组长度长
22. 对以下说明语句的正确理解是_________。
int a[10]={6,7,8,9,10};
A)将5个初值依次赋给a[1]至a[5]
B)将5个初值依次赋给a[0]至a[4]
C)将5个初值依次赋给a[6]至a[10]
D)因为数组长度与初值的个数不相同,所以此语句不正确
23. 若二维数组a有m列,则在a[i][j]前的元素个数为_________。
A)j*m+i B)i*m+j C)i*m+j-1 D)i*m+j+1
24. 若有以下程序段:
……
int a[ ]={4,0,2,3,1},i,j,t;
for(i=1;i<5;i++)
{t=a[i];j=i-1;
while(j>=0&&t>a[j])
{a[j+1]=a[j];j--;}
a[j+1]=t;
……
}
则该程序段的功能是_________。
A)对数组a进行插入排序(升序)
B)对数组a进行插入排序(降序)
C)对数组a进行选择排序(升序)
D)对数组a进行选择排序(降序)
25. 下面是对s的初始化,其中不正确的是_________。
A)char s[5]={“abc”}; B)char s[5]={‘a’,’b’,’c’};
C)char s[5]=””; D)char s[5]=”abcdef”;
二、填空题
1.若有定义:double x[3][5];则x数组中行下标的下限为____【1】_____,列下标
的上限为____【2】_____.
2.下面程序以每行4个数据的形式输出a数组,请填空。
#define N 20
main()
{int a[N],i;
for(i=0;i<N;i++)scanf("%d",____【3】___);
for(i=0i<N;i++)
{if (______【4】_______) _____【5】________
printf("%3d",a[i]);
}
printf("\n");
}
3. 下面程序可求出矩阵a的主对角线上的元素之和,请填空。
main()
{int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(___【6】__)sum=sum+___【7】____;
printf("sum=%d\n",sum);
}
4. 当从键盘输入18并回车后,下面程序的运行结果是___【8】_____.
main()
{int x,y,i,a[8],j,u,v;
scanf("%d",&x);
y=x;i=0;
do
{u=y/2;
a[i]=y%2;
i++;y=u;
}while(y>=1)
for(j=i-1;j>=0;j--)
printf("%d",a[j]);</P< p>
}
5. 下面程序用插入法对数组a进行降序排序。
请填空。
main()
{int a[5]={4,7,2,5,1};
int i,j,m;
for(i=1;i<5;i++)
{m=a[i];
j=____;【9】
while(j>=0&&m>a[j])
{_______;【10】
j--;
}
_______=m; 【11】
}
for(i=0;i<5;i++)
printf("%d",a[i]);
printf("\n");
}
6. 下面程序的功能是在三个字符串中找出最小的,请填空。
#include<stdio.h>
#include<string.h>
main()
{char s[20],str[3][20];
int i;
for(i=0;i<3;i++)gets(str[i]);
strcpy(s,_______); 【12】
if(strcmp(str[2],s)<0)strcpy(s,str[2]);
printf("%s\n",_______);【13】
}
7. 下面程序的运行结果是________.【14】
#include<stdio.h>
main()
{char s[]="ABCCDA";
int k;char c;
for(k=1;(c=s[k])!='\0';k++)
{switch(C)
{case 'A':putchar('%');continue;
case 'B':++k;break;
default:putchar('*');</P< p>
case 'C':putchar('&');continue;
}
putchar('#');
}
}
8.以下程序的运行结果是_____.【15】
#include<stdio.h>
main()
{int a=1,b=2,c;
c=max(a,B);
printf("max is %d\n",C);
}
max(int x,int y)
{int x;
z=(x>y)?x:y;
return(z);
}
9.函数gongyu的作用是求整数num1和num2的最大公约数,并返回该值。
请填空。
gongyu(int num1,int num2)
{int temp,a,b;
if(num1(_____) num2) 【16】
{temp=num1;num1=num2;num2=temp;}
a=num1;b=num2;
while(____)【17】
{temp=a%b;a=b;b=temp;}
return(A);
}
10.以下程序的运行结果是________.【18】
int a=5;int b=7;
main()
{ int a=4,b=5,c;
c=plus(a,B);
printf("A+B=%d\n",C);
}
plus(int x,int y)
{int z;
z=x+y;
return(x);
}
11.以下程序的运行结果是_______.【19】
main()
{incx();
incy();
incx();
incy();
incx();
incy();
}
incx()
{
int x=0;
printf("x=%d\t",++x);
}
incy()
{static int y=0;
printf("\ny=%d\n",++y);
}
12.下面程序段的运行结果是__________。
【20】
//本程序将数字字符串转换成数值
#include "stdio.h"
main()
{
char ch[]="600"; //ch中放数字字符串
int a,s=0; //转换后的值放在s中
for(a=0;ch[a]>='0'&&ch[a]<='9';a++) //当字符为数字字符时循环,否则跳出
s=10*s+ch[a]-'0'; //将数字字符与’0’相减,再加上初值的十倍,得到数值printf("\n%d",s);
}
13. 以下正确的说法是__________。
【21】
A)用户若需调用标准库函数,调用前必须重新定义
B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C)系统根本不允许用户重新定义标准库函数
D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用
户源文件中,系统自动去调
14. 以下正确的函数定义形式是__________。
【22】
A)double fun(int x,int y) B) double fun(int x;int y) C) double fun(int x,int
y); D) double fun(int x, y);
15. 以下正确的说法是__________。
在C语言中【23】
A)实参和与其对应的形参各占用独立的存储单元
B)实参和与其对应的形参共占用一个存储单元
C)只有当实参和与其对应的形参同名时才共占用存储单元
D)形参是虚拟的,不占用存储单元
16. 以下正确的说法是__________。
【24】
A)定义函数是,形参的类型说明可以放在函数体内
B)return后边的值不能为表达式
C)如果函数值的类型与返回值类型不一致,以函数值类型为准
D)如果形参与实参的类型不一致,以实参类型为准
18. C语言允许函数值类型缺省定义,此时该函数值隐含的类型是__________。
【25】
A)float型 B)int型 C)long型 D)double型
三、编程题
1.定义一个10个元素的一维数组,然后完成下列任务:
(1)用随机函数给元素赋以(30,90)间的随机值,并输出。
(2)用冒泡法对数组作升序排序,并输出后的数。
(3)从键盘输入一个数,然后插入数组中,并使数组仍然有序;然后输出插入后的
数组。
(4)从键盘输入一个原数组中存在的数,然后从数组中删除此数;然后输出删除后的数组。
2.将上题中的输出定义为一个输出函数“out(int a[],n)”,然后完成上题中的所有任务。