在线编译器 C

#include <stdio.h> int main() { const int N = 10; int A [N],i,j,c; for (i=0;i<N;i++) {scanf("%d",&A[i]); } for (i=0;i<N-1;i++){ for (j=0;j<N-1-i;j++){ if (A[j]%10>A[j+1]%10){ c=A[j]; A[j]=A[j+1]; A[j+1]=c; } } for (i=0;i<N;i++){ printf("%d ",A[i]); } return 0; }
这段代码试图对数组按个位数字进行冒泡排序,但存在几个问题。

代码中,外层循环的变量 `i` 和内层循环后的打印循环也使用了 `i`,导致变量冲突。外层循环的 `i` 在第一次内层循环结束后,被打印循环的 `i` 覆盖,使得外层循环无法正常继续。

- 注意变量作用域:内层循环后的打印循环使用了与外层循环相同的变量名 `i`,这会破坏外层循环的控制。
- 检查循环结构:打印数组的循环应该放在所有排序完成之后,而不是在每次外层循环内部。