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

    一、实验内容

    1.实验要求

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

    代码

    #include<stdio.h>
    #define N 100
    int main()
    {
        int i,a,n,sum,max,min,grade,index,score[N],index1=0,index2=0;
        double average;
        printf("请输入学生数量:
    ");
        scanf("%d",&n);
        sum=0;
        //输入学生成绩
        for(i=0;i<n;i++)
        {
            printf("请输入第%d位学生的成绩
    ",i+1);
            scanf("%d",&score[i]);
            sum=sum+score[i];
        }
        //平均成绩
        average=(double)sum/n;
        printf("平均成绩是%.2lf
    ",average);
        //最大值最小值及下标
        max=score[0];
        min=score[0];
        for(i=0;i<n;i++)
        {
            
            if(score[i]>max)
            {
                max=score[i];
                index1=i;
            }
            
            if(score[i]<min)
            {
                min=score[i];
                index2=i;
            }
        }
        printf("max=%d,下标为%d,min=%d,下标为%d
    ",max,index1,min,index2);
        //成绩查找
        printf("输入你想查找的成绩
    ");
        scanf( "%d",&grade);
        a=0;
        for(i=0;i<n;i++)
        {
            if(score[i]==grade)
            {
                printf("第%d位同学符合人要求
    ",i+1);
                a++;
            }
        }
        printf("共有%d位同学符合要求
    ",a);
        return 0;
    }

    程序运行结果

    2.实验要求

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

    代码

    #include<stdio.h>
    #define N 11
    int main()
    {
        int i,m,n,
            num[N]={2,4,6,8,10,12,14,16,18,20};
        printf("输入你想插入的一个数字
    ");
        scanf("%d",&n);
        for(i=0;i<N-1;i++)
        {
            if(i>=N-2)
            {
                num[N-1]=n;
            }
            if(n<=num[i])
            {
                for(m=N-2;m>=i;m--)
                {
                
                    num[m+1]=num[m];
                }
                num[i]=n;
                break;
            }        
        } 
        for(i=0;i<N;i++)
        {
            printf("%d ",num[i]);
        }
        return 0;
    }

    程序运行结果

    3.实验要求

    用数组实现火柴棍等式

    代码

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

    程序运行结果

    附加题

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

    代码

    程序运行结果

    二、知识点总结

    1. 数组的定义,数组的初始化和赋值。

      一堆数组的定义:数组类型 数组名【常量表达式】

      数组不初始化,其 元素值为随机数

      只给部分数组元素赋初值,则其后的元素被初始为0

      全部数组元素赋初值时,可不指定数组长度

    在数组定义后对数组元素进行动态赋值,通常用循环结构实现

    2. 明确以下问题:能否给数组名赋值?为什么?C语言会对数组下

    标做越界检查吗?那么我们写程序时应该注意什么?

      数组元素的下标采用的是元素相对于数组起始地址的偏移量,所以从0开始顺序编号

      数组名中存放的是一个地址常量,他代表整个数组的首地址。同一数组中的所有元素。同一数组中的所有元素按其下标的顺序占用一段连续的存储单元

      数组元素的引用格式:数组名【下标 】

      下标可以是非负的整形常量或其值为非负整型数据的表达式,取值范围是0-(元素个数-1)

      在编写程序时,保证数组下标不越界是十分重要的

      一个数组元素 实质上就是一个变量,它具有和相同类型单个变量一样的属性,可以对他进行赋值和参与各种运算。

    3. 对数组数据的访问一定是跟循环结构分不开的,一般情况下,循环变量的值随数组元素的下标变化。学会灵活运行循环结构完成对数组数组的处理。

    4.通过火柴棍等式问题,理解利用函数、数组对程序的优化。

    三、实验总结

    1.for语句后面不加分号

    2.不能对数组整体引用

  • 相关阅读:
    2020-2021-1 20201314 《信息安全专业导论》第三周学习总结
    罗马数字转阿拉伯数字
    BASE64编码-20201314黄斯阳
    学期(2020-2021-1) 学号(20201314) 《信息安全专业导论》第2周学习总结
    师生关系
    快速浏览教材 。
    浏览教材的疑问
    2020-2021-1 20201314 《信息安全专业导论》第一周学习总结
    第四周作业补交
    第四周作业
  • 原文地址:https://www.cnblogs.com/xxs812/p/6091575.html
Copyright © 2011-2022 走看看