|
发表于 2023-11-19 12:28:29
|
显示全部楼层
问题在于第二个循环的终止条件应该是 i<10 而不是 i<9 。这是因为在内部循环中, j 的终止条件是 10-i-1 ,所以外部循环应该执行10次而不是9次,以确保所有的元素都被比较和交换。此外,应该在外部循环中使用 i 作为终止条件,而不是 9 。
下面是修改后的代码:
- #include <stdio.h>
- int main()
- {
- int i,j,temp,arr[10],position[10];
- for(i=0;i<10;i++)
- {
- scanf("%d", &arr[ i]);
- position[ i]=i+1;
- }
- for(i=0;i<10;i++)
- {
- for(j=0;j<10-i-1;j++)
- {
- if(arr[j]>arr[j+1])
- {
- temp=arr[j];
- arr[j]=arr[j+1];
- arr[j+1]=temp;
- temp=position[j];
- position[j]=position[j+1];
- position[j+1]=temp;
- }
- }
- }
- for(i=0;i<9;i++)
- {
- printf("%d ",arr[ i]);
- }
- printf("%d\n",arr[9]);
- for(i=0;i<9;i++)
- {
- printf("%d ",position[ i]);
- }
- printf("%d",position[9]);
- return 0;
- }
复制代码
这样修改后的代码将正确地对输入的10个整数进行排序,并输出排序后的结果以及每个元素在原序列中的位置。 |
|