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

小白求教,这个降序怎么弄呀 顺便帮我检查一下这些能正确回答问题不

#include <stdio.h>

int main()

{

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

   //总分与平均分

    {

        int sum=0;

        int i=0;

        while(i<10)

        {

            sum=sum+score[i];

            i++;

        }

        printf("总分是%d分,",sum);

        printf("平均分是%d分,",sum/10);

    }

    //最高分

    {

        int max;

        int i;

        max=score[0];

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

        {   

            if(score[i]>max)

            max=score[i];

        }

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

    }

    //最低分

    {

        int min;

        int i;

        min=score[0];

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

        {

            if(min>score[i])

            min=score[i];

        }

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

    }

    //考试成绩降序排列

    {

        

    }

}


正在回答

7 回答

  //考试成绩降序排列    

    for(int i=9;i>=0;i--){//将数组降序排列
        for(int j=0;j<i;j++){
            if(score[j+1]>score[j]){//如果后一个数比签一个数大,那么交换位置;
                int temp;
                temp=score[j+1];
                score[j+1]=score[j];
                score[j]=temp;
                }
            }
        }

for(int m=0;m<10;m++){//将排序的数组循环遍历
  printf("%d,",score[m]);
 }


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

http://img1.sycdn.imooc.com//54a287450001128305200600.jpg

把6-5数组应用示例中的">"改成"<"就可以了

int mix;

    

    for(i=8; i>=0; i--)

    {

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

        {

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

            {

                mix = score[c];

                score[c] = score[c+1];

                score[c+1] = mix;

            }

        }

    }

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

    {

        if(i != 9)   

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

        else

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

    }


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

你把每个位置和其他所有位置进行对比就可以

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

void order(int score[])

{

int i, j;

int temp;

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

{

for (j = 9; j>i; j--)

{

if( score[j]>score[j - 1])

{

temp = score[j];

score[j] = score[j - 1];

score[j - 1] = temp;

}

}

}

}


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

559c

逆向冒泡排序
2018-08-15 回复 有任何疑惑可以回复我~

#include <stdio.h>

int main()

{

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

   //总分与平均分

    {

        int sum=0;

        int i=0;

        while(i<10)

        {

            sum=sum+score[i];

            i++;

        }

        printf("总分是%d分,",sum);

        printf("平均分是%d分,",sum/10);

    }


    //最高分

    {

        int max;

        int i;

        max=score[0];

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

        {   

            if(score[i]>max)

            max=score[i];

        }

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

    }


    //最低分

    {

        int min;

        int i;

        min=score[0];

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

        {

            if(min>score[i])

            min=score[i];

        }

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

    }

    //考试成绩降序排列

    {

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

       {

        for(int j=i;j<10;j++)

{

   if(score[i]<score[j])

   {

    score[i]=score[j];

   }

}    

   }

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

{

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

}

    }

}



0 回复 有任何疑惑可以回复我~
#include <stdio.h>int main(){   int score[10]={67,98,75,63,82,79,81,91,66,84};   //总分与平均分    {        int sum=0;        int i=0;        while(i<10)        {            sum=sum+score[i];            i++;        }        printf("总分是%d分,",sum);        printf("平均分是%d分,",sum/10);    }    //最高分    {        int max;        int i;        max=score[0];    	for(i=0;i<10;i++)        {               if(score[i]>max)            max=score[i];        }        printf("最高分是%d分,",max);    }    //最低分    {        int min;        int i;        min=score[0];        for(i=0;i<10;i++)        {            if(min>score[i])            min=score[i];        }        printf("最低分是%d分,",min);    }    //考试成绩降序排列    {       for(int i=0;i<10;i++)       {       		for(int j=i;j<10;j++)			{			   if(score[i]<score[j])			   {			   		score[i]=score[j];			   }			}	   	   }				for(int i=0;i<10;i++)		{			printf("%d\n",score[i]);		}    }}


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

可以再声明一个长度为10的int型数组

int a[10]={0};

然后每次找出 score[] 中的最大值

找出一次就将最大值赋给 a[],并把score中那个最大值赋为 -1

这样找10次就可以形成新的降序排列数组 a[]

{

 int i,j,h=0,max=0;/*i,j是用于循环,h用于记录score[]数组最大值的下标*/

    int a[10]={0};

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

    {

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

        {

                if(max<score[j])

                {

                    max=p[j];

                    h=j;//最大值的下标

                }                        

        }

        score[h]=-1;//将当前最大值赋为-1,保证下次循环找到次大值

        a[k]=max;

        k++;

        max=0;

    }

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

        printf("%d ",a[i]);

}

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

举报

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

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

进入课程

小白求教,这个降序怎么弄呀 顺便帮我检查一下这些能正确回答问题不

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