6 数组同步练习
一、 选择题:
    一维数组:
    1. 假定int类型的变量占用2个字节,若有定义:int x[10]={0,2,4};则数组x在内存中所占字节数是 
    A)3        B)6        C)10        D)20
    2. 以下程序的输出结果是   
    main()
    {  int i,a[10];
      for(i=9;i>=0;i--) a[i]=10-i;
      printf("%d%d%d",a[2],a[5],a[8]);
    }
        A)258        B)741        C)852        D)369
    3. 以下程序的输出结果是 19 
    main()
    {
      int i,k,a[10],p[3];
      k=5;
      for(i=0;i<10;i++) a[i]=i;
      for(i=0;i<3;i++)  p[i]=a[i*(i+1)];
      for(i=0;i<3;i++)  k+=p[i]+2;
      printf("%d\n",k);
    }
    A)20        B)21        C)22        D)23
   
    4.以下程序运行时输入为aaaa bbbb<CR>cccc  dddd<CR>,则程序的输出结果是   
    include<stdio.h>
    main()
    {  char s1[10],s2[10],s3[10],s4[10];
      scanf("%s%s",s1,s2);gets(s3);gets(s4);
      puts(s1);puts(s2);puts(s3);puts(s4);
    }
    A)aaaa        B)aaaa        C)aaaa        D)aaaa  bbbb
      bbbb          bbbb          bbbb          cccc
              cccc          dddd          dddd
      cccc dddd      dddd          dddd          cccc
    5. 以下程序运行后的输出结果是     
    void fun(int a[],int i)
    {  a[i]+=i;
    }
    void main()
    {  int a[]={0,0,0,0},i;
      for(i=0;i<sizeof(a)/sizeof(int);i++)
        fun(a,i);
      printf("%d%d%d%d%d%d",a[0],a[1],a[2],a[3],i);
    }
    A)00000    B)01203    C)01234    D)编译报错
    6. 下列语句正确的是   
    A)int  a[]={1,2,3,4};        B)int a[4]={1,2,3,4,5};
    C)int b=4;a[9]={1,2,3,4};        D)int a[4],b;a=&b;
    7. 以下程序运行后数组a的值是     
    void main()
    {  int a[]={9,3,0,4,8,1,7,2,5,6},i=0,j=9,t;
      while(i<j)
      {
        if(a[i]>a[j])
        { t=a[i];a[i]=a[j];a[j]=t;}
        i++;j--;
      }
    }
    A)9,3,0,4,8,1,7,2,5,6        B)0,1,2,3,4,5,6,7,8,9
    C)6,3,0,4,1,8,7,2,5,9        D)9,8,7,6,5,4,3,2,1,0
    8.以下程序运行后的输出结果是   
    main()
    {  int a[]={19,43,0,54,98,13,57,24,59,26},t1=5000,t2=50;
      for(i=0;i<5;i++)
      {  if(a[i*2]>=a[i*2+1])string字符串转化数组
        {  t1=t1<a[i*2+1]?t1:a[i*2+1];
          t2=t2>a[i*2]?t2:a[i*2];
        }
        else
        {  t2=t2>a[i*2+1]?t2:a[i*2+1];
          t1=t1<a[i*2]?t1:a[i*2];
        }
        }
      printf("%d %d",t1,t2);
    }
    A)0 50        B)0 98        C)5000 98        D)5000 50
    9. 以下程序运行后的输出结果是   
    int fun(int a,int b)
    {  return(a>b?a:b);
    }
    main()
    {  int a[]={1,3,5,4};
      printf("%d",fun(fun(a[0],a[3]),fun(a[1],a[2])));
    }
    A)1        B)3        C)4        D)5
    10. 以下能正确定义一维数组的语句是   
    A)int a[4]=01234;    B)char a[]="01234";    C)int a[]=01234;    D)char a[4]="01234";
    11.以下程序运行后的输出结果是   
    void fun(int a)
    {  a++;
      printf("%d",a);
    }
    main()
    {  int a[3]={1,3,5},i;
      for(i=0;i<3;i++)
      {  fun(a[i]);
        printf("%d",a[i]);
      }
    }
    A)214365    B)224466    C)113355    D)编译报错
    二维数组
   
    12.以下数组定义中错误的是   
    A)int x[2][3]={1,2,3,4,5,6};        B)int x[][3]={1,2,3,4,5,6};
    C)int x[][3]={1,2,3,4,5,6,7};        D)int x[4][]={1,2,3,4,5,6};
    13. 以下程序运行后的输出结果是   
    main()
    {  int i,a[3][3]={{9,8,7},{6,5,4},{3,2,1}};
      for(i=0;i<3;i++)
        printf("%d ",a[i][i]);
    }
    A)9 8 7    B)1 5 9    C)9 5 1    D)7 5 3
    14. 以下程序运行后的输出结果是   
    main()
    {  int x[][3]={1,2,3,4,5,6,7};
      float t;
      t=sizeof(x)/sizeof(int)/3;
      printf("%.2f",t);
    }
    A)3.00        B)2.00        C)2.33        D)2.67
    15.以下数组定义中错误的是     
    A)int  x[2][3]={{1,2},{3}};        B)int x[][3]={{1},{2,3,4},{5,6,7}};
    C)int x[][3]={{1,2},{3},{4,5,6,7}};    D)int x[3][3]={1};
    16. 有定义:
    int a[]={1,2,3,4,5,6,7},b[][3]={{1,2,3},{4,5,6},{7}};
