zoukankan      html  css  js  c++  java
  • 第八次作业

    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

  • 相关阅读:
    高德离线地图瓦片坐标偏移纠偏
    CefSharp禁止弹出新窗体,在同一窗口打开链接,或者在新Tab页打开链接,并且支持带type="POST" target="_blank"的链接
    C# .NET的BinaryFormatter、protobuf-net、Newtonsoft.Json以及自己写的序列化方法序列化效率和序列化后的文件体积大小对比
    C# Task 多任务 限制Task并发数量
    C# List 根据对象属性去重的四种方法对比
    WPF使用FlowDocument实现图文混排
    C# List与Dictionary相互转换与高效查找
    Windows服务安装批处理命令
    C# 32位程序 申请大内存
    代码的鲁棒性:链表中倒数第k个结点
  • 原文地址:https://www.cnblogs.com/wei-1249700655/p/6091711.html
Copyright © 2011-2022 走看看