某班级学习委员整理获得奖学金排名,总成绩=智育成绩*60%+德育成绩*30%+体育成绩*10%,使用冒泡排序法将班级前12名同学的成绩进行排名。
题出自-------------------------------零基础学C语言
#include<stdio.h>
int main()
{
float grade[12];
float iTemp;
int i;
int j;
int intellect[12];
int morality[12];
int pe[12];
printf("请输入学生的智育成绩:\n");
for (i = 0; i < 12; i++)
{
printf("intellect[%d]=", i);
scanf_s("%d", &intellect[i]);
}
printf("请输入学生的德育成绩:\n");
for (i = 0; i < 12; i++)
{
printf("morality[%d]=", i);
scanf_s("%d", &morality[i]);
}
printf("请输入学生的体育成绩:\n");
for (i = 0; i < 12; i++)
{
printf("pe[%d]=", i);
scanf_s("%d", &pe[i]);
}
for (i = 0; i < 12; i++)
{
grade[i] = (float)((intellect[i] * 0.6 + morality[i] * 0.3 + pe[i] * 0.1));
}
printf("成绩排序为:\n");
for (i = 0; i < 12; i++)
{
for (j = 11; j >i; j--)
{
if (grade[i] < grade[j])
{
iTemp = grade[j];
grade[i] = grade[j];
grade[j] = iTemp;
}
}
}
for (i = 0; i < 12; i++)
{
printf("%.2f\t", grade[i]);
if (i == 5 || i == 11)
{
printf("\n");
}
}
return 0;
}
结果出来为什么会有负数,只有第一个是正的