构造数据对象——数组
 
一、填空题
1.数组是一组        相同的    集合。
2.数组名代表数组的   
3.数组元素在数组中的位置序号称为    它是从    开始整数。
4.有int a[ ]={4,6,2,12,435,-9,76,0,0};该数组元素值最大的下标为   
5.定义数组tw,其能存储23个长整形数的语句为     
6.有说明语句int  a[10]={1,2,3,4,5,6};则元素a[9]的值为 
7.数组char  c[ ]=abcd中有    个元素,最后一个元素是   
8.a在内存中占      个存储单元。
9.定义一个能存放下字符串Vocation的字符数组enm的语句为   
10.定义一个可保存100个整型数的数组pn,并把每个元素初值设为0的语句是     
11.与puts(ss)等价的printf函数调用是     
二、选择题
1.下面关于数组的说法,不正确的是(  )
  A.数组总为一个整体,可以参加算术运算
  B.数组中的数组元素相当于一个简单变量
  C.数组可以用来保存字符串
  D.数组是一组连续的,类型相同的数据集合
2.下列说法不是数组特性的是(  )
  A.数组元素类型相同      B.数组长度固定
  C.数组占用连续的内存空间    D.数组可作为一个整体参与运算
3.定义一个具有8个元素的整形数组,应使用语句(  )
  A.int a[8];       B.int a[2,4];
  C.int a[ ];              D.int *a[8];
4. 以下能正确定义一维数组的选项是(  )
A.int  num[  ];
B.#define  N  100  int  num[N];
C.int num[0..100];
D.int N=100;
5.下面对s的初始化,不正确的是(  )
A.char s[5]={abcd};
B.char s[5]={‘a,b,c};
C.char s[5]=””;
D.char s[5]=abcd;
6.对以下说明语句正确的理解是(  )
 int a[10]={6,7,8,9,10,12};
A.将6个初值依次赋值给a[1]至a[5];
B.将6个初值依次赋值给a[0]至a[5];
C.将6个初值依次赋值给a[5]至a[10];
D.因数组长度和初值的个数不同,所以此语句不正确
 7.用scanf语句为数组a中的第二个数组元素输入数据,格式正确的是(  )
    A.scanf(%d,a[2]);              B.scanf(%d,&a[2]);
    C.scanf(%d,&a[1]);            D.scanf(%d,a(1));
三、判断题
1.数组在内存中占用的空间是不连续的。(  )
2.数组下标的取值范围从1开始到长度结束。(  )
3.数组的3个特点是:数组元素类型相同、数组长度固定、数组占用连续的内存空间。(  )
4.利用scanf函数输入字符串时,以空格作为结束标志。(  )
5.使用串常量给字符数组初始化时,可以省略{  }。(  )
6.利用格式转换说明符%s输入字符串时,系统会自动在字符串末尾加上\0;输出时,遇到第1个\0结束,且输出字符中不包含\0。(  )
四、写出程序运行结果
1.
  #include"stdio.h"
main( )
{
    char s[20];
    int i,j;
    gets(s);
    for(i=j=0;s[i]!='\0';i++)
        if(s[i]!='c')
          s[j++]=s[i];
    s[j]='\0';
    puts(s);
}
  若输入bcdceeccffg
  程序运行结果:             
2.
#include"stdio.h"
main()
{
    int a[8]={1,4,3,56,77,44,66,88};
    int x=0,y=0,i;
    for(i=0;i<9;i++)
    {
        if(a[i]%2==0)
          x=x+1;
        else
          y=y+1;
    }
    printf("x=%d,y=%d\n",x,y);
}
程序运行结果:             
3.
#include"Stdio.h"
main()
{
    char a[ ]="morning",t;
    int i,j=0;
    for(i=1;i<7;i++)
        if(a[j]<a[i])
          j=i;
    t=a[j];a[j]=a[7];
    a[7]=a[j];
    printf("%s",a);
}
程序运行结果:             
4.
#include"stdio.h"
main()
{
    int i,f[10];
    f[0]=f[1]=1;
    for(i=2;i<10;i++)
        f[i]=f[i-2]+f[i-1];
    for(i=0;i<10;i++)
    {
        if(i%4==0)
          printf("\n");
          printf("%d",f[i]);
    }
}
程序运行结果:             
五、程序填空:
以下程序的功能是将输入的十进制数正整数转换为相应的二进制数形式,请填空。
#include"Stdio.h"
scanf输入整型数组
main()
{
    int a,e[10],c,i=0;
    printf("请输入一个正整数\n");
    scanf("%d",&a);
    while(a!=0)
    {
        c=           ;
        a=a/2;
        e[i]=          ;
        i++;
    }
    for( ;i>0;i--)
      printf("%d",e[i-1]);
}
  int sub(int a)
    {   
    int c;
    c=a%2;
              ;
  }
六、请思考下列问题,想一想解决的方法,写出相应程序
1.输入30个数放在一个数组中,输出其中最大者和最小者,并求30个数和和平均值。
2.输入20个数到一个数组中,出其中的质数。
3.数组a已经赋值,输入一个数x,看在数组a中能否到,若到输出find,未到输出no find(数组中无重复值)。
构造数据对象——数组(参考答案)
一、填空题
1.  有序的连续的类型    变量
2.  首地址
3.  数组元素的下标  0
4.  4
5.  long tw[23];
6.  0
7.  5    \0
8.  2
9.  char  enm[9]=Vocation;
10.  printf(%s,ss);
二、选择题
1.  A
2.  D
3.  A
4.  B
5.  A
6.  B
7.  C
三、判断题
1.  ×
2.  ×
3. 
4. 
5. 
6. 
四、程序运行结果
1.  bdeeffg
2.  x=5,y=3
3.  mo
4.  1123
581221
3455
五、程序填空
  sub(a)
  c
  return  c
六、编写程序
1.
#include"stdio.h"
#define N 30
main()
{
    int i,a[N],max,min,sum=0;
    float ave;
    for(i=0;i<N;i++)
        scanf("%d",&a[i]);
    max=a[0],min=a[0];
    for(i=0;i<N;i++)
    {
      if(max<a[i])
          max=a[i];
      if(min>a[i])
          min=a[i];
        sum+=a[i];   
    }
    ave=sum/30.0;
    printf("max=%d\nmin=%d\n",max,min);
    printf("sum=%d\nave=%f\n",sum,ave);
}
2.
#include"stdio.h"
#define N 20
main()
{
    int a[N],i,j;
    for(i=0;i<N;i++)
        scanf("%d",&a[i]);
    printf("\n其中质数有:");
    for(i=0;i<N;i++)
    {
        for(j=2;j<a[i];j++)
            if(a[i]%j==0)
              break;
        if(a[i]==j)
          printf("%d ",a[i]);
    }
}
3.
#include"stdio.h"
main()
{
    int a[10]={1,5,7,9,22,59,84,12,6,15};/*任意定义数组并初始化*/
    int s,i,n=0;
    printf("请输入一个数:\n");
    scanf("%d",&s);
    for(i=0;i<10;i++)
        if(a[i]==s)
        {
              n=1;
              break;
          }
    if(n==1)
      printf("\nfind");
    else
      printf("\nno find");
}

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