第4章 数组
一、选择题
1、设int a[][4]={1,2,3,4,5,6,7,8,9};则数组a的第一维的大小是【 B】 A. 2 B. 3 C. 4 D. 无确定值
2、执行下列程序
int a[3][3]={{1},{2},{3}};
int b[3][3]={1,2,3};
main()
{printf(″﹪d \ n″,a[1][0] + b[0][0]);}
后输出的结果是 【 D】
A. 0 B. 1 C. 2 D. 3
3、设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\0′};那么( A )
A.x数组的长度等于y数组的长度B.x数组的长度大于y数组的长度
C.x数组的长度少于y数组的长度D.x数组与y数组的存储区域相同
4、设int i,x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句
for(i=0;i<3;i++)
printf(″%d″,x[2-i]);
的输出结果是( C ) A.147 B.159 C.357 D.369
二、填空题
1、 设char string[] =″This_is_a_book!″;则数组的长度应是16 。
2、设int a[2][3] = {{2},{3}};则数组元素 a[1][0] 的值为3。
3、在C语言中,一个二维数组可以看成若干个 一维 数组。
三、程序分析题
1、 # define N 7
main()
{int i,j,temp,a[N]={1,2,3,4,5,6,7};
for(i = 0;i<N/2;i + + )
{j = N - 1 - i;
temp = a;a=a[j];a[j]=temp;
}
for(i = 0;i<N;i + + ) printf(″﹪5d″,a);
}
答:7 6 5 3 3 2 1
2、# include<stdio.h>
main( )
{ int i=0;
char c,s[]=″SABC″;
while(c=s)
{
switch(c)
{
case ′A′:i++;break;
case ′B′:++i;
default:putchar(c);i++;
}
putchar(′*′);
}
}
答:S**B*
四、程序填充题
1、 以下程序的功能是用选择法对数组a中的整数由小到大进行排序。
void sort(int b[],int n)
{ int i,j,t;
for(i = 0;i<n - 1;i ++ )
for(______;j<n;j ++ )
if(b_____b[j])
{t = b;_____________;b[j]=t;}
}
main()
{ int a[]={5,8,6,2,7,4,1,3};
int i;
sort(a,8);
for(i = 0;i<8;i ++ )
printf(″﹪5d″,a);
printf(″\ n″);
}
答:(1)j=I+1 (2)> (3)b[I]=b[j]
2、 先为数组a输满数据,再为x输入一个数据,在数组a中找出第一个与x相等的元素并将其下标输出,若不存在这样的元素,则输出“Not
found!”标志。
main()
{int i,x,a[10];
for(i = 0;i<10;i ++ )scanf(″﹪d″,___________);
scanf(″﹪d″,&x);printf(″﹪d″,x);
for(i = 0;i<10;i ++) if(_________________)break;
if (i _________10)printf(″ position:﹪d \ n″,i);
else printf(″ Not found! \ n″,x);
}
答: (1)&&或者a+I (2)x= =a (3)<
五、程序设计题
1、 输入一字符串,检查是否回文 (回文是指正反序相同,如,LeveL),若是则输出“Yes”,否则输出“No”。
答:Hinclude “stringh”
main({int I,n;static char str[80];
gets(str);n=strlen(str);
for(I=0;I<n12;i++)
if (str!=str[n-1-i]
{printf(“No!/n”);break;}
if(I= =n/2) printf (“Yes!/n”);
}
2、将100个整数输入数组后按每行10个数输出。
答:main( )
{int a[100],I;
for(i=0;i<=99;i++);
scanf(“% d”,&a);
for(i=0;i<=99;i++);
{if (i%10= =0)printf(“\n”);
print(“%&d”,a;)
}
3、生成Fibonacci数列的前20项并输出,其中
fi=
答: main ( )
{int f[20],i;
f[0]=1;f[1]=1;
for (I=2;i<=19;i++)
f=f[i-1]+ f[i-2];
for(i=0;i<=19; i++)
{if(i%4= =0)printf(“\n”);
print(“%&d”,f);
}
|