问答详情
源自:6-12 综合练习

请问下大佬们,这个排列是哪里不对,为啥出来的结果还是乱序

#include <stdio.h>

int main()

{

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

    int sum=0,i,max,min,tamp;

    float ave;

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

    {

        sum=sum+score[i];

      

    }

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

    {

              

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

            {

                tamp=score[i+1];

                score[i+1]=score[i];

                score[i]=tamp;

            }

       

    }

    ave = (float)sum/10;

    max=score[0];

    min=score[9];

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

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

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

    printf("平均分为:%f\n",ave);

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

    {

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

    }

    

    return 0;

}


提问者:慕码人4222159 2020-11-06 08:50

个回答

  • 只要简单
    2020-11-15 15:42:44

    你没有用冒泡排序,可以参考

  • 只要简单
    2020-11-15 15:42:03

    #include <stdio.h>int a(){	int score[10]={67,98,75,63,82,79,81,91,66,84};	int i, sum=0;	for(i=0;i<=9;i++)	{	sum+=score[i];	}	printf("总分为\t\t%d\n\n",sum); 	printf("平均分为\t%d\n\n",sum/10);	return 0; } int b(){	int score[10]={67,98,75,63,82,79,81,91,66,84};	int i,max=0,min=100;	for(i=0;i<9;i++)	{		if(max<score[i])		{		max= score[i];		}		if(min>score[i])		{			min=score[i];		}	}	printf("最大值为\t%d\n\n",max);	printf("最小值为\t%d\n\n",min);	return 0; }  int c() { 	int score[10]={67,98,75,63,82,79,81,91,66,84}; 	int i,j,k=0; 	for(j=0;j<9;j++) 	{ 		for(i=0;i<9-j;i++) 		if(score[i]>score[i+1]) 		{ 			k=score[i]; 			score[i]=score[i+1]; 			score[i+1]=k;		}	}	printf("排序为\t\t") ; 	for(i=0;i<10;i++) 	{ 		printf("%d\t",score[i]);	} }int main(){    a();    b();	c();}


  • 钦扬
    2020-11-06 10:38:01

    看一下前面的冒泡排序,排序的时候要嵌套两层,一层是计算排序次数,一层是比较大小。