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小时内删除。