C++问题。这个题是这样的:输入10个数字,按各个位上的和从小到大排序,如果相同,则按数字从小到大

2025-04-06 18:23:20
推荐回答(2个)
回答1:

你想要的结果是什么

举个例,输入10,9,8,7,6,5,4,3,2,1

你要他输出什么


不知道这个是不是你想要的结果


我想其中一个原因是你没有交换至比如str中第10个元素师最小的,那i=0是会把它赋给str[0],i=1是会把它赋给str[1]........结果是str中所有元素都是同一个值,而且是最小值

解决办法是把两个值交换再输出


还有一个是你整个程序都有些问题,想想当j=9是str[j+1]是str[10],而str数组只有十个元素

还有其他很多问题不一一说了,下面是我改的程序,其他不改,只改main函数,我是非得在你的基础上改,而且一些问题还没改过来,要是重写的话可以写的更好,但没时间给你写了,自己琢磨吧


int str[10];

int temp;

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

 {

scanf("%d",&str[i]);


 }


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

  {

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

 {

 temp=str[i];

 str[i]=cmp(str[i],str[j]);

 if(str[i]!=temp)

 str[j]=temp;

 }

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

  }

  printf("%d ",str[9]);   

回答2:

回去看下数据结构 排序一章阿
插入排序,归并排序,快速排序...