几道C语言数组的选择题。,一题一分

1. 若有以下语句,则下面【 】是正确的描述。
charx[ ]= “12345”;chary[ ]= {‘1’,’2’,’3’,’4’,’5’};
(A) x 数组和 y 数组的长度相同
(B) x 数组长度大于 y 数组长度
(C) x 数组长度小于 y 数组长度
(D) x 数组等价于 y 数组

2. 为了判断两个字符串 s1 和 s2 是否相等,应当使用【 】。
(A) if( s1==s2)
(B) if( s1=s2)
(C) if( strcpy(s1,s2))
(D) if( strcmp(s1,s2)==0)

3. 以下程序段的输出是【 】。
char a[ ]= “-12345”;
int k=0,symbol,m;
if( a[k]== ‘+’ || a[k]== ‘-‘)symbol=(a[k++]== ‘+’)?1:-1;
for( m=0; a[k]>= ‘0’ && a[k]<= ‘9’ ; k++)
m=m*10+a[k]- ‘0’ ;
printf( “number=%d”,symbol*m);

(A) number=-12345
(B) number=12345
(C) number=-10000
(D) number=10000

4. 以下一维整数数组 a 的正确说明是【 】。
(A) inta(10);
(B) intn=10, a[n]
(C) intn;
(D) #define SIZE10scanf(“%d”,&n);inta[SIZE];inta[n];

5. 以下能对一维数组 a 进行正确初始化的语句是【 】。
(A) inta[10]=( 0, 0 , 0 );
(B) inta[10]={ };
(C) inta[10]={0};
(D) inta[10]={10*1};(要使每个元素为 1)

6. 以下能对二维数组 a 进行正确说明是【 】。
(A) inta[3][ ];
(B) floata(3,4);
(C) doublea[1][4];
(D) floata(3)(4);

7. 下述对 C 语言字符数组的描述中错误的是【 】。
(A) 字符数组可以存放字符串
(B) 字符数组存放的字符串可以整体输入、输出
(C) 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
(D) 不可以用关系运算符对字符数组中的字符串进行比较
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. 若有说明:intx[3][4]; 则对 a 数组元素的正确引用是【 】。
(A) x[2][4]
(B) x[1,3]
(C) x[4-2][0]
(D) x[0][4]

10. 判断字符串 s1 是否大于字符串 s2,应当使用【 】。
(A) if( s1>s2 )
(B) if( strcmp(s1,s2))
(C) if(strcmp(s2,s1)>0)
(D) if(strcmp(s1,s2)>0)

11. 若二维数组 a 有 m 列,则计算任一元素 a[i][j]在数组中位置的公式为【 】(假设 a[0][0]位于数组的第一个位置上)。
(A) i*m+j
(B) j*m+i
(C) i*m+j-1
(D) i*m+j+1

12. 有两个字符数组 a、b,则以下正确的输入语句是【 】。
(A) gets(a,b);
(B) scanf(“%s%s”,a,b);
(C) scanf(“%s%s”,&a,&b);
(D) gets(“a”),gets(“b”);
13. 下面程序以每行 4 个数据的形式输出 a 数组,请填空。
#define N 20
main( )
{
int a[N],i;
for(i=0;i<N;i++)
scanf(“%d”,【1】);
for(i=0;i<N;i++)
{
if(【2】) 【3】
printf(“%3d”,a[i]);
}
printf(“\n”);
}

1、B 这两种定义不同,因为x字符串后面有\0,多1个字节。
2、D 字符串只能这么比较
3、A 该程序就是将字符串转变为整型
4、B 选项D不行,必须在语句前申明变量
5、B
6、C 只能省略第一个值
7、C
8、B 只能省略第一个值
9、C 注意数组边界,a[4]是0~3,没有4。
10、D
11、D 举几个特例
12、B scanf输入字符串是不用加&的(和变量不同),gets()只能有一个参数,即gets(a);
13、【1】a[i]【2】i % 4 == 0【3】printf("\n");
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-03
A.x[4]不是地址,错
B.++y,y是数组名,是常量,不能++
C.strcpy(s=y+5,x);相当于s=y+5,strcpy(s,x);x长度为9,加上结束符,总长为10字节,但s指向的是y[5],之后只有y[6]到y[9]这4个字节可用,因此会造成数组访问越界.
D.strcpy(s=y+1,x+1);x+1即指向x[1]的指针,之后有8个字符和1个结束符,长度为9字节,y+1之后正好也有9个可用字节.正确.

s=y+1;y+1就是y[1]的地址.y+5就是y[5]的地址
第2个回答  2011-05-02
1. B
2. D
3. A
4. D
5. C
6. C
7. C
8. B
9. C
10. D
11. D
12. B
13.
(1) &a[i]
(2) i%4==0
(3) printf("\n");
第3个回答  2011-05-02
BDACC CCBCD AB
&a[n]
i%4==0
printf("\n");
除了第四题(看不懂啥意思),其他都保证对的
其实你自己打进电脑也能出结果的了
第4个回答  2011-05-02
各位的答案都差不多,第四个A B C坑定都不对,但D选项怎么让人觉得那么乱啊,是不是楼主写错了啊。还有就是第八个,我觉得B和D都对。
第5个回答  2011-05-02
BDADCCCBCDAC
&a[i];
相似回答