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

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

    #include<stdio.h>
    #define N 100
    int main()
    {
        int score[N],n,i,sum,max,min,maxindex[N],minindex[N],grade,grades[N],a=1,b=1,c;
        double average;
        printf("请输入学生的数量。
    ");
        scanf("%d",&n);
        sum=0;
        for(i=1;i<=n;i++)
        {
            printf("请输入第%d个学生的成绩。
    ",i);
            scanf("%d",&score[i]);
            sum=sum+score[i];
        }
        average=(double)sum/n;
        printf("平均成绩为%.2lf
    ",average);
        max=score[1];
        min=score[1];
        for(i=1;i<=n;i++)
        {
            if(score[i]==max)
            {
                maxindex[a++]=i;
            }
            else if(score[i]>max)
            {
                max=score[i];
                a=1;
                maxindex[a++]=i;
            }
            if(score[i]==min)
            {
                minindex[b++]=i;
            }
            else if(score[i]<min)
            {
                min=score[i];
                b=1;
                minindex[b++]=i;
            }
        }
        printf("成绩最高的同学有:");
        for(i=1;i<a;i++)
        {
            printf("第%d名学生  ",maxindex[i]);
        }
        printf("
    ");
        printf("成绩最低的同学有:");
        for(i=1;i<b;i++)
        {
            printf("第%d名学生  ",minindex[i]);
        }
        printf("
    ");
        printf("请输入你想查找的成绩。
    ");
        scanf("%d",&grade);
        c=1;
        for(i=1;i<=n;i++)
        {
            if(score[i]==grade)
            {
                grades[c]=i;
                c++;
            }
        }
        if(c==1)
        printf("你所查找的成绩不存在。
    "); 
        else
        {
            printf("符合你所查找成绩的学生有:");
            for(i=1;i<c;i++)
            printf("第%d名学生  ",grades[i]);
            printf("
    总共有%d名学生。",c-1);
        }
        return 0;
    }

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

    #include<stdio.h>
    #define N 11
    int main()
    {
        int numbers[N]={1,2,3,4,5,6,7,8,9,10},number,i,n,a=1;
        printf("请输入你想插入的数。
    ");
        scanf("%d",&number);
        for(i=0;i<N-1;i++)
        {   
            if(number<=numbers[i])
            {   a=0;
                for(n=N-2;n>=i;n--)
                {
                    numbers[n+1]=numbers[n];
                  
                }
                numbers[i]=number;
                break;
            }
        }
        if(a)
        {
            numbers[N-1]=number;
        }
        for(i=0;i<N;i++)
        {
            printf("%d ",numbers[i]);
        }
        return 0;
    }

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

    #include<stdio.h>
    int main()
    {
        int a,b,c,huochai[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)
            break;
            if(huochai[a]+huochai[b]+huochai[c]==12)
            {
                printf("%d+%d=%d
    ",a,b,c);
            }
        }
        return 0;
    }

    附加题

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

    #include<stdio.h>
    int main()
    {
        int numbers[10]={0},i;
        char number;
        printf("请输入一行任意长的数字。
    ");
        while(number!='
    ')
        {
            scanf("%c",&number);
            numbers[number-'0']++;
        }
        for(i=0;i<10;i++)
            printf("%d出现了%d次。
    ",i,numbers[i]);
        return 0;
    }

    知识点总结:

    1.数组应先定义后使用: 数据类型 数组名【常量表达式】

    数组中的每一种元素属于同一数据类型,元素在内存中是连续以此排列的;

    只能逐个引用数组元素,不能一次引用整个数组;

    2.不允许动态定义数组,数组一但创建,便不能改变长度大小,最好使用宏定义,

    即#define N 10

          int a[N]

    3.数组里的元素 如果不赋初值,默认是随机数,然而只要有部分赋了初值,其他部分就会默认是0。

    4.当全部数组元素赋初值时,可以不定制数组长度,系统会默认给出。

    5.下标是从零开始的,而非是一;如果要使用下标是1~10,应定义数组长度为11,使下标为零的数组元素被系统默认为零。

    6.数组变量本身(数组名)不能被复制,它只代表一个地址。

    7.C语言不会对数组下标做越界检查,所以元素数应该小于等于数组长度。

    8.对数组数据的访问一定是跟循环结构分不开的,一般情况下,循环变量的值随数组元素的下标变化。

    实验总结:

    1.整形除整形还是整形,不要忘记强制类型转换。

    2.分清数组长度和下标的区别。

    3.下标不仅可以是一个常数、变量,还可以是一个表达式。

    4.在有序数组中插入一个数,当选定好位置是一定不要忘记加break,否则从这个位置开始到最后一个位置,都会被插入这个数。

     5.数组离不开循环,让数组里的元素全部输出必须借助循环,不可以直接输出数组名。

  • 相关阅读:
    Linux操作_常用命令操作练习
    Linux编程_Shell脚本练习题
    Linux操作_grep/egrep工具的使用
    Linux中的链接文件_软链接和硬链接
    Linux操作_磁盘管理_增加虚拟磁盘
    Linux命令_磁盘管理_查看磁盘或目录的容量
    Linux命令_用户身份切换
    使用Unity中的Box Collider组件完成游戏场景中的碰撞检测功能
    在Unity场景中更改天空盒的步骤
    Linux命令_用户和用户组管理
  • 原文地址:https://www.cnblogs.com/TX980502/p/6086755.html
Copyright © 2011-2022 走看看