首页 > 代码库 > 第八次作业

第八次作业

1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。

# include <stdio.h>
# define N 100
int main ()
{
  int score [N] ,n,sum, i,max,min,index,grade,index1,index2;
  double average ;
  printf("输入学生的个数:\n");
  scanf("%d",&n);
  for (i=0;i<n;i++)
  {
     printf("输入学生的成绩:\n");
     scanf("%d",&score [i]);
  }
  //平均值
  sum=0;
  for (i=0;i<n;i++)
  {
     sum+=score[i];
  }
  average=(double)sum/n;
  printf ( "The average is:%.2f\n" , average ) ;
  //最大值
  max=score[0];
  index=0;
  for(i=0;i<n;i++)
  {
     if(score[i]>max)
     {
        max=score[i];
        index=i;
     }
  }
  printf("最大值为%d,下标为%d\n",max,index+1);
  //最小值
  min=score[0];
   index1=0;
  for(i=0;i<n;i++)
  {
      if(score[i]<min)
      {
         min=score[i];
         index1=i;
      }
  }
  printf("最小值为%d,下标为%d\n",min,index1+1);
  //学生位置
  index2=0;
  printf("请输入一个学生的成绩:\n");
  scanf("%d",&grade);
  for(i=0;i<n;i++)
  {
     if(grade==score[i])
     {
         index2=i;
         printf("此学生是第%d个学生",index2+1);
         break;
     }

  }


     return 0;

    
}

技术分享

 

2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。

# include <stdio.h>
# define N 11
int main ()
{
  int a,b,c,d,i;
  int scare [N]={1,3,5,7,9,11,13,15,17,19};
  printf("请插入一个数字:\n");
  scanf ("%d",&a);
  d=11;
  for (i=0;i<11;i++)
  {
     if (a<scare[i])
     {
        d=i+1;
        printf("插入到%d位\n",d);
        break;
     }
  }
  
    for (i=d-1,c=N-1;i<=c;c--)
    {
        scare[c]=scare[c-1];
      }
      scare[i]=a;
      for (i=0;i<N;i++)
      {
        printf(" %d",scare[i]);
      }
  return 0;
}

 技术分享

 

   技术分享

技术分享

 

3.用数组实现火柴棍等式

# include <stdio.h>
int main ()
{
   int a,b,c,sum;
   int match[10]={6,2,5,5,4,5,6,3,7,6};
   c=0;
   sum=0;
   for (a=0;a<=9;a++)
   for (b=0;b<=9;b++)
   {
       c=a+b;
       if(c>9)
       {
         break;
       }
       sum=match[a]+match[b]+match[c];
       if (sum==12)
       {
          printf("%d+%d=%d\n",a,b,c);
       }
   }
   return 0;
}

技术分享

 

附加题

    输入一行任意长的数字,用数组元素作为计数器统计每个数字出现的次数。用下标为0的元素统计0出现的次数,用下标为1的元素统计1出现的次数…

二.知识点:

1.一维数组的定义方式: 数据类型 数组名[数组长度];

2.数组的特点

(1)数组中的每一个元素都属于同一种数据类型 (2)数组一旦创建,不能改变大小 (3)数组中的元素在内存中是连续依次排列的

3.(1)一维数组的引用 数组必须先定义,后使用 (2)只能逐个引用数组元素,不能一次引用整个数组(3) 每个数组元素是一个数组类型的变量

4.(1)数组元素表示形式: 数组名[下标]

(2)下标从0开始

(3)允许快速随机访问  

(4)引用时下标允许是int型变量或表达式 a[i]

(5)C语言对数组不作越界检查,使用时要注意

越界的数组访问可能导致程序崩溃,因此,这是程序员的责任来保证程序只使用有效的下标值:[0,数组的大小-1]

5.一维数组的赋值

(1)初始化方式   int a[5]={1,2,3,4,5}; 等价于:a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5;

(2)说明:<1> 数组不初始化,其元素值为随机数<2>只给部分数组元素赋初值,则其后的元素被初始化为0<3>当全部数组元素赋初值时,可不指定数组长度

6.在数组定义后对数组进行动态赋值 通常通过循环结构实现

7.数组变量本身(数组名)不能被赋值

8.要把一个数组的所有元素交给另一个数组,必须采用 数组遍历

三.实验总结:

1.应将min=0改写为min=score[0];

2.在输出值那再让下标加1;

3.第二题要考虑插入的值为最大值的情况

4.第二题因要插入一个只所以要数组元素为11

 

第八次作业