see declaration of 'i' 执行 cl.exe 时出错.
时间: 2024-02-28 13:55:23 浏览: 224
这个错误通常是由于 C 语言编译器不支持在 for 循环外部声明变量导致的。
在 C89 标准中,变量只能在函数的开头声明,而不能在 for 循环中声明。如果你使用的编译器支持 C99 标准,那么在 for 循环中声明变量就不会出现这个问题。
为了解决这个问题,你可以将变量的声明移动到函数开头,或者升级到支持 C99 标准的编译器。
下面是将变量声明移动到函数开头的代码示例:
```c
#include <stdio.h>
// 冒泡排序
void bubble_sort(float arr[], int n)
{
int i, j;
float temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 选择排序
void selection_sort(float arr[], int n)
{
int i, j, max;
float temp;
for (i = 0; i < n - 1; i++) {
max = i;
for (j = i + 1; j < n; j++) {
if (arr[j] > arr[max]) {
max = j;
}
}
if (max != i) {
temp = arr[i];
arr[i] = arr[max];
arr[max] = temp;
}
}
}
int main()
{
float arr[12];
int i, j;
printf("请输入12个浮点数:\n");
for (i = 0; i < 12; i++) {
scanf("%f", &arr[i]);
}
printf("原始数组:\n");
for (i = 0; i < 12; i++) {
printf("%.1f ", arr[i]);
}
printf("\n\n");
bubble_sort(arr, 12);
printf("冒泡排序后的数组:\n");
for (i = 0; i < 12; i++) {
printf("%.1f ", arr[i]);
}
printf("\n\n");
selection_sort(arr, 12);
printf("选择排序后的数组:\n");
for (i = 0; i < 12; i++) {
printf("%.1f ", arr[i]);
}
printf("\n\n");
return 0;
}
```
在这个程序中,我们将变量 i 和 j 的声明移动到了函数开头,在 for 循环中直接使用它们即可。
希望这个解决方案能够帮到你,如果你还有其他问题,请随时问我。