关于降序排列的!求助

来源:-

_Gin

2015-05-06 20:30

#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回答

  • 康振宁
    2015-05-07 11:08:50

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

    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;                  
    			}                 
    		}                   
    	}

    这样写就行了

C语言入门

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

926210 学习 · 20797 问题

查看课程

相似问题