第六章 数组
一、选择题
1、在C语言中,引用数组元素时,其数组下标的数据类型允许是 。
A、 整型常量
B、 整型表达式
C、 整形常量或整形表达式
D、 任何类型的表达式
2、以下对一维整型数组a的正确说明是____
A、 int a(10) ;
B、 int n=10,a[n];
C、 int n;
scanf(“%d”,&n);
int a[n];
D、#define SIZE 10
int a[SIZE];
3、若有定义:int a[10],则对数组a元素的正确引用是
A、 a[10] B、a[3.5] C、a(5) D、a[10-10]
4、以下能对一维数组a进行正确初始化的语句是 。
A、 int a[10]={0,0,0,0,0};
B、 int a[10]={} ;
C、 int a[ ] = {0} ;
D、 int a[10]={10*1} ;
5、若有定义:int a[3][4],则对数组a元素的正确引用是________
A、 a[2][4] B、a[1,3] C、a(5) D、a[10-10]
6、以下能对二维数组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[][3]={{1,0,1},{},{1,1}} ;
7、若有说明:int a[3][4]={0};则下面正确的叙述是_______
A、 只有元素a[0][0]可得到初值0
B、 此说明语句不正确
C、 数组a中各元素都可得到初值,但其值不一定为0
D、 数组a中每个元素均可得到初值0
8、下面是对s的初始化,其中不正确的是_____
A、 char s[5]={“abc”};
B、 char s[5]={‘a’,’b’,’c’,’d’,’e’,’\ 0’};
C、 char s[5]=” ”;
D、 char s[5]=”abcdef”;
二、程序填空
1、以下程序把一个由小到大的有序数列放在a[1]到a[n]中,a[0]用作工作单元,程序把读入的x值插入到a数组中,插入后,数组中的数仍然的序。请填空,完善程序。
#include
{int a[10]={0,12,17,20,25,28},x,i,n=5;
Printf(“enter a number”);
Scanf(“%d”,&x);
a[0]=x;i=n;
while(a[i]>x)
{a[____ (1)____ ]=a[i];
______(2)___________;
}
a[___(3)____]=x;n++;
for(i=1;i<=__(4)_______;i++)
printf(“M”,a[i]);
printf(“\n”);
}
三、编程题
1、用选择法对10个整数排序(从小到大)
2、有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母,小写字母,中文字母,中文字符,数字,空格及其他字符的个数。(提示:中文字符是两个字节,且数值均大于128的字符)。
3、将一个数组中的值按逆序重新存放。例如:原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。
参考答案
一、选择题
1、A 2、D 3、A 4、A 5、A 6、B 7、D 8、A
二、程序填空
(1) i+1
(2) i=i-1
(3) ++i
(4) n
二、编程题
1、 main()
{int i,j,min,temp,a[11];
Printf(“enter data:\n”);
For(i=1;i<=10;i++)
{printf(“a[%d=”,i);
Scanf(“%d”,&a[i]);
}
Printf(“\n”);
For(i=1;i<=10;i++)
Printf(“]”,a[i]);
Printf(“\n”);
For(i=1;i<=9;i++)
{min=i;
For(j=i+1;j<=10;j++)
If(a[min]>a[j]) min=j;
Temp=a[i];
a[i]=a[min];
a[min]=temp;
}
Printf(“\nthe sorted number:\n”);
For(i=1;i<=10;i++)
Printf(“]”,a[i]);
}
2、 main()
{int i,j,upp,low,dig,spa,oth;
Char text[3][80];
Upp=low=dig=spa=oth=0;
For(i=0;i<3;i++)
{printf(“\nplease input line %d:\n”,i++);
Gets(text[i]);
For(j=0;j<80&&text[i][j]!=’\0’;j++)
{if(text[i][j]>’A’&&text[i][j]<=’Z’)
Upp++;
Else if(text[i][j]>=’a’&&text[i][j]<=’z’)
Low++;
Else if(text[i][j]>=’0’&&text[i][j]<=’9’)
Dig++;
Else if (text[i][j]= =’ ‘)
Spa++;
Else
Oth++;
}
}
For(i=0;i<3;i++)
Printf(“%s\n”,text[i]);
Printf(“upper case:%d\n”,upp);
Printf(“upper case:%d\n”,low);
Printf(“digit:%d\n”,dig);
Printf(“space:%d\n”,spa);
Printf(“other:%d\n”,oth);
}
3、#define N 5
Main()
{int a[N],i,temp;
Printf(“enter array a:\n”);
For(i=0;i
Scanf(“%d”,&a[i]);
Printf(“array a:\n”);
For(i=0;i
Printf(“M”,a[i]);
For(i=0;i)
{temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
Printf(“\n now,array a:\n”);
For(i=0;i
Printf(“M”,a[i]);
Printf(“\n”);
}