则以下叙述正确的是   
    A)数组a与数组b占用的内存空间大小一致
    B)数组a与数组b中前7int元素的值相等
    C)数组a与数组b的首地址,占用内存中同一块空间
    D)数组a与数组b完全等价
    17. 有如下定义语句:
        int a[][3]={{1,2},{1,2,3,4},{1},{2,3,4}};
则下面叙述正确的是   
    A)数组a中共有10个元素
    B)数组a43列的二维数组
    C)数组a初始化后的实际值为{{1,2,1},{2,3,4},{1,0,0},{2,3,4}}
    D)编译报错
    字符数组和字符串:
    18.以下程序运行后的输出结果是   
    void main()
    {  char s[]="abc";
      printf("%d %d",sizeof(s),strlen(s));
    }
    A)4 4        B)3 3        C)4 3        D)3 4
    19.以下程序运行后的输出结果是   
    void main()
    {  char a[12]={"1234\0abc"},b[10]={"ABC"};
      strcat(a,b);
      printf("%s",a);
    }
    A)1234ABCc    B)1234ABCabc        C)1234ABC        D)1234
    20.下面各语句中,能正确执行字符串赋值操作的语句是   
    A)char str[4][5]={"ABCDE"};        B)char s[5]={'A','B','C','D','E'};
    C)char *s,s="ABCDE";            D)char *s,scanf("%s",s);
    21.设有定义:
    char x[]="abcdefg";
    char y[]={'a','b','c','d','e','f','g'};
则以下叙述正确的是   
    A)数组xy等价                B)数组x和数组y的长度相同
    C)数组x的长度大于数组y的长度        D)数组x的长度小于数组y的长度
    22.不能把字符串赋给数组b的语句是   
    A)char  b[10]={'H','e','l','l','o'};    B)char  b[10];b="Hello";
    C)char b[10];strcpy(b,"Hello");        D)char b[10]="Hello";
    23.设有定义:char str[]="Beijing";,则执行
    printf("%d\n",strlen(ctrcpy(str,"China")));
后的输出结果是   
    A)5        B)7        C)12        D)14
    24.以下程序的执行结果是   
    #include<stdio.h>
    void main()
    {  char s[]="monrning",t;
      int i,j=0;
      for(i=1;i<7;i++)
          if(s[j]<s[i])j=i;
        t=s[j];
        s[j]=s[7];
        s[7]=s[3];
      puts(s);
    }
    A)morningr        B)mo        C)morning        D)mornin
    25. 下列语句中正确的是   
    A)char a[3][]={'abc','1'};        B)char a[][3]={'abc','1'};
    C)char a[3][]={'a',"l"};        D)char a[][3]={"a","1"};
    26. 程序段
    char str[3][20]={"word","excel","access"};
    printf("%s\n",str[2]);
的输出结果是   
    A)word        B)excel    C)access    D)出错
    27. 设有定义:char fmt[]="s=%d\n";,则数组fmt    个元素。
    A)4        B)5        C)6        D)7
    28.以下程序的输出结果是( 
    main()
    { char st[20]= "hello\0\t\\\";

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。