一、选择题:
1. 若有以下数组说明,则数值最小的和最大的元素下标分别是(b )。
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
A.1,12        B.0,11        C.1,11          D.0,12
2. 若有以下数组说明,则i=10;a[a[i]]元素数值是( c)。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A.10          B.9            C.6            D.5
3. 若有以下说明,则数值为4的表达式是( d)。
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='a’,d,g;
A.a[g-c]      B.a[4]        C.a[‘d’-‘c’]        D.a[‘d’-c]
4. 下列语句中,正确的是(d )。
A. char a[3][]={‘abc’,l};
B. char a[][3]={‘abc’,l};
C. char a[3][]={‘a’,l};
D. char a[][3]={a,l};
5. 下列定义的字符数组中,“printf(%s\n,str[2]);”的是输出是(c )。
static str[3][20]={basic,foxpro,windows};
A.basic        B.foxpro        C.windows          D.输出语句出错
6. 合法的数组定义是( d)。
A. int a[]={string};
B. int a[5]={0,1,2,3,4,5};
C. char a={string};
D. char a[]={0,1,2,3,4,5};
7. 语句“printf((%d\n,strlen(ats\no12\1\\));”的输出结果是(c )。
A.11          B.10          C.9            D.8
8. 设有如下字符数组定义,则合法的函数调用是(a )。
    char a[]={I am a student},b[]={techer};
A.strcmp(a,b);                B.strcpy(a,b[0]);
C.strcpy(a[7],b);            D.strcat(a[7],b);
9. 设有如下定义,则正确的叙述为( c )
    char x[]={abcdefg};
    char y[]={a,b,c,d,e,f,g};
A. 数组x和数组y等价
B. 数组x和数组y长度相同
C. 数组x的长度大于数组y的长度
D. 数组x的长度小于数组y的长度
10. 设有如下二维数组定义,则不正确的元素引用是(c  )
    int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
A.a[2][3]                  B.a[a[0][0]][1]
C.a[7]                    D.a[2][‘c’c语言二维数组转置-a]
二、填空题
1. C语言中,数组的各元素必须具有相同的 数据类型        ,元素的下标下限为  0      ,但在执行过程中,不检查元素下标是否  越界      下标必须是正整数、0或者    整形表达式   
2. C语言中,数组在内存中各占一片  连续      的存储区,由数组名代表它的首地址。数组名是一个  地址      常量,不能对它进行赋值运算。
3. 执行“static int b[5],a[][3]={1,2,3,4,5,6};”后,b[4]=  0    a[1][2]=  6  
4. 设有定义语句“static int a[3][4]={{1},{2},{3}};”,则a[1][1]的值为  0      a[2][1]的值为  0     
5. 若在程序中用到“putchar()”函数,则应在程序开头写上包含命令  #include <stdio.h>         ,若在程序中用到“strlen()”函数,则应在程序开头写上包含命令  #include <string,h>         
6. 下面程序的功能是输出数组s中最大元素的下标,请填空。
    void main()
    { int k,p;
      int s[]={1,-9,7,2,-10,3};
      for(p=0,k=p;p<6;p++) if(s[p]>s[k])  k=p      ;
      printf(%d\n,k);
    }
7. 下面程序的功能是在a数组中查与x值相同的元素所在位置。数据从a[1]元素开始存放,请填空。
  #include <stdio.h>
    void main()
    { int a[11],i,x;
      printf(输入10个整数:);
   for(i=1;i<=10;i++) scanf(%d,&a[i]);
      printf(输入要的数x); scanf(%d,      );
      a[0]=x; i=10;
      while(x!= a[i]    )  i--    ;
      if( i!=0    ) printf(x值相同的元素位置是:%d\n,i);
      else printf(不到与x值相同的元素!\n);
  }
8. 下面程序的功能是将一个字符串str的内容颠倒过来,请填空。
  #include string.h
    void main()
    { int i,j,  k ,;
      char str[]={1234567};
      for(i=0,j=strlen(str); i<j        ;i++,j--)
        { k=str[i]; str[i]=str[j]; str[j]=k;}
    }
9. 以下程序的功能是给偶数行的方阵中所有边上的元素和两对角线上的元素置1,其它元素置0(要求对每个元素只置一次值)。最后按矩阵形式输出。请填空。
  void main()
    { int a[10][10],i,j;
      for(i=0;i<10;i++)
        {a[  i][i]=1; a[i][    9-i  ]=1;}
      for(i=1;i<9;i++) a[0][]=1;
      for(i=1;i<9;i++) a[  9  ][i]=1;
    for(i=1;i<9;i++) a[i][ 0 ]=1;
      for(i=1;i<9;i++)  a[][9]=1;
      for(i=1;i<  9  ;i++)
        for(j=1;j<;j++)
            if( i!=j&i+j!=9        ) a[i][j]=0;
      for(i=0;i<10;i++)5
        { for(j=0;j<10;j++) printf(%2d,a[i][j]);
          Printf(\n)        ;
          }
    }
10. 用键盘输入一串字符,下面程序能统计输入字符中大写字母的个数,用‘#’号结束输入,请填空。
  #include <stdio.h>
    void main()
    { int c[26],i; char ca;
      for(i=0;i<26;i++)  c[i]=  0  ;
      scanf(“%c”,&ca);
      while( ca!=’#’      )
      { if((ca>=’A’)&&(ca<=’Z’)) c[ca-65]+=  1      ;
scanf(“%c”,&ca)        ;
}
      for(i=0;i<26;i++)
        if(c[i]) printf(“%c:%d\n”,i+ ‘A’  ,c[i]);
    }
11. 以下程序可把输入的十进制长整型数以十六进制数的形式输出,请填空。
  void main()
    { char b[17]={“0123456789ABCDEF”};
      int c[64],d,i=0,base=16;
      long n;
      printf(“Enter a number:\n”);
    scanf(“%d”,&n);
    do {c[i]= n%base       ;i++;n=n/base;}
    while (n!=0);
    printf(“Transmit new base:\n”);
    for(i=i-1;i>=0;i--)
      printf(“%c”, b[c[i]]    );
    printf(“\n”);
}
三、阅读程序,写出程序运行结果。
1. 说明下列程序的功能。  键入10行字符,然后在屏幕上输出最长的一行字符及字符长度                                 
    #include<stdio.h>
    #include<string.h>
    main()
    { char str[10][80],c[80];
      int i;
      for(i=0;i<10;i++) gets(str[i]);
      strcpy(c,str[0]);
      for(i=1;i<10;i++) if((strlen(c)<strlen(str[i])) strcpy(c,str[i]);
      printf(%s\n,c);

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