|
发表于 2023-5-16 22:07:41
|
显示全部楼层
你的代码中有几个问题:
1. 在第7行,你将数组 a 的第 11 个元素赋值为输入的 x ,但是数组 a 的大小只有 10,因此这样会导致数组越界,出现不可预期的错误。
2. 在第8行,你将 k 赋值为 a[0] ,但是这个语句没有任何作用,因为在后面的循环中, k 的值会被重新赋值。
3. 在第11行,你没有给变量 index 赋初值,这样会导致程序出现不可预期的错误。
4. 在第12行,你应该使用大于号( > )而不是小于号( < ),否则会导致程序出现错误。
5. 在第15-17行,你交换了 a[k] 和 a[index] 的值,但是实际上应该交换 a[k] 和 a[ i] 的值。
下面是修改后的代码:
- #include <stdio.h>
- int main() {
- int a[10] = {1, 4, 6, 9, 13, 16, 19, 28, 40, 100};
- int i, k, index = 0, temp, x;
- scanf("%d", &x);
- a[9] = x;
- for (k = 0; k < 10; k++) {
- if (a[k] < a[index]) {
- index = k;
- }
- }
- temp = a[index];
- a[index] = a[0];
- a[0] = temp;
- for (i = 0; i < 10; i++) {
- printf("%4d", a[ i]);
- }
- return 0;
- }
复制代码
这个程序的功能是:输入一个整数 x ,将其插入到已经排好序的数组 a 中,并且输出排好序后的数组。 |
|