公告:本站提供编程开发方面的技术交流与分享,打造最佳教程网,希望能为您排忧解难!

C语言教程C语言习题集6 数组

C语言习题集6 数组

更新时间:2013-04-08 17:40:41 |

数组

1.以下为一维整型数组a的正确说明是_________.
  a)int a(10);              b)int n=10,a[n];
  c)int n;                  d)#define SIZE 10;
    scanf("%d",&n);           int a[SIZE];
    int a[n];
 
2.以下对二维数组a的正确说明是________.
  a)int a[3][];               b)float a(3,4);
  c)double  a[1][4]           d)float a(3)(4);
 
3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______.
(假设a[0][0]位于数组的第一个位置上。)
  a)i*m+j     b)j*m+i   c)i*m+j-1    d)i*m+j+1
 
4.若二维数组a有m列,则在a[i][j]前的元素个数为________.
  a)j*m+i     b)i*m+j    c)i*m+j-1   d)i*m+j+1
 
5.若有以下程序段:
    int a[]={4,0,2,3,1},i,j,t;
    for(i=1;i<5;i++)
    {t=a[i];j=i-1;
      while(j>=0&&t>a[j])
        {a[j+1]=a[j];j--;}
      a[j+1]=t;}
   ... ...
 则该程序段的功能是_________.
   a)对数组a进行插入排序(升序)
   b)对数组a进行插入排序(降序)
   c)对数组a进行选择排序(升序)
   d)对数组a进行选择排序(降序)
 
6.有两个字符数组a、b,则以下正确的输入语句是_______.
  a)gets(a,b);                 b)scanf("%s%s",a,b);
  c)scanf("%s%s",&a,&b);       d)gets("a"),gets("b");
 
7.下面程序段的运行结果是_________.
  char a[7]="abcdef";</P< p>
  char b[4]="ABC";
  strcpy(a,b);
  printf("%c",a[5]);
  a)空格     b)\0    c)e     d)f
 
8.判断字符串s1是否大于字符串s2,应当使用_______.
   a)if(s1>s2)                b)if(strcmp(s1,s2))
   c)if(strcmp(s2,s1)>0)      d)if(strcmp(s1,s2)>0)
 
9.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用
空格分隔,请选择填空。
   #include <stdio.h>
   main()
   {
    char s[80],c1,c2='';
    int i=0,num=0;
    gets(s);
    while(s[i]!='\0')
     {c1=s[i];
      if(i==0)c2='';
      else c2=s[i-1];
      if(___)num++
      i++;
    }
printf("There are %d words.\n",num);
}
  a)c1==''&&c2==''     b)c1!=''&&c2==''
  c)c1==''&&c2!=''     d)c1!=''&&c2!=''
 
10.下面程序的运行结果是________.
  #include <stdio.h>
  main()
  {char str[]="SSSWLIA",c;
    int k;
    for(k=2;(c=str[k])!='\0';k++)
    {switch(c)
       {case 'I':++k;break;
        case 'L':continue;
        default:putchar(c);continue;
       }
      putchar('*');
    }
 } 
 a)SSW*    b)SW*    c)SW*A     d)SW

二、填空题
1. 若有定义:double x[3][5];则x数组中行下标的下限为_________,列下标的上限为_________.
2.下面程序以每行4个数据的形式输出a数组,请填空。
  #define N  20
  main()
   {int a[N],i;
   for(i=0;i<N;i++)scanf("%d",_______);
   for(i=0i<N;i++)
   {if  (_____________)    _____________
    printf("%3d",a[i]);
   }
  printf("\n");
}
 
3. 下面程序可求出矩阵a的主对角线上的元素之和,请填空。
  main()
  {
   int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
   for(i=0;i<3;i++)
    for(j=0;j<3;j++)
     if(_____)sum=sum+_______;
    printf("sum=%d\n",sum);
}
 
4. 当从键盘输入18并回车后,下面程序的运行结果是________.
 main()
  {int x,y,i,a[8],j,u,v;
   scanf("%d",&x);
   y=x;i=0;
   do
   {u=y/2; 
    a[i]=y%2;
    i++;y=u;
    }while(y>=1)
   for(j=i-1;j>=0;j--)
     printf("%d",a[j]);</P< p>
}
 
5. 下面程序用插入法对数组a进行降序排序。请填空。
  main()
  {int a[5]={4,7,2,5,1};
    int i,j,m;
   for(i=1;i<5;i++)
     {m=a[i];
      j=____;
      while(j>=0&&m>a[j])
      {_______;
       j--;
       }
     _______=m;
   }
    for(i=0;i<5;i++)
     printf("%d",a[i]);
    printf("\n");
}
 
6. 下面程序的功能是在三个字符串中找出最小的,请填空。
 #include<stdio.h>
 #include<string.h>
 main()
 {
  char s[20],str[3][20];
  int i;
  for(i=0;i<3;i++)gets(str[i]);
  strcpy(s,_______);
  if(strcmp(str[2],s)<0)strcpy(s,str[2]);
  printf("%s\n",_______);
 }
 
7. 下面程序的运行结果是________.
  #include<stdio.h>
  main()
  {char s[]="ABCCDA";
    int k;char c;
   for(k=1;(c=s[k])!='\0';k++)
    {switch(c)
      {case 'A':putchar('%');continue;
       case  'B':++k;break;
       default:putchar('*');</P< p>
       case  'C':putchar('&');continue;
     }
   putchar('#');
   }
}

最佳教程网

最大的技术交流平台 www.goodxyx.com© CopyRight 2011-2013, All Rights Reserved

浙ICP备11033019号