Tsukinai的第二十三个程序(统计学生成绩//冒泡排序)

Tsukinai的第二十三个程序

输入10个学生的C语言成绩(假设成绩为整数值),求最高成绩、最低成绩和平均值。
输入格式要求:"%d" 提示信息:“请输入10个学生的C成绩:\n”
输出格式要求:
“10个学生的C成绩分别为:\n”
“%d\t”
10个成绩的最后输出一个"\n"
“最高成绩是%d,是第%d个学生\n”
“最低成绩是%d,是第%d个学生\n”
“10名学生的C成绩的平均分为:%.2f\n”
程序运行示例如下:
请输入10个学生的C成绩:
80 90 93 78 83 67 79 60 64 45
10个学生的C成绩分别为:
80 90 93 78 83 67 79 60 64 45
最高成绩是93,是第3个学生
最低成绩是45,是第10个学生
10名学生的C成绩的平均分为:73.90

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
void Bubblesort(int a[]);

int main()
{
    int a[10], i, b[10], max, min;
    float average = 0;
    printf("请输入10个学生的C成绩:\n");
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &a[i]);
    }
    memcpy(b, a, sizeof(a));//将a数组复制到b,方便我得到第几个是最值
    printf("10个学生的C成绩分别为:\n");
    for (i = 0; i < 10; i++)
    {
        printf("%d\t", a[i]);
    }
    Bubblesort(a);
    for (i = 0; i < 10; i++)
    {
        if (b[i] == a[9])
            max = i + 1;
    }
    for (i = 0; i < 10; i++)
    {
        if (b[i] == a[0])
            min = i + 1;
    }
    for (i = 0; i < 10; i++)
    {
        average += a[i];
    }
    printf("\n最高成绩是%d,是第%d个学生\n最低成绩是%d,是第%d个学生\n10名学生的C成绩的平均分为:%.2f\n", a[9], max, a[0], min,average / 10);
    return 0;
}
void Bubblesort(int a[])
{
    int i, j, temp;
    for (i = 9; i > 0; i--)
    {
        for (j = 0; j < i; j++)
        {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

这种做法是我自己想出来的,非常繁琐,并且还使用了两个数组,还有冒泡排序,接下来是群里大佬做法

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,max=-1,min=100,a[10],maxn,minn;
    float aver=0;
    printf("10个学生的C语言成绩:\n");
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
        if(a[i]>max)
        {
            max=a[i];
            maxn=i+1;
        }
        if(a[i]<min)
        {
            min=a[i];
            minn=i+1;
        }
    }//最值大小和序号一步到位
    printf("10个学生的C语言成绩分别为:\n");
    for(i=0;i<10;i++)
    {
        aver+=a[i];
        printf("%d\t",a[i]);
    }
    printf("\n最高成绩是%d,是第%d个学生\n最低成绩是%d,是第%d个学生\n10名学生的C成绩平均分为:%.2f",max,maxn,min,minn,aver/10);
    return 0;
}

大佬的做法免去了定义数组b,并且不需要排序,通过初始化max=0和min=100,在输入数据时就可得到最值的大小和序号,极大的简化了代码量

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值