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,在输入数据时就可得到最值的大小和序号,极大的简化了代码量