【习题5-1
一、选择题
1.有定义语句“int a[][3]{1, 2, 3, 4, 5, 6};”,则a[1][0]的值是  A     
A4            B. 1              C. 2              D. 5
2.执行下面的程序段后,变量k中的值为  A   
int k=3,s[2];
s[0]=k;
k=s[1]*10;
A.不定值      B33            C30            D10
3.在定义“int a[10];”之后,对a元素的引用正确的是    D 
Aa[10]        Ba[6,3]        C a(6)            Da[10-10]
4.以下程序的输出结果是  C   
void main()
{
  int a[10],i;
  for(i=9;i>=0;i--)   
        a[i]=10-i;
  printf("%d%d%d",a[2],a[5],a[8]);
}
A258          B741            C852            D369
5.以下程序的输出结果是    D   
void main()
{
  int p[7]={11,13,14,15,16,17,18},i=0,k=0;
  while(i<7&&p[i]%2) 
  {k=k+p[i];
  i++;}
  printf(”%d\n”,k);
}
A58            B56            C45            D24
6.以下数组定义中不正确的是    B   
Aint a[2][3];           
Bint d[3][]{{1,2},{1,2,3},{1,2,3,4}};
Cint c[100][100]{0};   
Dint b[][2]{0,1,2,3};
7.以下能正确定义数组并正确赋初值的语句是    D   
Aint N5,b[N][N];                Bint a[1][2]{{1},{3}};
Cint c[2][]{{1,2},{3,4}};        Dint d[3][2]{{1,2},{34}};
8.以下程序的输出结果是  D   
void main()
{
  int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
  for(i=1;i<3;i++)
      for(j=0;j<=i;j++)
        s+=a[i][j];
  printf(”%d\n”,s);
}
A21      B19          C20        D18
9.以下程序的输出结果是  C   
void main()
{
  int x[3][3]={1,2,3,4,5,6,7,8,9},i;
  for(i=0;i<3;i++)
      printf(”%d ”,x[i][2-i]);
}
A 1 5 9    B 1 4 7    C 3 5 7    D 3 6 9数组全部赋值为1
10.若有以下定义语句,则表达式“x[1][1]*x[2][2]”的值是  A     
float  x[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};
A 0.0          B 4.0          C 5.0        D 6.0
二、填空题
1.在定义“int a[5][6]后,第10个元素是 a[1][3]     
2.有以下程序
void main()
{
  int m[][3]={1,4,7,2,5,8,3,6,9};
  int i,k=2;
  for(i=0;i<3;i++)
  printf(”%d”,m[k][i]);
}
执行后的输出结果是 369   
3.若有以下程序,执行后的输出结果是  58 
void main()
{
  int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},
                    {-21,23,0,-24},{-31,32,-33,0}};
    int i,j,s=0;
    for(i=0;i<4;i++)
    {
      for(j=0;j<4;j++)
      {
        if(a[i][j] <0)  continue;
        if(a[i][j] ==0)  break;
        s+=a[i][j];
          }
      }
      printf(”%d\n”,s);
}
4.以下程序的输出结果是  4   
void main()
{
  int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
  for(i=0;i<3;i++)
      for(j=i;j<=i;j++)
        t=t+b[i][b[j][i]];
  printf("%d\n",t);
}
三、编程题
1.编写程序实现下述功能:有10位学生的成绩:17349088557495824390、编写程序出其中的最高分,并将最高分与第一个成绩交换位置。
#include <stdio.h>
void main()
{
    int score[11]={0,17,34,90,88,55,74,95,82,43,90};
   
    int max,max_index;
    int i,temp;
    max=score[1];
    max_index=1;
    for(i=2;i<=10;i++)
    {
        if(score[i]>max)
        {
            max=score[i];
            max_index=i;
        }
    }
    printf("交换前的10个成绩\n");
    for(i=1;i<=10;i++)
    {
        printf("%3d",score[i]);
    }
    printf("\n");
    temp=score[1];
    score[1]=score[max_index];
    score[max_index]=temp;
    printf("交换后的10个成绩\n");
    for(i=1;i<=10;i++)
    {
        printf("%3d",score[i]);
    }
    printf("\n");
}
2.编写程序实现下述功能:将数组a的内容逆置重放。要求不得另外开辟数组, 只能借助于一个临时存储单元。
#define N 5
#include <stdio.h>
void main()
{
    int a[N]={0,17,34,90,88};
   
    int i,temp;
    printf("正序:\n");
    for(i=0;i<N;i++)
    {
        printf("%3d",a[i]);
    }
    printf("\n");
    for(i=0;i<N/2;i++)
    {
        temp=a[i];
        a[i]=a[N-i-1];
        a[N-i-1]=temp;
    }
    printf("逆序:\n");
    for(i=0;i<N;i++)
    {
        printf("%3d",a[i]);
    }
    printf("\n");
}
3.编写程序实现下述功能:有一个已经排好序的数组。要求输入一个数,在数组中查是否有这个数,如果有,将该数从数组中删除,要求删除后的数组仍然保持有序;如果没有,则输出“数组中没有这个数!”
void main()
{
    int a[10]={1,4,6,9,13,16,19,28,40,100};
    int number,i,j;
    printf("\n 原始数组为:\n");
    for(i=0;i<10;i++)
        printf("%5d",a[i]);
    printf("\n");
    printf("输入要删除的数:");
    scanf("%d",&number);
   
    for (i=0;i<10;i++)
    {
      if (a[i]==number)
      {
          break;
      }
    }
    if(i<10)
    {
        for(j=i;j<10;j++)
            a[j]=a[j+1];
        printf("\n 删除%d后的数组为:\n",number);

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