内容正文:
《编程语言基础——C语言》高等教育出版社(第五版)
第五章 数组 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共25小题,每题2分,共50分)
1.在C语言中,一位数组的定义方式为:类型说明符 数组名( )
A. [常量表达式] B.[整型常量名]
C. [整型常量或整型表达式] D. [整型常量]
答案:A
2.以下错误的数组定义形式是( )
A.int a[10]; B.int a[3+2];
C.int a[3*3]; D.int a[3.2];
答案:D
3.以下正确的数组定义形式是( )
A.int n;scanf(“%d”,&n);int a[n];
B.int a[1…10];
C.int a[3.2];
D.#define N 10 int a[N];
答案:D
4.以上对一堆整型数据a进行正确初始化的语句是( )
A.int a[10]=(0,0,0,0,0); B.int a[10]={};
C.int a[]={}; D.int a[10]={10*1};
答案:D
5.在C语言中,有语句“int a[]={0,1,2,3};”,则数组a的长度是( )
A.3 B.4 C.5 D.6
答案: B
6.在C语言中,有语句“char ch[10];”,则数组ch所占字节数为( )
A.10 B.11 C.12 D.20
答案: A
7.以下程序段的输出结果是( )。
main(){
int i,a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);}
A.258 B.741 C.852 D.369
答案: C
8.以下程序段的输出结果是_________________。
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
”,k);}
A.58 B.56 C.45 D.24
答案:D
9.若有说明int a[5][4],则对数组元素正确引用的是( )
A.a[3+1][2*2]; B.a(2+1)(0);
C.a[2+2,3]; D.a[2*2][3];
答案:D
10.若有说明:int a[3][4],则对a数组元素的正确引用是( )
A.a[2][4]; B.a[1,3];
C.a[1+1][0]; D.a(2)(1);
答案:C
11. 下列二维数组初始化语句中,正确的是( )
A.int a[][3]={8,0,7,0,3,1,2,5};
B.int a[][]={{9,3,1},{8,4,2},{3,5,7}};
C.flota a[2][3]={{1,2},{3,4},{5,6}};
D.float a[3][]={{1,2,3},{4,5,6},{7,8,9}};
答案:A
12.以下不能正确定义二维数组的选项是( )
A.int a[2][2]={{1},{2}};
B.int a[][2]={1,2,3,4};
C.int a[2][2]={{1},2,3};
D.int a[2][]={{1,2},{3,4}};
答案:D
13. 以下对二维数组a进行正确初始化的是( )
A.int a[2][3]={{1,2},{3,4},{5,6}};
B.int a[][3]={1,2,3,4,5,6};
C.int a[2][]={1,2,3,4,5,6};
D.int a[2][0]={{1,0,1},{1},{1,1}};
答案:B
14.以下对二维数组a进行正确初始化的是( )
A.int a[2][3]={{1,2,3},{4,5},{6}};
B.int a[][3]={{1,2,3},{4,5,6}};
C.int a[2][4]={1,2,3};
D.int a[][3]={{1,0,1},{1},{1,1}};
答案:A
15.对于以下定义正确的叙述为( )
char x[]="abcdefg";
char y[]={'a','b','c','d','e','f','g'};
A.数组x和数组y等价
B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度
D.数组x的长度小于数组y的长度
答案:C
16.以下不能正确进行字符串赋初值的语句是( )
A.char str[5]="good!";
B.char str[]="good!";
C.char *str="good!";
D.char str[5]={'g','o','o','d'};
答案:A
17.设有以下变量定义:char str[20],i;当输入“zhang空格hong回车”时,能输入“zhang hong”的程序段是( )
A.scanf(“%s”,str);
B.for(i=0,str[i]=getchar();str[i]!='
';)
str[i++]=getchar();
C.gets(str);
D.for(i=0,str[i]=getchar();str[i]!='\0';i++)
str[i]=scanf("%c",str[i]);
答案:C
18.以下程序段printf("%d
",strlen("ATS
012\1\\")); 的输出结果是( )
A.11 B.10 C.9 D.8
答案:C
19. 以下语句 printf("%d
",strlen("\t\"\065\xff
")); 的输出结果是( )
A.5 B.14 C.8 D.9
答案:A
20.以下程序段char s[]="\\141\141abc\t";printf("%d
",strlen(s));的输出结果是( )
A.9 B.12 C.13 D.14
答案:A
21. 以下程序段char str[]="ab
\012\\\"";printf("%d
",strlen(str));的输出结果是( )
A.3 B.4 C.6 D.12
答案:C
22.若有以下说明和语句,则输出结果是( )
char sp[]="\t
\\0wi11
";printf("%d
",strlrn(sp));
A.4 B.3 C.9 D.字符串中有非法字符
答案:C
23. 以下程序的输出结果是( )
#include<string.h>
main(){
char *p="abcde\0fghik\0";
printf("%d
",strlen(p));}
A.12 B.15 C.6 D.5
答案:D
24.有以下程序,执行后输出结果是( )
char a[]="abcdefg",b[10]="abcdefg";
printf("%d %d
",sizeof(a),sizeof(b));
A.7 7 B.8 8 C.8 10 D.10 10
答案:C
25.函数调用:strcat(strcpy(str1,str2),str3)的功能是( )
A.将串str1复制到串str2中后再连接到串str3之后
B.将串str1连接到串str2中后再连接到串str3之后
C.将串str2复制到串str1中后再将串str3连接到串str1之后
D.将串str2连接到串str1中后再将串str1复制到串str3之后
答案:C
二、简答题(本题共5小题,每题6分,共30分)
26. 以下程序的输出结果是【 】。
int a[5],i;
for(i=0;i<5;i++)
{a[i]=2*i+1;
printf(“%d ”,a[i]);}
答案:1 3 5 7 9
27. 以下程序的运行结果是【 】。
int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j,s=0;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
s+=a[i][j];
printf("%d
",s);
答案:11
28. 以下程序的运行结果是【 】。
#include<stdio.h>
main(){
int a[4],i;
for(i=0;i<4;i++)
{a[i]=i*2+1;
printf("a[%d]=%d",i,a[i]);} }
答案:a[0]=1 a[1]=3 a[2]=5 a[3]=7
29. 以下程序的运行结果是【 】。
#include<stdio.h>
main(){
int i,a[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{a[i]=a[i-1]*2+1;
printf("%d",a[i]);} }
答案:1 3 7 15
30. 以下程序的运行结果是【 】。
#include<stdio.h>
main(){
int n[3],i,j,k;
for(i=0;i<3;i++)
n[i]=0;k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++)
n[j]=n[i]+1;
printf("%d
",n[k]);}
答案:0
三、案例分析题(本题共2小题,共20分)
31.已知一维整型数组a中的数已按由小到大的顺序排序,编写程序,删去一维数组中所有相同的数,使之只剩一个。例如:a数组中元素为{2, 2, 3, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 10, 10, 10, 10};
【参考程序】#include <stdio.h>
main() {
int a[20] = {2, 2, 2, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 10, 10, 10, 10};
int i, j;
printf("请输入
");
for (i = 0; i < 20; i++)
printf("%3d", a[i]);
for (j = 1, i = 1; i < 20; i++)
if (a[j - 1] != a[i])
a[j++] = a[i];
printf("请输出
");
for (i = 0; i < j; i++)
printf("%3d", a[i]);
}
32.计算并输出杨辉三角形的前10行。杨辉三角形的前5行如图a所示,其中最左和最有两个数均为1,中间的每个元素等于左上方和右上方两个元素之和。
提示:可将杨辉三角形存于一个二维数组中,如图b所示。
1 1
1 1 1 1
1 2 1 1 2 1
1 3 3 1 1 3 3 1
1 4 6 4 1 1 4 6 4 1
图a 图b
【参考程序】#include <stdio.h>
//#define N 10 // 定义杨辉三角的行数
int main() {
int i, j, a[10][10] = {0}; // 初始化二维数组
// 初始化杨辉三角的第一列和最后一列
for (i = 0; i < N; i++) {
a[i][0] = 1; // 第一列置为1
a[i][i] = 1; // 最后一列置为1
}
// 计算杨辉三角的其他元素
for (i = 2; i < 10; i++) {
for (j = 1; j < i; j++) {
a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; // 当前元素等于上一行的左右两个元素之和
}
}
// 打印杨辉三角
for (i = 0; i < 10; i++) {
for (j = 0; j <= i; j++) {
printf("%d ", a[i][j]); // 打印当前元素,并保持一定的格式
}
printf("
"); // 每打印完一行后换行
}
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
《编程语言基础——C语言》高等教育出版社(第五版)
第五章 数组 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共25小题,每题2分,共50分)
1.在C语言中,一位数组的定义方式为:类型说明符 数组名( )
A. [常量表达式] B.[整型常量名]
C. [整型常量或整型表达式] D. [整型常量]
2.以下错误的数组定义形式是( )
A.int a[10]; B.int a[3+2];
C.int a[3*3]; D.int a[3.2];
3.以下正确的数组定义形式是( )
A.int n;scanf(“%d”,&n);int a[n];
B.int a[1…10];
C.int a[3.2];
D.#define N 10 int a[N];
4.以上对一堆整型数据a进行正确初始化的语句是( )
A.int a[10]=(0,0,0,0,0); B.int a[10]={};
C.int a[]={}; D.int a[10]={10*1};
5.在C语言中,有语句“int a[]={0,1,2,3};”,则数组a的长度是( )
A.3 B.4 C.5 D.6
6.在C语言中,有语句“char ch[10];”,则数组ch所占字节数为( )
A.10 B.11 C.12 D.20
7.以下程序段的输出结果是( )。
main(){
int i,a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);}
A.258 B.741 C.852 D.369
8.以下程序段的输出结果是_________________。
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
”,k);}
A.58 B.56 C.45 D.24
9.若有说明int a[5][4],则对数组元素正确引用的是( )
A.a[3+1][2*2]; B.a(2+1)(0);
C.a[2+2,3]; D.a[2*2][3];
10.若有说明:int a[3][4],则对a数组元素的正确引用是( )
A.a[2][4]; B.a[1,3];
C.a[1+1][0]; D.a(2)(1);
11. 下列二维数组初始化语句中,正确的是( )
A.int a[][3]={8,0,7,0,3,1,2,5};
B.int a[][]={{9,3,1},{8,4,2},{3,5,7}};
C.flota a[2][3]={{1,2},{3,4},{5,6}};
D.float a[3][]={{1,2,3},{4,5,6},{7,8,9}};
12.以下不能正确定义二维数组的选项是( )
A.int a[2][2]={{1},{2}};
B.int a[][2]={1,2,3,4};
C.int a[2][2]={{1},2,3};
D.int a[2][]={{1,2},{3,4}};
13. 以下对二维数组a进行正确初始化的是( )
A.int a[2][3]={{1,2},{3,4},{5,6}};
B.int a[][3]={1,2,3,4,5,6};
C.int a[2][]={1,2,3,4,5,6};
D.int a[2][0]={{1,0,1},{1},{1,1}};
14.以下对二维数组a进行正确初始化的是( )
A.int a[2][3]={{1,2,3},{4,5},{6}};
B.int a[][3]={{1,2,3},{4,5,6}};
C.int a[2][4]={1,2,3};
D.int a[][3]={{1,0,1},{1},{1,1}};
15.对于以下定义正确的叙述为( )
char x[]="abcdefg";
char y[]={'a','b','c','d','e','f','g'};
A.数组x和数组y等价
B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度
D.数组x的长度小于数组y的长度
16.以下不能正确进行字符串赋初值的语句是( )
A.char str[5]="good!";
B.char str[]="good!";
C.char *str="good!";
D.char str[5]={'g','o','o','d'};
17.设有以下变量定义:char str[20],i;当输入“zhang空格hong回车”时,能输入“zhang hong”的程序段是( )
A.scanf(“%s”,str);
B.for(i=0,str[i]=getchar();str[i]!='
';)
str[i++]=getchar();
C.gets(str);
D.for(i=0,str[i]=getchar();str[i]!='\0';i++)
str[i]=scanf("%c",str[i]);
18.以下程序段printf("%d
",strlen("ATS
012\1\\")); 的输出结果是( )
A.11 B.10 C.9 D.8
19. 以下语句 printf("%d
",strlen("\t\"\065\xff
")); 的输出结果是( )
A.5 B.14 C.8 D.9
20.以下程序段char s[]="\\141\141abc\t";printf("%d
",strlen(s));的输出结果是( )
A.9 B.12 C.13 D.14
21. 以下程序段char str[]="ab
\012\\\"";printf("%d
",strlen(str));的输出结果是( )
A.3 B.4 C.6 D.12
22.若有以下说明和语句,则输出结果是( )
char sp[]="\t
\\0wi11
";printf("%d
",strlrn(sp));
A.4 B.3 C.9 D.字符串中有非法字符
23. 以下程序的输出结果是( )
#include<string.h>
main(){
char *p="abcde\0fghik\0";
printf("%d
",strlen(p));}
A.12 B.15 C.6 D.5
24.有以下程序,执行后输出结果是( )
char a[]="abcdefg",b[10]="abcdefg";
printf("%d %d
",sizeof(a),sizeof(b));
A.7 7 B.8 8 C.8 10 D.10 10
25.函数调用:strcat(strcpy(str1,str2),str3)的功能是( )
A.将串str1复制到串str2中后再连接到串str3之后
B.将串str1连接到串str2中后再连接到串str3之后
C.将串str2复制到串str1中后再将串str3连接到串str1之后
D.将串str2连接到串str1中后再将串str1复制到串str3之后
二、简答题(本题共5小题,每题6分,共30分)
26. 以下程序的输出结果是【 】。
int a[5],i;
for(i=0;i<5;i++)
{a[i]=2*i+1;
printf(“%d ”,a[i]);}
27. 以下程序的运行结果是【 】。
int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j,s=0;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
s+=a[i][j];
printf("%d
",s);
28. 以下程序的运行结果是【 】。
#include<stdio.h>
main(){
int a[4],i;
for(i=0;i<4;i++)
{a[i]=i*2+1;
printf("a[%d]=%d",i,a[i]);} }
29. 以下程序的运行结果是【 】。
#include<stdio.h>
main(){
int i,a[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{a[i]=a[i-1]*2+1;
printf("%d",a[i]);} }
30. 以下程序的运行结果是【 】。
#include<stdio.h>
main(){
int n[3],i,j,k;
for(i=0;i<3;i++)
n[i]=0;k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++)
n[j]=n[i]+1;
printf("%d
",n[k]);}
三、案例分析题(本题共2小题,共20分)
31.已知一维整型数组a中的数已按由小到大的顺序排序,编写程序,删去一维数组中所有相同的数,使之只剩一个。例如:a数组中元素为{2, 2, 3, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 10, 10, 10, 10};
32.计算并输出杨辉三角形的前10行。杨辉三角形的前5行如图a所示,其中最左和最有两个数均为1,中间的每个元素等于左上方和右上方两个元素之和。
提示:可将杨辉三角形存于一个二维数组中,如图b所示。
1 1
1 1 1 1
1 2 1 1 2 1
1 3 3 1 1 3 3 1
1 4 6 4 1 1 4 6 4 1
图a 图b
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$