weixin_慕函数0528290
2022-01-29 20:54
#include <stdio.h>
int getsum(int score[10])
{
int sum = 0;
int i;
for (i = 0; i < 10; i++)
{
sum = sum + score[i];
if (i == 9)
{
printf("总分为 % d\n", sum);
}
}
return 0;
}
int getmax(int score[10])
{
int max,i;
int index;
max = score[0];
index = 0;
for (i = 0; i <10; i++)
{
if (score[i] > max)
{
max = score[i];
index == i;
printf("最高分为%d\n", max);
}
}
return 0;
}
int getmin(int score[10])
{
int j;
int min;
min = score[0];
for (j = 0; j < 10; j++)
{
if (score[j] < min)
{
min = score[j];
printf("最低分为%d\n", min);
}
}
return 0;
}
float average(int score[10])
{
float sum = 0;
float aver;
int k;
for (k = 0; k < 10; k++)
{
sum = sum + score[k];
if (k == 9)
{
aver = sum / 10;
printf("平均分为%f\n", aver);
}
}
return 0;
}
int down(int score[10])
{
int n, t;
for (n = 1; n < 10; n++)
{
for (t = 0; t <9-n; t++)
{
if (score[t+1] > score[t])
{
int temp;
temp = score[t+1];
score[t+1] = score[t];
score[t] = temp;
}
}
}
printf("考试成绩降序如下: \n");
for (n = 0; n < 10; n++)
{
printf("%d ", score[n]);
}
return 0;
}
int main()
{
int score[10] = { 67,98,75,63,82,79,81,91,66,84 };
getsum(score);
getmax(score);
getmin(score);
average(score);
down(score);
return 0;
}
排序结果前8个都正常,最后一个数却是84,试了几次都不知道毛病出在哪里
t<=9-n;
缺了“=”
for (t = 0; t <10-n; t++)
这样吧应该
这个排序部分题目要求从大到小排,就只需要把从小到大排的程序中改一个地方就可以了,就把arr[j]>arr[j+1]中的">"改成"<"就可以了,其他的都不用变的
for(i=N-1-1;i>=0;i--)//冒泡排序
{
for(j=0;j<=i;j++)//前一个与后一个比较,直到最后
{
if(score[j]<score[j+1])//前一个小于后一个则进行交换
{
temp=score[j];
score[j]=score[j+1];
score[j+1]=temp;
}
}
}
for (n = 1; n < 10; n++) n要从零开始,不然会让判断少一次
C语言入门
926217 学习 · 20797 问题
相似问题