#include <stdio.h> void W(int a[10]) { int i, j, t; for(i = 0; i < 10; i++) for(j = 0; j < 9; j++) for(i = 0; i < 9 - j; i++) if(a[i] > a[i + 1]) { t = a[i]; a[i] = a[i + 1]; a[i + 1] = t; } } int main() { int i; int a[10]; printf("请输入10个数:"); for(i = 0; i < 10; i++) scanf("%d", &a[i]); W(a); printf("排序后的结果为:"); for(i = 0; i < 10; i++) printf("%d ", a[i]); return 0; }改正这个代码
时间: 2024-01-23 18:04:25 浏览: 54
#include "stdio.h" /* 输入输出函数的头文件 */
这段代码存在两个问题:
1. 内层循环的变量 i 与外层循环的变量 i 重名,会导致内层循环无法正常执行,需要将内层循环的变量名修改为其他名称;
2. 内层循环条件不正确,应该是 j < 9 - i,而不是 i < 9 - j。
修改后的代码如下:
```
#include <stdio.h>
void W(int a[10]) {
int i, j, t;
for(i = 0; i < 10; i++)
for(j = 0; j < 9 - i; j++)
if(a[j] > a[j + 1]) {
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
int main() {
int i;
int a[10];
printf("请输入10个数:");
for(i = 0; i < 10; i++)
scanf("%d", &a[i]);
W(a);
printf("排序后的结果为:");
for(i = 0; i < 10; i++)
printf("%d ", a[i]);
return 0;
}
```
阅读全文