内容正文:
《编程语言基础——C语言》高等教育出版社(第五版)
第五章 数组 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共20小题,每题2分,共40分)
1. 以下对一维数组a的定义中正确的是( )
A. char a(10); B.int a[0..10];
C. int a[10]; D. int c=10; int a[c];
2. 以下对一维数组的定义中不正确的是( )
A. double x[5]={2.0,0,6.0,8.0,10.0};
B. int y[5]={2,1,3,5,7,9};
C. char z[ ]={‘1’,‘2’,‘3’};
D. char h[ ]={‘\x10’,‘\xa’,‘\x8’};
3. 以下对二维数组的定义中正确的是( )
A. int a[3][]={1,2,3,4,5,6}; B. int a[][3];
C.int a[][3]={1,2,3,4,5,6}; D. inta[][]={{1,2,3},{4,5,6}};
4. 假定一个 int型变量占用两个字节,若有定义:int x[5]={0,2,4};则数组x在内存中所占字节数是( )
A.6 B.10 C.20 D.3
5. 以下程序的输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int a[4][4]={{1,4,5},{8,4,6},{3,6,7}};
printf("%d%d%d%d
",a[1][3],a[1][0],a[3][1],a[3][2]);
getch(); }
A.0800 B.1450 C.4860 D.5136
6. 以下程序的输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int m[][3]={1,4,7,2, 5,8, 3, 6,9};int i,k=1;
for(i=0; i<3; i++)printf("%d ", m[k][i]);
getch(); }
A.456 B.258 C.369 D.789
7. 以下程序的输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int b[3][3]={0,1,2,2, 0, 2, 3, 1,2},i, j,t=0;
for(i=0;i<3;i++)
for(j=i; j<=i;j++)
t=t+b[i][b[j][j]]; printf("%d
",t);
getch();}
A.3 B.4 C.1 D.9
8. 若有定义:int a[5][5];,则引用数组元素正确的是( )
A. a[0][5] B. a[0][4] C. a[5][5] D. a[2][2+3]
9. 若有定义:int ch1[10];,则不能代表数组元素ch1[1]地址的是( )
A.&ch1[0]+1 B.&ch1[l] C.&ch1[0]++ D.ch1+1
10. 以下程序的输出结果是( )
#include "string.h"
main( )
{ char p[5][10]={ "abe5","aabdfg78","dcd22be", "33abbd","cdff5"}:
printf("%d
", strlen(p[4]));}
A.5 B.6 C.8 D.7
11. 以下能正确定义二维数组的是( )
A.int a[][5]; B. int a[][5]={2};
C.int a[][5]={}; D.int a[2][5]={{1}},{2}, {3,4}};
12. 以下程序的输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int i,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0; i<3;i++) printf("%d ", x[i][i]);
getch();}
A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9
13. 下列描述中,不正确的一项是( )
A.字符型数组中可以存放字符串
B.可以对字符串进行整体输入、输出
C.可以对浮点型数组进行整体输入、输出
D.不能在复制语句中通过赋值运算符对字符型数组进行整体赋值
14. 设有定义:char a[10]=“ABCD”;,则a[4]的值为( )
A.“ABCD” B.‘\0’ C.‘D’ D.0
15. 设有定义:char s[15]=“it is string”;则printf(“%d”,strlen(s));的输出结果是( )
A.12 B.13 C.15 D.14
16. 语句strcat(strcpy(str1,str2),str3);的功能是( )
A. 将字符串 str2 复制到字符串 str1 后再将字符串str3 连接到字符串 str1 之后。
B. 将字符串 str2 连接到字符串 str1 后再将字符串 str1 复制到字符串 str3 中。
C. 将字符串 str1 连接到字符串 str2中后再复制到字符串 str3之后。
D. 以上说法均不准确
17. 若有如下定义,则正确的叙述为( )
char x[]="abcde";
char y[]={'a’,’b’,’c','d’,'e’};
A.数组x和数组y相等 B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度 D.数组y的长度大于数组x的长度
18. 若有定义:char array []=“china”;则数组array所占空间为( )字节。
A.4 B.6 C.5 D.7
19. 以下关于字符数组的描述中,错误的一项是( )
A.字符数组可以存放字符串
B.字符数组中的字符串可以进行整体输入输出
C.可以在使用赋值运算符对字符数组进行整体赋值
D.不可以使用关系运算符对字符串进行比较
20. 以下关于数组的描述中,正确的一项是( )
A.数组的大小是固定的,但是数组中的元素可以是不同类型
B.数组的大小是固定的,但是数组中的元素必须是相同类型
C.数组的大小是可变的,但是数组中的元素可以是不同类型
D.数组的大小是可变的,但是数组中的元素必须是相同类型
二、程序运行结果题(本题共7小题,每题3分,共21分)
21. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int a[5]={0};
int i,b[10]={2,2,5,3,2,4,3,1,3,5}; for(i=0;i<5;i++) a[b[i]]++;
for(i=0;i<5;i++) printf( "%d ",a[i]);
getch(); }
22. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int i,k,a[10],p[3]; k=8;
for(i=0;i<10;i++) a[i]=i;
for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2;
printf( "%d
",k);
getch(); }
23. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int i,j,row,col,max;
int a[3][4]={{1,1,3,4},{9,8,7,6},{-1,-3,0,11}}; max=a[0][0]; row=0;col=0;
for(i=0;i<3;i++) for(j=0;j<4;j++) if(a[i][j]>max)
{max=a[i][j];row=i;col=j; }
printf( " max=%d,row=%d,co1=%d
",max,row,col);
getch();}
24. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int a[3][3]={{1,8},{2,3},{4,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++)
s+=a[i][j];
printf("%d",s);
getch(); }
25. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int a[5],i,m=10,k=8; for(i=0;i<5;i++) a[i]=m%k;
for(i--;i>=0;i--) printf("%d", a[i]);
getch(); }
26. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{ char str[50]="welcome2025";
int i,n=0;
for(i=0;str[i]!='\0';i++)
if('0'<=str[i]&& str[i]<='9')
n=n *10+str[i]-'0';
printf("result =%d
",n);
getch(); }
27. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
#include<string.h>
main( )
{ char s[]="cdyhggert",t; int i=0,j=strlen(s)-1; while(i<j-1)
{t=s[j];s[j]=s[i];s[i]=t;i++;j--;}
puts(s);
getch(); }
三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
28. 下面程序的功能是将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。
#include <stdio.h>
#include <string.h>
main()
{ char a[="language",t;
int i, j, k;
k=strlen(a);
for(i=0; i<=k-2; i+=2)
for(j=i+2;j<k;【1】)
if(【2】){t=a[i]; a[i]=a[j]; a[j]=t; }
puts(a); printf("
"); }
29. 下面程序的功能是把给定的字符按其矩阵格式读入数组str中,并输出行号与列号之和为3的数组元素。请填空。
#include<sydio.h>
main()
{ char str[4][3]={‘A',‘b','c,‘d',‘E',‘f’,‘G',‘h',‘T’,‘j',’K',‘T'};
int x, y, z;
for(x=0; x<4; x++)
for (y=0;【1】; y++)
{z=x+y;
if(【2】)
printf("%c
",【3】); }}
30. 下面程序的功能是输入一个3x3的实数矩阵,求两条对角线元素中各自的最大值。请填空。
#include<stdio.h>
main()
{ float s[3][3],max1,max2,x;
int i, j;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
{ scanf("%f", &x); s[i][j]=x; }
maxl=【1】 ;
for(i=1; i<3;i++)
if(【2】) max1=s[i][i];
max2=【3】 ;
if(max2<s[1][1]) max2=s[1][1];
if(max2<s[2][0]) max2=s[2][0];
printf("max1=%fn",maxl);
printf("max2=%f
",max2);}
四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共15分)
下面程序的功能是统计年龄在16~31岁之间的学生人数。程序中有三处错误,请改正。L1 #include <stdio.h>
L2 main( )
L3 {int a[30], n , age,i;
L4 for(i=0;i<30;i++) a[i]=0;
L5 printf(“Enter the number of the students(<30)
");
L6 scanf("%d",&n);
L7 printf("Enter the age of each student:
");
L8 for(i=0;i<n;i++)
L9 { scanf("%d",age);
L10 a[age]++;}
L11 printf("the result is
");
L12 printf(" age number
");
L13 for(i=16;i<32;i++)
L14 printf("%3d %6d
",i,a[i]);}
31. 下面程序的功能是检查一个二维数组是否对称(即对所有i、j都有 a[i][j]=a[j][i]),程序中有两处错误,请改正。
L1 #include <stdio.h>
L2 main( )
L3 { int a[4][4]={l,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4};
L4 int i,j,found=0;
L5 for(j=0;j<4;j++)
L6 for(i=j;i<4;i++)
L7 if(a[j][i]!=a[i][j])
L8 {found=0;break;}
L9 if(found= =1) printf("No");
L10 else printf("Yes");}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
《编程语言基础——C语言》高等教育出版社(第五版)
第五章 数组 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共20小题,每题2分,共40分)
1. 以下对一维数组a的定义中正确的是( )
A. char a(10); B.int a[0..10];
C. int a[10]; D. int c=10; int a[c];
答案:C
2. 以下对一维数组的定义中不正确的是( )
A. double x[5]={2.0,0,6.0,8.0,10.0};
B. int y[5]={2,1,3,5,7,9};
C. char z[ ]={‘1’,‘2’,‘3’};
D. char h[ ]={‘\x10’,‘\xa’,‘\x8’};
答案:B
3. 以下对二维数组的定义中正确的是( )
A. int a[3][]={1,2,3,4,5,6}; B. int a[][3];
C.int a[][3]={1,2,3,4,5,6}; D. inta[][]={{1,2,3},{4,5,6}};
答案:C
4. 假定一个 int型变量占用两个字节,若有定义:int x[5]={0,2,4};则数组x在内存中所占字节数是( )
A.6 B.10 C.20 D.3
答案:B
5. 以下程序的输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int a[4][4]={{1,4,5},{8,4,6},{3,6,7}};
printf("%d%d%d%d
",a[1][3],a[1][0],a[3][1],a[3][2]);
getch(); }
A.0800 B.1450 C.4860 D.5136
答案:A
6. 以下程序的输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int m[][3]={1,4,7,2, 5,8, 3, 6,9};int i,k=1;
for(i=0; i<3; i++)printf("%d ", m[k][i]);
getch(); }
A.456 B.258 C.369 D.789
答案:B
7. 以下程序的输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int b[3][3]={0,1,2,2, 0, 2, 3, 1,2},i, j,t=0;
for(i=0;i<3;i++)
for(j=i; j<=i;j++)
t=t+b[i][b[j][j]]; printf("%d
",t);
getch();}
A.3 B.4 C.1 D.9
答案:B
8. 若有定义:int a[5][5];,则引用数组元素正确的是( )
A. a[0][5] B. a[0][4] C. a[5][5] D. a[2][2+3]
答案:B
9. 若有定义:int ch1[10];,则不能代表数组元素ch1[1]地址的是( )
A.&ch1[0]+1 B.&ch1[l] C.&ch1[0]++ D.ch1+1
答案:C
10. 以下程序的输出结果是( )
#include "string.h"
main( )
{ char p[5][10]={ "abe5","aabdfg78","dcd22be", "33abbd","cdff5"}:
printf("%d
", strlen(p[4]));}
A.5 B.6 C.8 D.7
答案:A
11. 以下能正确定义二维数组的是( )
A.int a[][5]; B. int a[][5]={2};
C.int a[][5]={}; D.int a[2][5]={{1}},{2}, {3,4}};
答案:B
12. 以下程序的输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int i,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0; i<3;i++) printf("%d ", x[i][i]);
getch();}
A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9
答案:A
13. 下列描述中,不正确的一项是( )
A.字符型数组中可以存放字符串
B.可以对字符串进行整体输入、输出
C.可以对浮点型数组进行整体输入、输出
D.不能在复制语句中通过赋值运算符对字符型数组进行整体赋值
答案:C
14. 设有定义:char a[10]=“ABCD”;,则a[4]的值为( )
A.“ABCD” B.‘\0’ C.‘D’ D.0
答案:B
15. 设有定义:char s[15]=“it is string”;则printf(“%d”,strlen(s));的输出结果是( )
A.12 B.13 C.15 D.14
答案:A
16. 语句strcat(strcpy(str1,str2),str3);的功能是( )
A. 将字符串 str2 复制到字符串 str1 后再将字符串str3 连接到字符串 str1 之后。
B. 将字符串 str2 连接到字符串 str1 后再将字符串 str1 复制到字符串 str3 中。
C. 将字符串 str1 连接到字符串 str2中后再复制到字符串 str3之后。
D. 以上说法均不准确
答案:A
17. 若有如下定义,则正确的叙述为( )
char x[]="abcde";
char y[]={'a’,’b’,’c','d’,'e’};
A.数组x和数组y相等 B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度 D.数组y的长度大于数组x的长度
答案:C
18. 若有定义:char array []=“china”;则数组array所占空间为( )字节。
A.4 B.6 C.5 D.7
答案:B
19. 以下关于字符数组的描述中,错误的一项是( )
A.字符数组可以存放字符串
B.字符数组中的字符串可以进行整体输入输出
C.可以在使用赋值运算符对字符数组进行整体赋值
D.不可以使用关系运算符对字符串进行比较
答案:C
20. 以下关于数组的描述中,正确的一项是( )
A.数组的大小是固定的,但是数组中的元素可以是不同类型
B.数组的大小是固定的,但是数组中的元素必须是相同类型
C.数组的大小是可变的,但是数组中的元素可以是不同类型
D.数组的大小是可变的,但是数组中的元素必须是相同类型
答案:B
二、程序运行结果题(本题共7小题,每题3分,共21分)
21. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int a[5]={0};
int i,b[10]={2,2,5,3,2,4,3,1,3,5}; for(i=0;i<5;i++) a[b[i]]++;
for(i=0;i<5;i++) printf( "%d ",a[i]);
getch(); }
答案:0 0 3 1 0
22. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int i,k,a[10],p[3]; k=8;
for(i=0;i<10;i++) a[i]=i;
for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2;
printf( "%d
",k);
getch(); }
答案:24
23. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int i,j,row,col,max;
int a[3][4]={{1,1,3,4},{9,8,7,6},{-1,-3,0,11}}; max=a[0][0]; row=0;col=0;
for(i=0;i<3;i++) for(j=0;j<4;j++) if(a[i][j]>max)
{max=a[i][j];row=i;col=j; }
printf( " max=%d,row=%d,co1=%d
",max,row,col);
getch();}
答案:max=11,row=2,co1=3
24. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int a[3][3]={{1,8},{2,3},{4,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++)
s+=a[i][j];
printf("%d",s);
getch(); }
答案:15
25. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int a[5],i,m=10,k=8; for(i=0;i<5;i++) a[i]=m%k;
for(i--;i>=0;i--) printf("%d", a[i]);
getch(); }
答案:22222
26. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{ char str[50]="welcome2025";
int i,n=0;
for(i=0;str[i]!='\0';i++)
if('0'<=str[i]&& str[i]<='9')
n=n *10+str[i]-'0';
printf("result =%d
",n);
getch(); }
答案:result =2025
27. 以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
#include<string.h>
main( )
{ char s[]="cdyhggert",t; int i=0,j=strlen(s)-1; while(i<j-1)
{t=s[j];s[j]=s[i];s[i]=t;i++;j--;}
puts(s);
getch(); }
答案:tregghydc
三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
28. 下面程序的功能是将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。
#include <stdio.h>
#include <string.h>
main()
{ char a[="language",t;
int i, j, k;
k=strlen(a);
for(i=0; i<=k-2; i+=2)
for(j=i+2;j<k;【1】)
if(【2】){t=a[i]; a[i]=a[j]; a[j]=t; }
puts(a); printf("
"); }
答案:
【1】j=j+2或j+=2
【2】a[i]>a[j]
29. 下面程序的功能是把给定的字符按其矩阵格式读入数组str中,并输出行号与列号之和为3的数组元素。请填空。
#include<sydio.h>
main()
{ char str[4][3]={‘A',‘b','c,‘d',‘E',‘f’,‘G',‘h',‘T’,‘j',’K',‘T'};
int x, y, z;
for(x=0; x<4; x++)
for (y=0;【1】; y++)
{z=x+y;
if(【2】)
printf("%c
",【3】); }}
答案:
【1】y<3
【2】z==3
【3】str[x][y]
30. 下面程序的功能是输入一个3x3的实数矩阵,求两条对角线元素中各自的最大值。请填空。
#include<stdio.h>
main()
{ float s[3][3],max1,max2,x;
int i, j;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
{ scanf("%f", &x); s[i][j]=x; }
maxl=【1】 ;
for(i=1; i<3;i++)
if(【2】) max1=s[i][i];
max2=【3】 ;
if(max2<s[1][1]) max2=s[1][1];
if(max2<s[2][0]) max2=s[2][0];
printf("max1=%fn",maxl);
printf("max2=%f
",max2);}
答案:
【1】s[0][0]
【2】max1<s[i][i]
【3】s[0][2]
四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共15分)
31. 下面程序的功能是统计年龄在16~31岁之间的学生人数。程序中有三处错误,请改正。
L1 #include <stdio.h>
L2 main( )
L3 {int a[30], n , age,i;
L4 for(i=0;i<30;i++) a[i]=0;
L5 printf(“Enter the number of the students(<30)
");
L6 scanf("%d",&n);
L7 printf("Enter the age of each student:
");
L8 for(i=0;i<n;i++)
L9 { scanf("%d",age);
L10 a[age]++;}
L11 printf("the result is
");
L12 printf(" age number
");
L13 for(i=16;i<32;i++)
L14 printf("%3d %6d
",i,a[i]);}
答案:
【1】L9 { scanf("%d",&age);
【2】L10 a[age-16]++;}
【3】L14 printf("%3d %6d
",i,a[i-16]);}
32. 下面程序的功能是检查一个二维数组是否对称(即对所有i、j都有 a[i][j]=a[j][i]),程序中有两处错误,请改正。
L1 #include <stdio.h>
L2 main( )
L3 { int a[4][4]={l,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4};
L4 int i,j,found=0;
L5 for(j=0;j<4;j++)
L6 for(i=j;i<4;i++)
L7 if(a[j][i]!=a[i][j])
L8 {found=0;break;}
L9 if(found= =1) printf("No");
L10 else printf("Yes");}
答案:
【1】L6 for(i=j+1;i<4;i++)
【2】L8 {found=1;break;}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$