• 第八次作业


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

    # include <stdio.h>
    # define N 100
    int main ()
    {
      int score [N] ,n,sum, i,max,min,index,grade,index1,index2;
      double average ;
      printf("输入学生的个数:
    ");
      scanf("%d",&n);
      for (i=0;i<n;i++)
      {
         printf("输入学生的成绩:
    ");
         scanf("%d",&score [i]);
      }
      //平均值
      sum=0;
      for (i=0;i<n;i++)
      {
         sum+=score[i];
      }
      average=(double)sum/n;
      printf ( "The average is:%.2f
    " , average ) ;
      //最大值
      max=score[0];
      index=0;
      for(i=0;i<n;i++)
      {
         if(score[i]>max)
         {
            max=score[i];
            index=i;
         }
      }
      printf("最大值为%d,下标为%d
    ",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
    ",min,index1+1);
      //学生位置
      index2=0;
      printf("请输入一个学生的成绩:
    ");
      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("请插入一个数字:
    ");
      scanf ("%d",&a);
      d=11;
      for (i=0;i<11;i++)
      {
         if (a<scare[i])
         {
            d=i+1;
            printf("插入到%d位
    ",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
    ",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

  • 相关阅读:
    标签的讲解
    属性分类
    LeetCode 003. 无重复字符的最长子串 双指针
    Leetcode 136. 只出现一次的数字 异或性质
    Leetcode 231. 2的幂 数学
    LeetCode 21. 合并两个有序链表
    象棋博弈资源
    acwing 343. 排序 topsort floyd 传播闭包
    Leetcode 945 使数组唯一的最小增量 贪心
    Leetcode 785 判断二分图 BFS 二分染色
  • 原文地址:https://www.cnblogs.com/wei-1249700655/p/6091711.html
Copyright © 2020-2023  润新知