第五章 数组练习题及答案
一、选择题
1、判断字符串a和b是否相等,应当使用( )
A、if(a==b) B、if(a=b) C、if(strcpy(a,b)) D、if(strcmp(a,b)) 2、以下正确的定义语句是( )
A、int a[1][4]={1,2,3,4,5}; B、float x[3][]={{1},{2},{3}}; C、long b[2][3]={{1},{1,2},{1,2,3}}; D、double y[][3]={0}; 3、以下各组选项中,均能正确定义二维实型数组a的选项是( ) A、float a[3][4]; float a[ ][4]; float a[3][ ]={{1},{0}}; B、float a(3,4); float a[3][4]; float a[ ][ ]={{0},{0}};
C、float a[3][4]; static float a[ ][4]={{0},{0}}; auto float a[ ][4]={{0},{0},{0}}; D、float a[3][4]; float a[3][ ]; float a[ ][4]; 4、下面程序的运行结果是( )
1—5 DDCBA 6—10 BDABB 11—15 CCCBC 16—20 DDCBB
21—25 BBAAA 26—30 DBDDB
#include \ main()
{ char str[]=\ int k;
for(k=2;(c=str[k]!='\\0');k++) { switch(c) {case 'I':++k;break; case 'L':continue;
default:putchar(c);continue; } putchar('*');
} }
A、SSW* B、SW* C、SW*A D、SW 5、下面程序段是输出两个字符串中对应相等的字符。横线处应填入( ) char x[]=\ char y[]=\ int i=0;
1
while(x[i]!='\\0'&&y[i]!='\\0') if(x[i]==y[i]) printf(\《1》); else i++;
A、x[i++] B、y[++i] C、x[i] D、y[i] 6、有下面的程序段,则( ) char a[3],b[]=\ a=b;
printf(\
A、运行后将输出China B、运行后将输出Ch C、运行后将输出Chi D、编译出错 7、下面程序的运行结果是( ) main()
{ char ch[7]={\ int i,s=0;
for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)
s=10*s+ch[i]-'0'; printf(\ }
A、1 B、1256 C、12ab56 D、1 2 5 6
8、定义如下变量和数组:则下面语句的输出结果是( ) int k;
int a[3][3]={1,2,3,4,5,6,7,8,9,}; for(k=0;k<3;k++)
printf(\
A、3 5 7 B、3 6 9 C、1 5 9 D、1 4 7 9、下面程序段的运行结果是( ) char c[5]={'a','b','\\0','c','\\0'}; printf(\
A、'a''b' B、ab C、ab c D、abc 10、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是( ) A、2 B、3 C、4 D、无确定值
2
11、下面程序的运行结果是( ) main() { int a[6],i; for(i=1;i<6;i++)
{ a[i]=9*(i-2+4*(i>3))%5; printf(\ } }
A、-4 0 4 0 4 B、-4 0 4 0 3 C、-4 0 4 4 3 D、-4 0 4 4 0 12、下面程序的运行结果是( ) main() {int a[6][6],i,j; for(i=1;i<6;i++) for(j=1;j<6;j++) a[i][j]=(i/j)*(j/i); for(i=1;i<6;i++) { for(j=1;j<6;j++) printf(\ printf(\ } }
A、1 1 1 1 1 B、0 0 0 0 1 C、1 0 0 0 0 D、1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 13、下述对C语言字符数组的描述中错误的是( ) A、字符数组可以存放字符串。
B、字符数组的字符串可以整体输入、输出。
C、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值。 D、不可以用关系运算符对字符数组中的字符串进行比较。 14、判断字符串s1是否大于字符串s2,应当使用( )
A、if(s1>s2) B、if(strcmp(s1,s2)) C、if(strcmp(s2,s1)>0) D、if(strcmp(s1,s2)>0) 15、下面程序(每行程序前面的数字表示行号):( )
3
1 main() 2 {
3 int a[3]={3*0}; 4 int i;
5 for(i=0;i<3;i++) scanf(\ 6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 printf(\ 8 }
A、第3行有错误 B、第7行有错误 C、第5行有错误 D、没有错误 16、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。横线处应填入( ) main()
{char s[80],c1,c2=' '; int i=0,num=0; gets(s); while(s[i]!='\\0') {c1=s[i]; if(i==0) c2=' '; else c2=s[i-1]; if(《1》) num++; i++; }
printf(\ }
A、c1==' '&&c2==' ' B、c1!=' '&&c2==' ' C、c1==' '&&c2!=' ' D、c1!=' '&&c2!=' ' 17、有字符数组a[80]和b[80],则正确的输出语句是( )
A、puts(a,b); B、printf(\ C、putchar(a,b); D、puts(a),puts(b); 18、下面描述正确的是( )
A、两个字符串所包含的字符个数相同时,才能比较字符串。 B、字符个数多的字符串比字符个数少的字符串大. C、字符串“STOP ”与“STOP”相等。 D、字符串“That”小于字符串“The”
19、有两个字符数组a、b,则以下正确的输入语句是( )
A、gets(a,b); B、scanf(\ C、scanf(\ D、gets(\
4
20、以下不正确的定义语句是( )
A、double x[5]={2.0,4.0,6.0,8.0,1.0}; B、int y[5]=}{0,1,2,3,4,5,6} C、char c1[]={'1','2','3','4','5'}; D、char c2[]={'\\x10','\\xa','\\x8'}; 21、调用函数时,若实参是一个数组名,则向函数对应的形参传送的是( ) A、数组的长度
B、数组的首地址
C、数组第一个元素的值 D、整个数组元素的值 22、下面程序段的运行结果是( )
char s[6]; s=‖abcd‖; printf(―\\‖%s\\‖\\n‖,s);
A、―abcd‖
B、‖abcd ―
C、\\‖abcd\\‖\\n
D、编译出错
23、(多项选择)以下不能对二维数组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}};
24、(多项选择)若有说明:int a[3][4];则对a数组元素不能正确引用是( )A.a[2][4]
B、a[1,3]
C、a[1+1][0] D、a(2)(1)
25、(多项选择)若有说明“static int a[3][4]={0};”则下面正确的叙述是( A、只有元素:a[0][0]可得到初值0
B、此说明语句不正确
C、数组a中各元素都可得到初值,但其值不一定为0
D、数组a中每个元素均可得到初值0 26、 以下对一维整型数组的正确说明是( ) A、int a(1);
B、int n=10,a[n];
C、int n;scanf(―%d‖,&n);int a[n]; D、#define SIZE 10 int a[SIZE]; 27、有以下程序,其输出结果是( )
void swap1(int c[]) { int t;
t=c[0];c[0]=c[1];c[1]=t; }
void swap2(int c0,int c1) { int t;
t=c0;c0=c1;c1=t; } main( )
{ int a[2]={3,5},b[2]={3,5}; swap1(a); swap2(b[0],b[1]);
printf(―%d %d %d %d\\n‖,a[0],a[1],b[0],b[1]);
5
)