admin 管理员组文章数量: 1087139
2024年2月19日发(作者:aconvert在线转换下载)
数组
一、 选择题
1、假定int 类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组X在内存中所占字节数是(B)。
A 3
B 6
C 10
D 20
2、执行下面的程序段后,变量k 中的值为(A)。
int k=3, s[2];
s[0]=k; k=s[1]*10;
A 不定值
B 33
C 30
D 10
3、设有数组定义: char array [ ]="China"; 则数组array 所占的空间为(C)。
A 4 个字节
B 5 个字节
C 6 个字节 有0/的结束标志
D 7 个字节
4、下列描述中不正确的是 C
A 字符型数组中可以存放字符串
B 可以对字符型数组进行整体输入、输出
C 可以对整型数组进行整体输入、输出
D 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
5、给出以下定义
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为 C
A 数组X 和数组Y 等价
B 数组x 和数组Y 的长度相同
C 数组X 的长度大于数组Y 的长度
D 数组X 的长度小于数组Y 的长度
6、下述对C 语言字符数组的描术中错误的是 C
A 字符数组可以存放字符串
B 字符数组中的字符串可以整体输入、输出
C 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D 不可以用关系运算符对字符数组中的字符串进行比较
7、定义如下变量和数组
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是 C
for(i=0;i<3;i++) printf("%d",x[i][2-i]);
A 1 5 9
B 1 4 7
C 3 5 7
D 3 6 9
8、以下一维数组a 的正确定义是(D)
A int a(10);
B float n=10,a[n];
C int n;scanf("%d",&n);float a[n];
D #define size 10; long a[size];
9、合法的数组定义是 D
A int a[]="string";
B int a[5]={0,1,2,3,4,5};
C vhst s="string";
D char a[]={0,1,2,3,4,5};
10、以下关于数组的描述正确的是C
A 数组的大小是固定的,但可以有不同的类型的数组元素;
B 数组的大小是可变的,但所有数组元素的类型必须相同;
C 数组的大小是固定的,但所有数组元素的类型必须相同;
D 数组的大小是可变的,但可以有不同的类型的数组元素;
11、在定义int a[10];之后,对a 的引用正确的是 A
A a[9]
B a[6.3]
C a(6)
D a[10]
12、以下对一维数组a 进行不正确初始化的是 A
A int a[10]=(0,0,0,0);
B int a[10]={};
C int a[]={0};
D int a[10]={10*2};
13、以下对二维数组a 进行正确初始化的是 B
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][]={{1,2},{3,4}};
14、以下对字符数组进行不正确初始化的是 A
A static char word[]='cool0';
B static char word[]={‘c’,’o’,’o’,’l’};
C static char word[]={“cool0”};
D static char word[]=”cool0”;
15、在定义int a[5][4];之后,对数组元素的引用正确的是A a[2][4]
B a[5][0]
C a[0][0]
C
D a[0,0]
16、下列选项中,能正确定义数组的语句是 D
A int num[0..2008];
B int num[];
C int N=2008;
int num[N];
D #define N 2008
int num[N];
17、有以下程序
#include
main()
{int b [3][3]={O,1,2,0,1,2,O,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=1;j++) t+=b[i][b[j][i]];
printf("%d ",t);
}
程序运行后的输出结果是 C
A 1
B 3
C 2
D 9
18、在C 语言中,能实现字符串连接的函数是() A
A strcat()
B strcmp()
C strcpy()
D strlen()
19、在C 语言中,定义数组int a[7]={3,4,5,6,7,8,9},则a[5]的值为( D )。
A 9
B 6
C 7
D 8
20、在C 语言中,定义int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},i=5,则下列选项中不能正确引用数组元素的是(A )。
A a[2*i-12]
B a[2*i-2]
C a[12-i]
D a[2*i]
21、在C 语言中,有以下定义:char b[10]={'h','n','s','p','k','s'};,则语句printf("%cn",b[1]); 的结果为(B )。
A h
B n
C s
D p
22、在C 语言中,定义char a[]={'a','b','l','l','o'},已知字符'b'的ASCII 码
为98,
则printf("%dn",a[0]); 的值为(A )。
A 97
B a
C 98
D b
23、在C 语言中,定义数组int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},则a[3]的
值为(B)
A 3
B 4
C 5
D 6
24. (分值:2.1 分)在C 语言中,有以下程序main(){int
p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i<5) {if(p[i]%2) j+=p[i];
i++;}printf("%dn",j);}程序运行后的输出结果是( A)
A 39
B 45
C 56
D 60
25、在C 语言中,若有定义:int y=3,x[7]={1,2,3,4,5,6,7},则表达式y+=x[2]的值为( A )。
A 6
B 5
C 8
D 9
26、在C 语言中,若有定义:int y=5,x[7]={1,2,3,4,5,6,7},则表达式y+=x[6]的值为(D )。
A 9
B 10
C 11
D 12
27、在执行int a[][3]={1,2,3,4,5,6};语句后,a[1][0]的值是 C
A 1
B 2
C 4
D 5
28、在执行char str[10]=”china0”;strlen(str)的结果是 B
A 5
B 6
C 7
D 9
29、在C 语言中,引用数组元素时,其数组下标的数据类型允许是 B
A 整型常量
B 整型表达式或整型常量
C 实型常量
D 任何类型的表达式
30、若二维数组a
有m
列,则在a[i][j]前的元素个数是()
A j*m+i
B i*m+j
C i*m+j-1
D i*m+j+1
31、以下程序给数组所有的元素输入数据,空处应填入()
main()
{ int a[10],i=0;
while(i<10) scanf(“%d”,____C________);
}
A &a[i]
B a[i++]
C &a[i++]
D &a[++i]
32、有字符数组a[80],b[80],则正确的输出语句是 D
A puts(a,b);
B printf(“%s,%s”,a[],b[]);
C putchar(a,b);
D puts(a);puts(b);
33、以下能正确定义字符串的语句是 D
A char str[]={'064'};
B char str="x43";
C char str=";
D char str[]="0";
34、以下数组定义中正确的是 D
A int x[][3]={0};
B int x[2][3]={{1,2},{3,4},{5,6}};
C nt x[][3]={{1,2,3},{4,5,6}};
D int x[2][3]={1,2,3,4,5,6};
35、要说明一个有10 个int 元素的数组,应当选择语句A int a[10]
B int a[2,5]
C int a[ ]
D int *a[10]
36、已知:int a[10];则对a 数组元素引用正确的是 D
A a[10]
B a[3.5]
C a(5)
D a[10-10]
37、对二维数组的正确说明是 C
A int a[][]={1,2,3,4,5,6};
A
B int a[2][]={1,2,3,4,5,6};
C int a[][3]={1,2,3,4,5,6};
D int a[2,3]={1,2,3,4,5,6};
38、已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是( C)。
A 数组a 和b 的长度相同
B a 数组长度小于b 数组长度
C a 数组长度大于b 数组长度
D 上述说法都不对
39、以下能正确定义一维数组的选项是 B
A int a[5]={0,1,2,3,4,5};
B char a[]={0,1,2,3,4,5};
C char a={''A'',''B'',''C''};
D int a[5]="0123";
40、若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='a',d,g; 则数值为4的表达式是 D
A a[g-c]
B a[4]
C a['d'-'c']
D a['d'-c]
41、合法的数组定义是 B
A int a[]="string";
B int a[5]={0,1,2,3,4,5};
C char s="string";
D char a[]={0,1,2,3,4,5};
42、以下能对二维数组c进行正确的初始化的语句是B
A int c[3][]={{3},{3},{4}};
B int c[][3]={{3},{3},{4}};
C int c[3][2]={{3},{3},{4},{5}};
D int c[][3]={{3},{},{3}};
43、阅读下列程序段,则程序段实现的功能是#include "stdio.h"
main()
{
int k[10];
int j;
for(j=0;j<10;j++)
scanf("%d",&k[j]);
for(j=9;j>=0;j--)
printf("%d,",k[j]);
}
A 输入10个数据的顺序输入并输出
B 输入10个数据的逆序存放
C 输入10个数据的逆序输出
C
D 以上叙述均错误
44、以下对一维数组a的定义中正确的是( C)
A. char a(10);
B. int a[0..100];
C. int a[5];
D. int k=10;int a[k];
45、阅读如下程序段,则程序在先后输入love和china后,输出结果是()(来源二级C)
#include
#include
main()
{ char a[30],b[30];
int k;
gets(a);
gets(b);
k=strcmp(a,b);
if(k>0)puts(a);
else if(k<0)puts(b);}
A)love
B)chinaA
C)lovechina
D)没有输出结果
46、以下程序执行后的输出结果是(A)。
A. 2 B. 3 C. 4 D. 5
#include "string.h"
main( )
{ char *p[10]={ "abc","aabdfg","dcdbe","abbd","cd"};
printf("%dn",strlen(p[4])); 不包括0
}
47、若有定义:
char a[10],*b=a;,则不能给数组a输入字符串”This is a book”的语句是( B )。
A. gets(a) B. scanf("%s",a) C. gets(&a[0]); D. gets(b)
48、以下对一维数组c进行正确的定义初始化的语句是 D
A)int c[10]=0;
B)int c[10]={0}*10;
C)int c[1]={0,0,0,0,0,0,0};
D)int c[10]={0};
49、不能把字符串: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!";
50、若有以下语句,则正确的描述是(B )(注:来源二级C)
char a[]="toyou";
char b[]={′t′,′o′,′y′,′o′,′u′};
A a数组和b数组的长度相同
B a数组长度小于b数组长度
C a数组长度大于b数组长度
D a数组等价于b数组
51、已知:char a[15],b[15]={"I love china"};则在程序中能将字符串I love china赋给数组a的正确语句是(D)
A a="I love china";
B strcpy(b,a);
C a=b;
D strcpy(a,b);
52、下列说法正确的是( B ) .
A. 数组如果没有初始化,也没有被赋值,则每个元素的默认值为0
B. 在给数组初始化时,可以只给其中几个元素赋初值
C. 数值型数组不能使用赋值语句整体赋值,但字符型数组可以使用赋值语句整体赋一个字符串
D. 用一个字符型数组来存放字符串时,可以存放与数组长度等数目的有效字符
53、设有如下字符数组定义,则合法的函数调用是( A
)char a[]={ “I am a student” },b[]={“techer” };
A strcmp(a,b);
B strcpy(a,b[0]);
C strcpy(a[7],b);
D strcat(a[7],b);
54、判断字符串 s1 是否大于字符串 s2,应当使用(D )。
(A) if( s1>s2 )
(B) if( strcmp(s1,s2))
(C) if(strcmp(s2,s1)>0)
(D) if(strcmp(s1,s2)>0)
55、有语句char str1[10],str2[10]={"china"};则能将字符串china赋给数组str1的正确语句是____D____。(注:来源二级C)
A str1={"china"};
B strcpy(str1,str2);
C str1=str2;
D strcpy(str2,str1);
56、合法的数组定义 C
A int a[]={“string”};
B int a[5]={0,1,2,3,4,5};
C char a[]= “string”;
D char a[5]={0,1,2,3,4,5};
57. 若二维数组 a 有 m 列,则计算任一元素 a[i][j]在数组中位置的公式为()(假设 a[0][0]位于数组的第一个位置上 D。
(A) i*m+j
(B) j*m+i
(C) i*m+j-1
(D) i*m+j+1
58. 有两个字符数组 a、b,则以下正确的输入语句是( B )。
(A) gets(a,b);
(B) scanf(“%s%s”,a,b);
(C) scanf(“%s%s”,&a,&b);
(D) gets(“a”),gets(“b”);
59. 以下对二维数组 a 进行正确初始化的语句是( B)。
(A) inta[2][ ]={{1,0,1},{5,2,3}};
(B) inta[ ][3]={{1,2,3},{4,5,6}};
(C) inta[2][4]={{1,2,3},{4,5},{6}};
(D) inta[ ][3]={{1,0,1},{ },{1,1}};
60. 若有说明:intx[3][4]; 则对 a 数组元素的正确引用是(C )。
(A) x[2][4]
(B) x[1,3]
(C) x[4-2][0]
(D) x[0][4]
二、 填空题
1、以下程序运行后的输出结果是 24 。
main()
{ int p[7]={11,13,14,15,16,17,18};
int i=0,j=0;
while(i<7 && p[i]%2==1) j+=p[i++];
printf("%dn",j);
}
2、以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。
请填空。
main()
{ int i,a[20],sun,count;
sun=count=0;
for(i=0;i<20;i++) scanf("%d",&a[i] );
fro(i=0;i<20;i++)
{ if(a[i]>0)
{ count++;
sum+= _____a[i]____;
}
}
printf("sum=%d,count=%dn",sum,count);
}
3、以下程序运行后的输出结果是 13715
main()
{ int i,n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{ n[i]=n[i-1]*2+1;
printf("%d ",n[i]);
}
}
4、以下程序的输出结果是 abc 。
main()
{ char s[]="abcdef";
s[3]= ''0'';
printf("%sn",s);
}
5、若有定义语句:char s[100],d[100]; int j=0, i=0;,且s 中已赋字符串,请填 s[i++]
空以实现字符串拷贝。(注:不得使用逗号表达式)
while(s[i]){ d[j]=;j++;}
d[j]=0;
6、下列程序段的输出结果是 Hello
main()
{ char b[]=”Hello,you”;
b[5]=0;
printf(“%s n”, b );
}
7、下面程序的输出是 12
main()
{ int arr[10],i,k=0;
for( i=0; i<10; i++)
arr[i]=i;
for( i=1; i<4; i++)
k+=arr[i]=i;
printf( ''%dn", k);}
8、设数组a 包括10 个整型元素。下面程序的功能是求出a 中各相邻两个元素的和,并将这些和存在数组b 中,按每行3 个元素的形式输出。请填空。
main()
{ int a[10], b[10],i;
for(i=0;i<10;i+ +)
scan(” %d”,&a[i]);
for(i=1;i<10;i+ +)
b[i]=a[i]+a[i--]; ;
for(i=1;i<10;i+ +)
{ printf(” %3d”,b[i]);
if(i%3==0)printf(”n”);
}
}
9、下面程序段将输出computer,请填空。
char c[]=” it’s a computer”;
for(i=0;i<=7;i++)
{
J=i+7;
printf(” %c”,c[j]);
}
10、若想通过以下输入语句,使a中存放字符串1234,b 中存放字符5,则输入数据 a=1234b=5
的形式应该是
char a [10],b;
scanf("a=%sb=%c",a,&b);
11.下面程序以每行 4 个数据的形式输出 a 数组,请填空。
#define N 20
main( )
{
int a[N],i;
for(i=0;i scanf(“%d”,a[i]); for(i=0;i { if(i % 4 == 0) printf("n");); printf(“%3d”,a[i]); } printf(“n”); } 12.以下程序运行后的输出结果是 3 #include main() { int n[2] , i, j; for(i=0;i<2;i++) n[i]=0; for(i=0;i<2;i++) for(j=0;j<2;j++) n[j]=n[i]+1; printf("%dn",n[1]); } 13. 以下程序运行后输出结果是 14 #include main() { int i,n[]={0,0,0,0,0}; for(i=1;i<=2;i++) { n[i]=n[i-1]*3+1; printf("%d ",n[i]); } printf("n"); } 14. (2011年9月)有以下程序 #include main() {int c[3]={0}, k ,i; while((k=getchar())!='n') c[k-'A']++; for(i=0;i<3;i++) printf("%d",c[i]); printf("n"); } 若程序运行时从键盘输入ABCACC<回车>,则输出结果为 213 15. 己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。 void fun(int a[N],int k) { int i; for(i=k;i ____ a[k]=a[k+1] ___________; } 16. 设有定义语句: int a[][3]={{0},{1},{2}};, 则数组元素a[1][2]的值为_____0__。 17. 有以下程序,程序运行后的输出结果是 1 6 5 7 #include “stdio.h” main() { int a[4][4]={{1,4,3,2},{8,6,5,7}, {3,7,2,5},{4,8,6,1}},i,j,k,t; for(i=0;i<4;i++) } (j=0;j<3;j++) for(k=j+1;k<4;k++) if(a[j][i]>a[k][i]) {t=a[j][i],a[j][i]=a[k][i],a[k][i]=t;} for(i=0;i<4;i++) printf(“%d”,a[i][i]); 下列程序的输出结果是 30 main( ) { int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0; for(i=0;i<3;i+ +) s+ =a[i][i]+a[i][3-i-1]; printf("%dn",s); } 19.以下程序的主函数中调用了在其前面定义的fun函数 #include ∶ main() { double a[15], k; k=fun(a); ∶ } 则以下选项中错误的fun函数的首部是____ double fun( double a)___。 三、编程题 1、计算一维数组中的最大值和最大值所在下标。 2、计算一维数组中最小值和最小值所在下标。 3、从键盘输入一个整数,把转换后得到的二进制序列为存放在数组中,并逆序输出。 4、把Fibonacci数列的前30项保存在数组中,并输出所有的项。 5、从键盘输入一个4×5的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。 6、求一个3 x 3的整型矩阵对角线元素之和。 7、用冒泡排序法对10个整数排序。 8.从键盘输入一个字符串,统计字符串的长度。(不容许使用strlen函数)。 附录: 答案: 一、 选择题 1 D 11 A 21 B 31 C 41 D 51 D 二、 填空题 1 24 2 &a[i] a[i] 6 7 8 9 10 3 1 3 7 15 4 abc 5 s[i++] ; 2 A 12 A 22 A 32 D 42 B 52 B 3 C 13 B 23 B 33 D 43 C 53 A 4 C 14 A 24 A 34 D 44 C 54 D 5 C 15 C 25 A 35 A 45 A 55 D 6 C 16 D 26 D 36 D 46 A 56 C 7 C 17 C 27 C 37 C 47 B 57 D 8 D 18 A 28 A 38 C 48 D 58 B 9 D 19 D 29 B 39 B 49 B 59 B 10 C 20 A 30 B 40 A 50 B 60 C Hello 12 b[i]=a[i]+a[i-1] i<=7 j=i+7 a=1234 b=5 或 a=1234b=5 11 【1】a[i] 【2】i % 4 == 0【3】printf("n"); 12 3 13 1 4 14 2 1 3 15 a[k]=a[k+1] 16 0 17 18 19 double fun( double a) 20 1,6,5,30 7 三、编程题(略)
版权声明:本文标题:C语言题库数组 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1708338576a520411.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论