《C++数组》习题
学号 姓名
一、 选择题
一维数组的定义和初始化1、下列对字符数组进行初始化的语句正确的是
a[]= "Hello";
a[][]= {'H','e','l','l','o'};
a[5]="Hello";
a[2][5]= {"Hello","World"};
2、以下一维数组a的正确定义是
A.int a(10) ; B.int n=10,a[n];
C.int n; D.#define size 10
cin>>n; int a[size];
int a[n];
3、以下对二维数组a进行不正确初始化的是
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、执行以下程序后,s的值为
int a[]={5,3,7,2,1,5,4,lO);
int s=0,k;
for(k=0;k<8;k+=2)
s+=*(a+k);
A.17 B.27 C.13 D.无定值
5、为了判断两个字符串sl和s2是否相等,应当使用
A.if (s1==s2)
B.if (s1=s2)
C.if(strcpy(S1,s2))
D.if(strcmp(s1,s2)==O)
6、有定义int a[2][5];,若a[0][1]的地址为x,则a[0][O]、a[1][3]地址分别为(假设一个整型数据占用两个字节的内存空间):
A.x-2,x+14 B.x-1,x+7
C.x+1,x+7 D.x-1,x+14
7、若有定义float a[m][n];,且a[1][1]的地址为x,每个float元素占用4个字节,则a[il[j]的地址为
A.x+4*(i-1)*n+4*(j-1) B.x+(i-1)*n+(j-1)
C.x+4*(i-1)*j+(j-1) D.x+4*i*j+4*j
二、 填空题
1、char st[20] = "SEU\0\t\\";
cout<<sizeof(st)<<strlen(st)<<endl;则输出的内容是 ,如将st数组定义中的20去掉,则输出的内容是 。
三、 程序阅读题
1、 写出如下程序的运行结果。
int main()
{
int i,j;
int a[10]={1,1,1,1,1,1,1,1,1,1};
for(i=0; i<10;i++)
for(j=0;j<i; j++)
a[i]=a[i]+a[j];
for(i=0; i<10; i++)
cout<<a[i]<<'\t';
cout<<'\n';
return 0;
}
2、 写出如下程序的运行结果。
int main()
{
int a[3][3] = {1,0,2,2,2,0,0,1,0};
int i,j;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
{
a[i][j]=a[a[i][j]][a[j][i]];
cout<<a[i][j]<<'\t';
}
return 0;
}
四、 程序填空题
1、定义函数,在一维数组中出最大值和最小值,主函数中调用该函数并输出数组的最大最小元素。
void cal(int a[],int n, ){
max=a[0];
;
for(int i=1;i<n;i++){
if(a[i]>max) ;
if(a[i]<min) min=a[i];
}
}
int main(){
int a[10];
cout<<"输入10个整数:"<<endl;
for(int i=0;i<10;i++) cin>>a[i];
;
cal( ,max,min);
for(i=0;i<10;i++) cout<<a[i]<<" ";
cout<<endl;
cout<<"max="<<max<<",min="<<min<<endl;
return 0;
}
2、下列函数inverse的功能是使一个字符串按逆序存放,请填空。
void inverse(char str[])
{
char m;
int i,j;
for(i=0,j=strlen(str); ;i++, )
{
m=str[i];
str[i]= ;
;
}
}
3、 下列程序用于判断字符串S是否对称,对称时返回1,否则返回0。如f(”abba”)返回1,而f("abab")返回0。请填空。
int f( )
{
int i=0,j=0;
while(s[j]!='\0') ;
for(j--;i<j&&s[i]==s[j];i++,j--);
return( );
}
4、下面函数是寻二维数组中每一行的最大值,请填空。
#define N 5
#define M 5
void max(int a[N][M])
{
int i,j,p;
for(i=0;i<N;i++)
{
;
for(j=1;j<M;j++)
if(a[i][p]<a[i][j])
;
cout<<i<<":"<<a[i][p]<<endl;
}
}
5、下面的程序是把十进制数转换为某个指定的进制,请填空。
int main()
{
int num[65],i=0,base;
long n;
cout<<"input a decimal number:";
cin>>n;
cout<<"input base number:";
cin>>base;
do
{
;
i++;
n=n/base;
}while( );
for( ;i>=0;i--)
cout<<num[i];
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论