第1题
以下叙述中正确的是( )。
数组说明符的一对方括号中只能使用整型常量,而不能使用表达 式
一条语句只能定义一个数组
每个数组包含一组具有同一类型的变量,这些变量在内存中占有 连续的存储单元
在引用数组元素时,下标表达式可以使用浮点数
第2题
语句“int a[8]={0};”是合法的
语句“int a[]={0};”是不合法的,遗漏了数组的大小
语句“char a[2]={"A","B"};”是合法的,定义了一个包含两个字符的 数组
语句“char a[3];a="AB";”是合法的,因为数组有三个字符空间的容 量,可以保存两个字符
第3题
以下选项中叙述正确的是( )。
char c1,c2,*c3,c4[40];是合法的变量定义语句
数组下标的下限可以是负值
若有数组定义float array[4];,则语句printf("%f",array[3.12]);是合法 的
第4题
以下叙述中错误的是( )。
同一个数组中所有元素的类型相同
不可以跳过前面的数组元素给后面的元素赋初值0
定义语句int a[10]={0};给a数组中所有元素赋初值0
若有定义语句int a[4]={1,2,3,4,5};,编译时将忽略多余的初值
第5题
若要定义一个具有5个元素的整型数组,以下错误的定义语句是
int a[5]=﹛0﹜;
int b[]={0,0,0,0,0};
int c[2+3];
int i=5,d[i];
第6题
设有如下程序段:
int
a[8]={0};
b[]={0};
char
c[2]={
"A"
,
"B"
};
d=
"AB"
;
以下叙述正确的是( )。
只有a,b,c的定义是合法的
a,b,c,d的定义都是合法的
只有a,b的定义是合法的
只有c的定义是合法的
第7题
下列选项中,能正确定义数组的语句是( )。
int N=2008;int num[N];
int num[];int num[N];
#define N 2008 int num[N];
int num[0..2008];
第8题
下列定义数组的语句中,对的的是
int N=10; int x[N];
#define N 10 int x[N];
int x[0..10];
int x[];
第9题
要求定义一个具有6个元素的int型一维数组,以下选项中错误的是 ( )。
int N = 6,a[N];
int a[2*3]={0};
#define N 3 int a[N+N];
int a[]={1,2,3,4,5,6};
第10题
若有定义语句:
m[]={5,4,3,2,1},i=4;,
则下面对m数组元素的引 用中错误的是( )。
m[--i]
m[2*2]
m[m[0]]
m[m[i]]
第11题
若有说明语句:
*ptr[10];
ptr是一个具有10个指针元素的一维数组,每个元素都只能指向整 型变量
ptr是指向整型变量的指针
ptr是一个指向具有10个整型元素的一维数组的指针
ptr是一个指向10个整型变量的函数指针
第12题
有以下程序
#include <stdio.h>
main()
{
s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for
(i=0;i<12;i++)
c[s[i]]++;
(i=1;i<5;i++)
printf
(
"%d"
,c[i]);
"\n"
);
}
程序的运行结果是( )。
4332
2344
1234
1123
第13题
设有n个数按从大到小的顺序存放在数组x中,以下能使这n个数在 x数组中的顺序变为从小到大的是( )。
for(i=0;i<n/2;i++) { t=x[i]; x[i]=x[n-i-1]; x[n-i-1]=t; }
for(i=0;i<n;i++) { t=x[i]; x[i]=x[n-i-1]; x[n-i-1]=t; }
for(i=0;i<n/2;i++) { t=x[i]; x[i]=x[n-i+1]; x[n-i+1]=t; }
for(i=0;i<n/2;i+=2) { t=x[i]; x[i]=x[n-i-1]; x[n-i-1]=t; }
第14题
设有一个M*N的矩阵已经存放在一个M行N列的数组x中,且有以
下程序段:
sum=0;
(i=0;i<M;i++)sum+=x[i][0]+x[i][N-1];
(j=1;j<N-1;j++)sum+=x[0][j]+x[M-1][j];
以上程序段计算的是( )。
矩阵两条对角线元素之和
矩阵所有不靠边元素之和
矩阵所有元素之和
矩阵所有靠边元素之和
第15题
有以下程序段:
*p1,*p2,a[10];
p1=a;
p2=&a[5];
则p2-p1的值为( )。
5
10
12
无法确定
第16题
设有如下定义语句:
m[ ]={2,4,6,8},*k=m;
以下选项中,表达式的值为6的是( )。
(k+2)
k+2
*k+2
*k+=2
第17题
double
x[5]={1.0,2.0,3.0,4.0,5.0}, *p=x;
则错误引用x数组元素的是( )。
* p
x[5]
*(p+1)
*x
第18题
设有定义:
a[10]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
若0≤i≤9,则对a数组元素的引用错误的是( )。
a[10]
*(&a[i])
p[i]
a[p-a]
第19题
设有定义
a[10],*s=a;
以下能够代表数组元素a[3]的是( )。
(*s)[3]
*(s+3)
*s[3]
*s+3
第20题
若有以下定义:
x[10],*pt=x;
则对x数组元素的正确引用是( )。
*&x[10]
*(x+3)
*(pt+10)
pt+3
第21题
执行以下程序段后,s的值为( )。
a[]={1,2,3,4,5,6,7,8,9}, s=0,k;
(k=0;k<8;k+=2) s+=*(a+k);
13
16
17
18
第22题
i,s=0,t[]={1,2,3,4,5,6,7,8,9};
(i=0;i<9;i+=2)s+=*(t+i);
"%d\n"
,s);
程序执行后的输出结果是( )。
25
20
45
36
第23题
有以下程序:
a[]={10,20,30,40},*p=a,i;
(i=0;i<=3;i++)
a[i]=*p;
p++;
,a[2]);
程序运行后的输出结果是( )。
30
40
第24题
a[]={1,2,3,4},y,*p=&a[3];--p;
y=*p;
"y=%d\n"
,y);
y=0
y=1
y=2
y=3
第25题
fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋 值。在下画线处应该填写的是( )。
#define N 5
void
fun(
x[N])
m;
(m=N-1;m>=0;m--)
scanf
,_____);
&x[++m]
&x[m+1]
x+(m++)
x+m
第26题
以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。
#define N 10
i=0;
while
(i<N)
,______);
在程序中下画线处应填入的是( )。
x+i
&x[i+1]
x+(i++)
&x[++i]
第27题
以下程序中给数组所有元素输入数据,请从选项中选择正确的答 案填入下划线处。( )
a[10],i=0;
(i<10)
, _________);
…
a+(i++)
&a[i+1]
a+i
&a(i++)
第28题
a[10]={11,12,13,14,15,16,17,18,19,20},*p=a,i=9;
"%d,%d,%d\n"
,a[p-a],p[i],*(&a[i]));
11,19,19
12,20,20
11,20,20
12,19,20
第29题
*p)
,p[5]);
a[10]={1,2,3,4,5,6,7,8,9,10};
fun(&a[3]);
6
8
9
第30题
a[]={2,4,6,8,10},x,*p,y=1;
p=&a[1];
(x=0;x<3;x++)y+=*(p+x);
程序的输出结果是( )。
19
11
15
第31题
有如下程序:
i,*ptr;
array[3]={8,2,4};
(ptr=array,i=0;i<2;i++)
"%d,"
,*ptr++);
程序运行后的输出结果是( )
8,2,
8,8,
2,4,
4,8,
第32题
array[4]={1,1,3,4};
(ptr=array,i=0;i<3;i++)
1,2,4,
1,3,4,
1,1,3,
1,1,4,
第33题
有如下程序
i, *ptr;
array[5] = {5,3,1};
(ptr=array, i=0; i<5; i++, ptr++)
if
(*ptr == 0)
putchar
'X'
else
'A'
+ *ptr);
FDBXX
FFFXX
FDBBB
ABCDE
第34题
x[]={8,2,6,12,5,15},f1,f2;
*p=x;
f1=f2=x[0];
(;p<=x+5;p++)
(f1<*p)f1=*p;
(f2>*p)f2=*p;
"%d,%d\n"
,f1,f2);
15,2
15,15
2,15
8,8
第35题
若有函数声明:
float
array[],
*ptr);
函数参数array,ptr都是指针变量
函数参数array不是指针变量,ptr是指针变量
调用函数时,实参数组的值将一一复制给array数组
调用函数时,array是按值传送,ptr是按地址传送
第36题
若有函数:
a[],
*n)
{......}
调用fun函数时只有数组执行按值传送,其他实参和形参之间执行 按地址传送
形参a和n都是指针变量
形参a是一个数组名,n是指针变量
调用fun函数时将把double型实参数组元素一一对应地传送给形参a 数组
第37题
若主函数中有定义语句:
a[10],b[10],c;
在主函数前定义的fun函数首部为 void fun(int x[]) 则以下选项中错误的调用语句是( )。
fun(b);
fun(&c);
fun(b[11]);
第38题
f(
b[])
i;
(i=2;i<6;i++)b[i]*=2;
a[]={1,2,3,4,5,6,7,8,9,10},i;
f(a);
(i=0;i<10;i++)
,a[i]);
1,2,6,8,10,12,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,10,12,14,16,9,10,
1,2,6,8,10,12,14,16,9,10,
第39题
n)
i,t;
(i=0;i<n/2;i++)
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
k[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(k,5);
(i=2;i<8;i++)
,k[i]);
程序运行的结果是( )。
345678
876543
1098765
321678
第40题
i,j=0,k=n/2,b[10];
(i=n/2-1;i>=0;i--)
b[i]=a[j];
b[k]=a[j+1];
j+=2;
k++;
(i=0;i<n;i++)
a[i]=b[i];
c[]={10,9,8,7,6,5,4,3,2,1},i;
fun(c,10);
2,4,6,8,10,9,7,5,3,1,
10,8,6,4,2,1,3,5,7,9,
1,3,5,7,9,10,8,6,4,2,
第41题
(i%2==0)
a[i] += n;
a[i] -= n;
c[5]={5,4,3,2,1},i;
fun(c,5);
(i=0;i<5;i++)
10,-1,8,-3,6,
5,4,3,2,1,
10,2,8,4,6,
5,-1,3,-3,1,
第42题
(i % 3==0)
a[i]-=n;
a[i]+=n;
c[5]={6,7,8,9,10},i;
1,12,13,4,15,
10,9,8,7,6,
1,7,13,9,15,
10,12,8,4,6,
第43题
若有以下程序
t,i,j;
(i=1;ia[j])
a[i]=a[j];
a[j]=t;
c[10]={10,9,8,7,6,5,4,3,2,1},i;
则程序的输出结果是( )。
2,9,4,7,6,5,8,3,10,1,
10,9,8,7,6,5,4,3,2,1,
10,1,8,3,6,5,4,7,2,9,
1,10,3,8,5,6,7,4,9,2,
第44题
以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序。
b[],
n,
flag)
i,j,t;
(i=0;i<n-1;i++)
(j=i+1;j<n;j++)
(flag?b[i]>b[j]:b[i]<b[j])
t=b[i];
b[i]=b[j];
b[j]=t;
a[10]={5,4,3,2,1,6,7,8,9,10},i;
f(&a[2],5,0);
f(a,5,1);
3,4,5,6,7,2,1,8,9,10,
5,4,3,2,1,6,7,8,9,10,
第45题
*p);
a[5]={1,2,3,4,5},*r=a;
f(r);
,*r);
p=p+3;
,*p);
1,4
4,4
3,1
4,1
第46题
*q)
(;i<5;i++)(*q)++;
a[5]={1,2,3,4,5},i;
2,2,3,4,5,
6,2,3,4,5,
1,2,3,4,5,
2,3,4,5,6,
第47题
#define N 8
*x,
i)
*x=*(x+i);
a[N]={1,2,3,4,5,6,7,8},i;
fun(a,2);
(i=0;i<N/2;i++)
1,3,1,3,
2,2,3,4,
3,2,3,4,
1,2,3,4,
第48题
change(
*array,
len)
(;len>=0;len--)
array[len]+=2;
i,array[5]={1,2};
change(array,4);
(i=0;i<4;i++)
,array[i]);
2,3,4,5,
3,4,5,6,
3,4,2,2,
1,2,0,0,
第49题
* array,
(;len>=0;len--)array[len]-=1;
i, array[5]={2,2};
1,1,-1,-1,-1,
1,0,-1,1,-1,
1,1,1,1,1,
1,-1,1,-1,1,
第50题
*a,
(a[i]<a[j])
c[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6);
1,2,3,4,9,8,7,6,5,0,
0,9,8,7,6,5,1,2,3,4,
0,9,8,7,6,5,4,3,2,1,
1,2,3,4,5,6,7,8,9,0,
第51题
有以下程序(函数fun只对下标为偶数的元素进行操作):
i,j,k,t;
(i=0;ia[k])k=j;
a[i]=a[k];
a[k]=t;
aa[10]={1,2,3,4,5,6,7},i;
fun(aa,7);
(i=0;i<7;i++)
,aa[i]);
7,2,5,4,3,6,1,
1,6,3,4,5,2,7,
7,6,5,4,3,2,1,
1,7,3,5,6,2,1,
第52题
s,
(i=s;i>=n;i--)
*(x+i+3)=*(x+i);
m[]={0,1,2,3,4,5,6,7,8,9},k;
fun(m,10-4,3);
(k=0;k<10;k++)
,m[k]);
0123456345
0123453456
0123456666
0123454569
第53题
#include<stdio.h>
e)
(i=s,j=e;i<j;i++,j--)
t=*(x+i);
*(x+i)=*(x+j);
*(x+j)=t;
fun(m,0,3);
fun(m+4,0,5);
fun(m,0,9);
4567890123
3210987654
9876543210
0987651234
第54题
*s,
n1,
n2)
i=n1;
j=n2;
(i<j)
t=s[i];
s[i]=s[j];
s[j]=t;
i++;
j--;
a[10]={1,2,3,4,5,6,7,8,9,0},k;
fun(a,0,3);
fun(a,4,9);
fun(a,0,9);
,a[k]);
0987654321
4321098765
5678901234
第55题
t=*(s+i);
*(s+i)=*(s+j);
*(s+j)=t;
a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;
fun(p,0,3);
fun(p,4,9);
fun(p,0,9);
,*(a+i));
第56题
t,
*k)
p;
(p=0,*k=p;ps[*k])*k=p;
a[10]={11,12,13,14,15,16,20,18,19,10},k;
fun(a,10,&k);
,k,a[k]);
6,20
10,9
7,20
10,10
第57题
s[])
n=0;
(*s<=
'9'
&&*s>=
'0'
)
n=10*n+*s-
s++;
return
(n);
s[10]={
'6'
'1'
'*'
'4'
,fun(s));
61490
61
第58题
设有定义 int x[2][3]; 则以下关于二维数组x的叙述中错误的是( )。
x[0]可看作是由3个整型元素组成的一维数组
x[0]和x[1]是数组名,分别代表不同的地址常量
数组x包含6个元素
可以用语句x[0]=0;为数组所有元素赋初值0
第59题
以下定义数组的语句中错误的是( )。
int num[]={1,2,3,4,5,6};
int num[][3]={{1,2},3,4,5,6};
int num[2][4]={{1,2},{3,4},{5,6}};
int num[][4]={1,2,3,4,5,6};
第60题
以下错误的定义语句是( )。
int x[][3]={{0},{1},{1,2,3}};
int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
int x[][3]={1,2,3,4};
第61题
m[][3]={1,2,3,4,5,6,7};
则与该语句等价的是 ( )。
int m[][3]={{1,2,3},{4,5,6},{7}};
int m[][3]={{1,2},{3,4},{5,6,7}};
int m[][3]={{1,2,3},{4,5},{6,7}};
int m[][3]={{1},{2,3,4},{5,6,7}};
第62题
若有定义:
a[2][3];
以下选项中对a数组元素正确引用的是( )。
a[2][!1]
a[2][3]
a[0][3]
a[1>2][!1]
第63题
i,k;
array[4][2]={{1,2},{4,9},{6}};
(i=0;i<2;i++)
(k=0;k<4;k++)
,array[k][i]);
1,2,4,9,6,
1,4,6,0,2,9,0,0,
2,9,0,0,1,4,6,0,
2,9,6,1,4,
第64题
array[4][2]={{1,0},{0},{2,9},{3}};
(k=0;k<3;k++)
1,0,2,0,0,9,
1,2,4,9,6,0,
2,9,0,0,1,4,
1,2,0,1,4,1,
第65题
b[3][3] = {0,1,2,0,1,2,0,1,2},i,j,t = 1;
(i = 0;i<3;i++)
(j = i;j <= i;j++)t+=b[i][b[j][i]];
,t);
4
3
2
1
第66题
a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}};
(j=0;j<3;j++)
(k=j+1;k<4;k++)
(a[j][i]>a[k][i])
t=a[j][i];
a[j][i]=a[k][i];
a[k][i]=t;
,a[i][i]);
8,7,3,1,
1,6,5,7,
4,7,5,2,
1,6,2,1,
第67题
a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;
(i=0;i<3;i++)
(k=i+1;k<4;k++)
(a[i][i]<a[k][k])
t=a[i][i];
a[i][i]=a[k][k];
a[k][k]=t;
,a[0][i]);
6,4,3,2,
6,2,1,1,
1,1,2,6,
2,3,4,6,
第68题
i,t[][3]={9,8,7,6,5,4,3,2,1};
,t[2-i][i]);
3,5,7,
7,5,3,
3,6,9,
7,5,1,
第69题
a[4][4]={
' '
i,j;
a[i][0]=a[i][3]=
'#'
(j=1;j<3;j++)
a[0][j]=a[3][j]=
((i!=0)&&(i!=3))a[i][j]=
'o'
(i=1;i<3;i++)
(j=0;j<4;j++)
"%2c"
,a[i][j]);
# o o #<换行> # o o #
# # # #<换行> # o o #
# o o #<换行> # # # #
# # # #<换行> # # # #
第70题
s[3][10],(*k)[3],*p;
则以下赋值语句正确的是( )。
p=s;
p=k;
p=s[0];
k=s;
第71题
有定义语句:
*p[4];
以下选项中与此语句等价的是( )。
int p[4];
int **p;
int*(p[4]);
int(*p)[4];
第72题
若有定义 int(* pt)[3]; 则下列说法中正确的是( )。
定义了基类型为int的三个指针变量
定义了基类型为int的具有三个元素的指针数组pt
定义了一个名为 * pt、具有三个元素的整型数组
定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的 二维数组
第73题
a[4][10],*P,*q[4];
且0≤i<4
则错误的赋值是( )。
p=a
q[i]=a[i]
p=a[i]
p=&a[2][1]
第74题
a[2][3],*p[3];
则以下语句中正确的是( )。
p[0]=&a[1][2];
p[0]=a;
p=a;
p[1]=&a;
第75题
w[3][5];
则以下不能正确表示该数组元素的表达式是( )。
*(w+1)[4]
*(*w+3)
*(*(w+1))
*(&w[0][0]+1)
第76题
设有以下说明和语句:
x[3][4],(* p)[4];p=a;
则与表达式*(*p+2)等价的选项是( )。
a[0][2]
*(a+2)[0]
(*a+2)[0]
a[2][0]
第77题
x[3][2]={0},i;
,x[i]);
"%3d%3d%3d\n"
,x[0][0],x[0][1],x[1][0]);
若运行时输入:2 4 6<回车>,则输出结果为( )。
2 0 4
2 0 0
2 4 0
2 4 6
选择题(1- 77题,共计100分)