为了账号安全,请及时绑定邮箱和手机立即绑定

关于降序排列的!求助

#include <stdio.h>

int main()

{

    int score[10]={67,98,75,63,82,79,81,91,66,84};

    

    //总分

    int sum=0;

    int i;

    for(i=0;i<10;i++)

    {

        sum=sum+score[i];

    }

    printf("总分%d\n\n",sum);

    

    //最高分

    int max=0;

    int j;

    for(j=0;j<9;j++)

    {

        if(max<score[j])

        {max=score[j];}

    }

    printf("最高分%d\n\n",max);

    

    //最低分

    int min=200;

    int q;

    for(q=0;q<9;q++)

    {

        if(min>score[q])

        {min=score[q];}

    }

    printf("最低分%d\n\n",min);

    

    //平均分

    double avg=sum/10;

    printf("平均分%f\n\n",avg);

    

    //考试成绩降序排列

    int temp;

    int m,n;

    printf("#####考试降序排列#####\n\n");

    for(m=0;m<9;m++)

    if(score[m]<score[m+1])

    {

        temp=score[m];

        score[m]=score[m+1];

        score[m+1]=temp;

    }

    for(n=0;n<10;n++)

    printf("%d ",score[n]);

    

    

    

    

    return 0;

}

--------------------------------------------------

最后降序排列这里为什么返回的值是未排序的?是全局变量什么的原因吗?怎么修改?

正在回答

1 回答

其实这个结合指针跟好的跟你解释,但是现在没学到指针。

for(m=0;m<9;m++)

    if(score[m]<score[m+1])

    {

        temp=score[m];

        score[m]=score[m+1];

        score[m+1]=temp;

    }

你把这段代码外面再加上一个循环,就是

    for(m=10-2;m>=0;m--)
	{
		for(n=0;n<=m;n++)
		{
			if(score[n]<score[n+1])
			{
				int temp;
				temp = score[n];
				score[n] = score[n+1]; 
				score[n+1]=temp;                  
			}                 
		}                   
	}

这样写就行了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926210    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

关于降序排列的!求助

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信