第七章 数组.docx
《第七章 数组.docx》由会员分享,可在线阅读,更多相关《第七章 数组.docx(34页珍藏版)》请在冰豆网上搜索。
第七章数组
第七章数组
一、选择题
1.在C语言中引用数组元素时,下面关于数组下标数据类型的说法错误的是_______________。
A)整型常量B)整型表达式C)整型常量或整型表达式 D)任何类型的表达式
2.以下能正确定义一维数组a的选项是________________。
A) inta[5]={0,1,2,3,4,5};B)chara[]={0,1,2,3,4,5};
C)chara={'A','B','C'}; D)inta[5]="0123";
3.以下能正确定义一维数组a的选项是________________。
A)inta(10);B)intn=10,a[n];
C)intn;D)#defineSIZE10
scanf("%d",&n);inta[SIZE];
inta[n];
4.若有定义:
inta[10];则正确引用数组a元素的是____________。
A)a[10]B)a[3]C)a(5)D)a[-10]
5.以下不正确的数组定义是____________。
A)doublex[5]={2.0,4.0,6.0,8.0,10.0};B)inty[5]={0.,1,3,5,7,9};
C)charc1[]={'1','2','3','4','5'};D)charc2[]={'\x10','\xa','\x8'};
6.以下叙述中错误的是_______________。
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D)可以通过赋初值的方式确定数组元素的个数
7. 以下正确的二维数组定义是______________。
A)inta[][]={1,2,3,4,5,6};B)inta[2][]={1,2,3,4,5,6};
C)inta[][3]={1,2,3,4,5,6};D)inta[2,3]={1,2,3,4,5,6};
8.以下对二维数组a进行初始化正确的是______________。
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}};
9.以下不能对二维数组a进行初始化的是___________。
A)inta[2][3]={0};B)inta[][3]={{1,2},{0}};
C)inta[2][3]={{1,2},{3,4},{5,6}};D)inta[][3]={1,2,3,4,5,6};
10.若有定义:
inta[3][4];则正确引用数组a元素的是___________。
A)a[2][4]B)a[3][3]C)a[0][0]D)a[3][4]
11.若定义了intb[][3]={1,2,3,4,5,6,7};则b数组第一维的长度是___________。
A)2 B)3 C)4 D)无确定值
12.若有定义:
inta[3][4]={0};则以下叙述中正确的是___________。
A)只有元素a[0][0]可得到初值0 B)此说明语句不正确
C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值0
13.若有定义:
inta[][4]={0,0};以下叙述中错误的是_____________。
A)数组a的每个元素都可得到初值0 B)二维数组a的第一维大小为1
C)因为初值个数除以a中第二维大小的值的商为0,故数组a的行数为1
D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
14.若二维数组a有m列,则计算元素a[i][j]在数组中相对位置的公式为___________。
A)i*m+jB)j*m+iC)i*m+j-1D)i*m+j+1
15.设charx[]="12345",y[]={'1','2','3','4','5','\0'};以下叙述中正确的是_____________。
A)x数组的长度等于y数组的长度 B)x数组的长度而在于y数组的长度
C)x数组的长度少于y数组的长度 D)x数组与y数组的存储区域相同
16.下面是对字符数组s进行初始化,其中不正确的是___________。
A)chars[5]={"abc"}'B)chars[5]={'a','b','c'};
C)chars[5]="";D)chars[5]="abcde";
17.字符'数组s不能作为字符串使用的是________________。
A)chars[]="happy";B)chars[6]={'h','a','p','p','y','\0'};
C)chars[]={"happy"};D)chars[5]={'h','a','p','p','y'};
18下面有关字符数组的描述中错误的是___________。
A) 字符致组可以存放字符串
B) 字符串可以整体输入、输出
c)可以在赋值语句中通过赋值运算对字符数组整体斌值
D)不可以用关系运算符对字符数组中的字符串进行比较
19.下面程序段执行后的输出结果是________________。
intk,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)357B)369C)159D)147
20.下面程序段执行后的输出结果是________________。
charc[5]={'a','b','\0','c','\0'};
printf("%s",c);
A)'a''b'B)abC)abcD)abc
21.有两个字符数组a、b,则以下________________是正确的输入语句。
A)gets(a,b);B)scanf("%s%s",a,b);C)scanf("%s%s",&a,&b);D)gets("a");gets("b");
22.下面程序段执行后的输出结果是________________。
chara[7]="abcdef";
charb[4]="ABC";
strcpy(a,b);
printf("%s",a[5]);
A)空格B)\0C)eD)f
23.下面程序段执行后的输出结果是_____。
charc[]="\t\b\\\0will\n";
printf("%d",strlen(c));
A)14B)3C)9D)6
24.判断字符串a是否大于b,应当使用___________。
A)if(a>b)B)if(strcmp(a,b))
C)if(strcmp(b,a)>0)D)if(strcmp(a,b)>0)
25.表达式strcmp("3.14","3.278")的值是____________。
A)非零整数B)浮点数C) 0D)字符
26.以下叙述中正确的是___________。
A)两个字符串所包含的字符个数相同时,才能比较字符串
B)字符个数多的字符串比字符个数少的字符串大
C)字符串"STOP"与"STOP"相等
D)字符串"That"与"The"相等
27.有以下程序:
#include
#include
voidmain()
{
charp[]={'a','b','c'},q[10]={'a','b','c'};
printf("%d%d",strlen(p),strlen(q));
}
以下叙述中正确的是___________。
A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
C)由于q数组中没有字符串结束符,长度不能确定:
但p数组中字符串长度为3
D)由于p和q数组中都没有字符串结束符,故长度都不能确定
28.下面程序运行时从键盘上输入:
123 456 789回车,其输出结果是___________。
#include
voidmain()
{
chars[100];intc,i;
scanf("%c",&c);scanf("%d",&i);scanf("%s",s);
printf("%c,%d,%s",c,i,s);
}
A)123,456,789 B)1,456,789C)1,23,456,789D)1,23,456
29.下面程序运行时从键盘上输入:
ABC回车,其输出结果是___________。
#include
#include
voidmain()
{
charss[10]="12345";
gets(ss);strcat(ss,"6789");
printf("%s",ss);
}
A)ABC6789B)ABC67C)12345ABC6D)ABC456789
30.下面程序执行后的输出结果是___________。
#include
#include
voidmain()
{
chararr[2][4];
strcpy(arr,"you");strcpy(arr[1],"me");arr[0][3]='&';
printf("%s",arr);
}
A)you&meB)youC)meD)错误
31.下面程序执行后的输出结果是___________。
#include
voidmain()
{
charch[7]="12ab56";inti,s=0;
for(i=0;ch[i]>'0'&&ch[i]<='9';i+=2)
s=10*s+ch[i]-'0';
printf("%d",s);
}
A)1B)1256C)12ab56D)ab
32.下面程序执行后的输出结果是___________。
#include
voidmain()
{
charstr[]="SSWLIA",c;intk;
for(k=2;(c=str[k])!
='\0';k++)
{
switchI(c)
{
case'I':
++k;break;
case'L':
continue;
default:
putchar(c);continue;
}
putchar('*');
}
}
A)SSWB)SW*C)SW*AD)SW
33.下面程序执行后的输出结果是___________。
#include
voidmain()
{
inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)
s+=a[i][j];
printf("%d",s);
}
A)18B)19C)20D)21
34.下面程序执行后的输出结果是___________。
#include
voidmain()
{
charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++)
printf("%s",w[k]);
}
A)ABCDFGHKLB)ABCDEFGIJMC)EFGJKOD)EFGHIJKL
35.下面程序执行后的输出结果是___________。
#include
voidmain()
{
intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};;
inti,s=0;
for(i=0;i<4;i++)a+=aa[i][1];
printf("%d",s);
}
A)11B)13C)19D)20
二、填空题
1.C语言数组的下标总是从_________开始,不可以为负数;数组各个元素具有相同的__________。
2.在C语言中,二维数组的元素在内存中的存放顺序是_____________________。
3.在C语言中,一个二维数组可以看成若干个_____________数组。
4.若有定义:
inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后a[1][2]的值为_________,a[2][1]得到的值为____________。
5.若有定义:
double x[3][5];则x数组中行下标的上限为_______,列下标的上限为__________。
6.字符串是以___________为结束标志的一维字符数组。
若有定义:
chara[]="";则a数组的长度是___。
7.字符串"ab\n\\012\\"的长度是___________。
8.若有定义:
chara[]="abcdefg",b[10]="abcdefg";语句printf("%d%d",sizeof(a),sizeof(b));执行后的输出结果是___________。
9.若要求从键盘读入含有空格的字符串,应使用________________面数。
10.欲为字符串S1输入"HelloWorld!
",其语句是______________________。
11.欲将字符串S1复制到字符中S2中,其语句是_________________。
12.如果在程序中调用了strcat函数,则需要预处理命令_________。
如果调用了gets函数,则需要预处理命令____________。
13.程序中使用了字符运算函数(如isupper),则需要预处理命令_________。
14.若有定义:
chara[]="windows",b[]="9x";则执行语句printf("%s",strcat(a,b));后的输出结果为___________。
15.下面程序执行后的输出结果是_________________。
#include
voidmain()
{
intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7)if(p[i]%2)j+=p[i];
printf("%d",j);
}
16.下面程序执行后的输出结果是_________________。
#include
voidmain()
{
inta[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("%d",s);
}
17.下面程序段执行后的输出结果是_________________。
charx[]="theteacher";inti=0;
while(x[++i]!
='\0')
if(x[i-1]=='t')printf("%c",x[i]);;
}while(!
x);
18.下面程序执行后的输出结果是_________________。
#include
voidmain()
{
charb[]="Hello,you";
b[5]=0;
printf("%d",b);
}
19.下面程序段执行后的输出结果是_________________。
chara[7]="a0\0a0\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d",i,j);
20.若有定义:
chara[80]="95",b[]="windows";则执行语句printf("%s",strcat(a,b));后的输出结果为______________。
三、程序阅读题
1.写出下面程序执行后的运行结果。
#include
voidmain()
{
inti,n[]={0,0,0,0,0};
for(i=1;i<=4;i++){
n[i]=n[i-1]*2+1;
printf("%d",n[i]);
}
}
2.写出下面程序执行后的运行结果。
#include
voidmain()
{
inti,a[5];
for(i=0;i<5;i++)
a[i]=9*(i-2+4*(i>2))%5;
for(i=4;i>=0;i--)
printf("%d",a[i]);
}
3.下面程序运行时从键盘上输入:
7 4 8 9 1 5回车,写出程序的运行结果。
#include
voidmain()
{
inta[6],i,j,k,m;
for(i=0;i<6;i++)
scanf("%d",&a[i]);
for(i=5;i>=0;i--){
k=a[5];
for(j=4;j>=0;j--)
a[j+1]=a[j];
a[0]=k;
for(m=0;m<6;m++)
printf("%d",a[m]);
printf("\n");
}
}
4.下面程序运行时从键盘上输入:
1 23-4回车,写出程序的运行结果。
#include
voidmain()
{
inti,k=0,s=0,a[10];
while
(1){
scanf("%d",&a[k]);
if(a[k]<=0)brerak;
s=s+a[k++];
}
for(i=0;iprintf("%d",s);
}
5.写出下面程序执行后的运行结果。
#include
voidmain()
{
inti,k=5,a[10],p[3];
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\n",k);
}
6.写出下面程序执行后的运行结果。
#include
voidmain()
{
intx[]={1,3,5,7,2,4,6,0},i,j,k;
for(i=0;i<3;i++)
for(j=2;j>=i;j--)
if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;};
for(i=0;i<3;i++)
for(j=4;j<7-i;j++)
if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}
for(i=0;i<3;i++)
for(j=4;j<7-i;j++)
if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}
for(i=0;i<8;i++)printf("%d",x[i]);
}
7.写出下面程序执行后的运行结果。
#include
voidmain()
{
inta[6][6],i,j;
for(i=0;i<6i++)
for(j=1;j<6;j++)
a[i][j]=(i/j)*(j/i);
for(i=0;i<6;i++){
for(j=1;j<6i;j++)
printf("%2d",a[i][j]);
printf("\n");
}
}
8.写出下面程序执行后的运行结果。
#include
voidmain()
{
inta[3][3]={{1},{2},{3}};
intb[3][3]={1,2,3};
printf("%d",a[1][0]+b[0][1]);
printf("%d\n",a[0][1]+b[1][0]);
}
9.写出下面程序执行后的运行结果。
#include
voidmain()
{
inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4){
if(i==2||i==4)continue;
j=0;
do{s+=a[i][j];j++;}while(j<4);
}
printf("%d",s);
}
10.写出下面程序执行后的运行结果。
#include
voidmain()
{
inta[3][3]={1,4,17,3,6,19,2,5,18},i,s=0;
for(i=0;i<=2;i++)
s=s+a[i][2-i];
printf("s=%d",s);
}
11.写出下面程序执行后的运行结果。
#include
voidmain()
{
intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++)t=t+b[i