C语言习题(6)
第六章 数组
一.填空题
1. C语言数组的下标总是从 开始,不可以为负数;构成数组各个元素具有相同的 。
2. 在C语言中,二维数组的元素在内存中的存放顺序是 。
3. 若有定义:double x[3][5],则x数组中行下标的下限为 ,列下标的上限为 。
4. 若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]的值为 ,a[2][1]得到的值为 。
5. 若有定义int a[][4]={1,2,3,4,5,6,7,8,9},则数组a第一维的大小为 。
6. 设char str[100]=”Hangzhou”;则数组str所在内存空间应为 字节。
7. 下列程序的输出结果是 。
char str[ ][10]={”abcd”,”1234”,”efgh”,”5678”};
int k=1;
printf(“%s”,str[k++]);
8. 欲将字符串S1复制到字符串S2中,其语句是 。
9. 如果在程序中调用了strcat函数,则需要预处理命令 ;如果调用了gets函数,则需要预处理命令 。
10. 字符串是以 为结束标志的一维字符数组。有定义:char a[]=”China”;则a数组的长度是 。
11. 数组在内存中占用一段连续的存储空间,该存储空间的首地址用 表示。
12. 调用strlen(“abcd\0ef\0g”)的返回值为 。
二.选择题
1. 在C语言中,引用数组元素时,其数组下标的数据类型允许是 。
A)整型常量 B)整型表达式
C)整型常量或整型表达式 C)任何类型的表达式
2. 以下对一维整型数组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];
3. 若有定义:int a[10],则对数组a元素的正确引用是 。
A)a[10] B)a[3.5] C)a(5) D)a[10-10]
4. 若有定义:int a[3][4],则对数组a元素的正确引用是 。
A)a[2][4] B)a[1,3] C)a(5) D)a[10-10][2]
5. 以下能对二维数组a进行正确初始化的语句是 。
A)int a[2][]={{1,0,1},{5,2,3}} ;
B)int a[][3]={{1,2,3},{4,5,6}} ;
C)int a[2][4]={{1,2,3},{4,5},{6}} ;
D)int a[1][4]={1,2,3,4,5c语言二维数组表示方法} ;
6. 以下不能对二维数组a进行正确初始化的语句是 。
A)int a[2][3]={0} ;
B)int a[][3]={{1,2},{0}} ;
C)int a[2][3]={{1,2},{3,4},{5,6}} ;
D)int a[][3]={1,2,3,4,5,6} ;
7. 若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为 。(设a[0][0]的位置为0)
A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1
8. 以下不正确的定义语句是 。
A)double x[5]={2.0,4.0,6.0,8.0,10.0};
B)int y[5]={0,1,3,5,7,9} ;
C)char c1[ ]={‘1’,’2’,’3’,’4’,’5’} ;
D)char c2[ ]={‘\x10’,’\xa’,’\x8’} ;
9. 下面程序段的输出结果是 。
int k,a[3][3]={1,2,3,4,5,6,7,8,9};
for (k=0;k<3;k++) printf(“%d”,a[k][2-k]);
A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7
10. 下面是对s的初始化,其中不正确的是 。
A)char s[5]={“abc”}; B)char s[5]={‘a’,’b’,’c’};
C)char s[5]=” ”; D)char s[5]=”abcdef”;
11. 下面程序段的输出结果是 。
char c[5]={‘a’,’b’,’\0’,’c’,’\0’};
printf(“%s”,c);
A)’a’’b’ B)ab C)ab c D)abc
12. 有两个字符数组a,b,则以下正确的输入语句是 。
A)gets(a,b); B)scanf(“%s%s”,a,b);
C)scanf(“%s%s”,&a,&b); D)gets(“a”),gets(“b”);
13. 判断字符串a和b是否相等,应当使用 。
A)if (a= =b) B)if (a=b)
C)if (strcpy(a,b)) D) if (strcmp(a,b)= =0)
14. 判断字符串a是否大于b,应当使用 。
A)if (a>b) B)if (strcmp(a,b))
C)if (strcmp(b,a)>0) D)if (strcmp(a,b)>0)
15. 下面叙述正确的是 。
A)两个字符串所包含的字符个数相同时,才能比较字符串
B)字符个数多的字符串比字符个数少的字符串大
C)字符串”STOP ”与”Stop”相等
D)字符串”That”小于字符串”The”
16. 下面有关字符数组的描述中错误的是 。
A)字符数组可以存放字符串
B)字符串可以整体输入,输出
C)可以在赋值语句中通过赋值运算对字符数组整体赋值
D)不可以用关系运算符对字符数组中的字符串进行比较
17. 若输入数据:abcd1234 efgh<回车>,以下程序的运行结果是 。
char s[13];
scanf(“%s”,s); printf(“%s\n”,s);
A)abcd B)abcd1234 efgh
C)abcd1234 D)abcd1234efgh
18. 函数strcmp(“Int”,”int”)的返回值为 。
A)0 B)正数 C)负数 D)”Intint”
19. 当执行下面的程序时,如果输入ABC,则输出结果是 。
char ss[10]=”1,2,3,4,5”;
gets(ss); strcat(ss,”6789”); printf(“%s\n”,ss);
A)ABC6789 B)ABC67 C)12345ABC6 D)ABC456789
20. 不能把字符串”Hello!”赋给数组b的语句是 。
A)char b[]={‘H’,’e’,’l’,’l’,’o’,’!’,’\0’};
B)char b[]=”Hello!”;
C)char b[10]; b[10]=”Hello!”;
D)char b[10]; strcpy(b,”Hello!”);
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. 有以下程序
char a[]={“abcdefgh”};
int i,j;
i=sizeof(a); j=strlen(a);
printf(“%d,%d\n”,i,j);
程序运行后的输出结果是 。
A)9,9 B)8,9 C)1,8 D)9,8
三.程序阅读题
1. 下列程序的输出结果是 。
#include<stdio.h>
int main ( )
{ char b []="Hello you";
b[5]=0;
printf ("%s\n",b);
return 0;
}
2. 写出下面程序的运行结果 。
#include<stdio.h>
int main ( )
{ int i,f[10];
f[0]=f[1]=1;
for(i=2;i<10;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<10;i++)
{ if(i%4= =0) printf(“\n”);
printf(“%3d”,f[i]); }
return 0;
}
3. 写出下面程序的运行结果 。
#include<stdio.h>
int main ( )
{ int i=5;
char c[6]=”abcd”;
do {
c[i]=c[i-1];
} while(--i>0);
printf(“%c %c\n”,c[0],c[1]);
return 0;
}
4. 写出下面程序的运行结果 。
#include<stdio.h>
int main ( )
{ int i=0;
char a[ ]=”abm”, b[ ]=”aqid”, c[10];
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论