一、 填空题
1. 在C语言中,二维数组元素在内存中的存放顺序是 。 2. 定义了二维数组:int array[4][5],该数组所占的内存空间为______字节。
3. 假设有整型数组array[100][100],其中第66行,第66列元素array[66][66]在数
组中排列的位置(位置从1开始算起)为 6566 。
4. 若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[2][1]得到的初值是
________。 5. 下面的程序段的运行结果是____he_____。
char x[ ]=“the teacher”; int i =0;
while(x[++i] != ’\\0’)
if(x[i-1] = = ‘t’) printf(“%c”,x[i]);
二、单项选择题
1. 下面程序( B )(每行程序前面的数字表示行号)。
1 main( )
2 { float a[10]={0.0}; 3 int i;
4 for(i=0;i<3;i++) scanf(“%d”,&a[i]); 5 for(i=1;i<10;i++) a[0]=a[0]+a[i]; 6 printf(“%f\\n”,a[0]); 7 }
A)没有错误 B)第2行有错误 C)第4行有错误 D)第6行有错误
2. 下面程序中有错误的行是( D )(每行程序前面的数字表示行号)。
1 main( ) 2 {
3 int a[3]={1}; 4 int i;
5 scanf(“%d”,&a);
6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 printf(“a[0]=%d\\n”,a[0]); } A. 3 B. 6 C. 7 D. 5
3. 以下不能对二维数组a进行正确初始化的语句是( C )。
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};
4. 对两个数组a和b进行初始化
char a[ ] =“ABCDEF”; char b[ ] = {‘A’,‘B’,‘C’,‘D’,‘E’,‘F’}; 则以下叙述正确的是( D )。
A. a与b数组完全相同 B. a与b长度相同
C. a和b中都存放字符串 D. a数组比b数组长度长
5. 判断字符串s1是否大于字符串s2,应当使用( D )。
A. if ( s1 > s2 ) B. if (strcmp (s1 , s2 )) C. if ( strcmp (s2 , s1 ) > 0 ) D. if (strcmp (s1 , s2 ) > 0 )
6. 当运行以下程序时,从键盘输入:AhaMA□Aha ↙(□代表空格,↙代表回车),
则下面程序的运行结果是( )。 #include “stdio.h” main( )
{ char s[80], c = ?a?; int i = 0;
scanf(“%s”,s); while(s[i] != ?\\0?)
{ if(s[i] = = c ) s[i] = s[i] - 32;
else if (s[i] = = c-32) s[i] = s[i] + 32; i++; }
puts(s); }
A. ahAMa B. AhAMa C. AhAMa□ahA D. ahAMa□ahA
7. 下面程序段是输出两个字符串中对应相等的字符。请选择填空。
char x[]=“programming”; char y[]=“Fortran”; int i=0;
while(x[i]!= ?\\0?&&y[i]!= ?\\0?)
if(x[i]==y[i]) printf(“%c”, ( A ) ); else i++;
A. x[i++] B. y[++i] C. x[i] D. y[i]
三、判断题
1. 有二维数组int a[100][100],数组元素a[100][100]的存储位置为10001。( F ) 2. 为了增加程序的通用性,定义数组时,最好用变量说明其长度。如:int n; int arr[n];
( F )
3. 字符个数多的字符串一定比字符个数少的字符串大。( F ) 4. 下面程序运行的结果为“OK!”。 ( F )
char s1[100] = {“abcde”}; char s2[100] = { “abcde” }; if(s1= = s2) printf( “ OK! ”) else printf(“ No! ”);
四、填程序
1. 设数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将
这些和存在数组b中,按每行3个元素的形式输出。请填空。 main( )
{ int a[10],b[10],i; for(i=0;i<10;i++) scanf(“%d”,&a[i]);
for( i=1 ;i<10;i++)
a[i]=a[i-1]+a[i]; for(i=1;i<10;i++)
{ printf(“=”,b[i]);
if(i%3 == 0) printf(“\\n”); } }
2. 下面程序的功能是求出矩阵x的右上三角元素之积。其中矩阵x的行、列数和元素值均
由键盘输入。请填空。 #define M 10 main( )
{ int x[M][M]; int n,i,j; long s=1;
printf(“Enter a integer(<=10):\\n”); scanf(“%d”,&n);
printf(“Enter %d data on each line for the array x\\n”,n); for( i=0;i scanf(“%d”,&x[i][j]); for(i=0;i for( j=i ;j 五、编程题: 1. 利用顺序查找法从数组a的10个元素中对关键字m进行查找。要求从键盘输入数组元 素以及要查找的数据值。(顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字比较,直到找到此元素或查找到数组尾部时结束。若找到,则查找成功;若直至最后一个元素都不相等,则查找失败。) 2. 从键盘输入两个字符串a和b,要求不用库函数strcat把串b的前五个字符连接到串a 中;如果b的长度小于5,则把b的所有元素都连接到a中。试编程。