我想请教一下大家 为什么程序不报错但是得不到我想要的结果,是我算法出问题了,还是遗漏了什么啊?最后输入十个数,就数全消失了🤣
非常感谢大家!
for(i=0;i<10;i++)
scanf("%d",&a[i]);
数组大小是10,下标只能是0到9。整型输入,要加&取地址
另外你双重循环的循环变量都用j,怎么能行呢?
再说你这代码连数组元素交换的代码都没有,怎么可能实现排序啊?
网上找个选择排序的例子,对比一下自己的代码吧
前边加个& scanf("%d",&a[i])
根据问题描述,你正在尝试使用选择排序算法对十个整数进行排序。选择排序是一种简单直观的排序算法,其基本思想是每次从待排序的元素中选择最小(或最大)的元素,放到已排序的序列的末尾。
然而,你提到程序没有报错,但没有得到期望的结果,并且输入的十个数后所有数字都消失了。这可能是因为你在实现选择排序算法时遗漏了一些重要的步骤。
以下是一个使用选择排序算法对十个整数进行排序的具体解决方案:
首先,创建一个长度为十的整数数组,并通过键盘输入十个整数。然后,遍历数组中的元素,找到剩余元素中的最小值,并将其与当前位置的元素交换。重复这个过程直到整个数组排序完成。
#include <stdio.h>
void selectionSort(int arr[], int n) {
int i, j, minIndex, temp;
for (i = 0; i < n - 1; i++) {
minIndex = i; // 初始化最小值索引为当前位置
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j; // 找到更小的值,更新最小值索引
}
}
// 将最小值与当前位置的元素交换
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
int main() {
int arr[10];
int i;
printf("请输入十个整数:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
selectionSort(arr, 10);
printf("排序后的结果为:\n");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}
通过以上代码,你可以使用选择排序算法对输入的十个整数进行排序,并将结果输出。希望能解决你的问题!如果有任何疑问,请随时提问。