//使用冒泡排序的方法,对输入的n个数进行从小到大排序
#include <stdio.h>
int main()
{
int n, i,
scanf("%d", &n);
int a[n];
for (i=0; i<n; i++)
scanf("%d", &a[i]);
int j, k, swap;
for (j=0; j<n-1; j++)
{
for (k=0; k<n-1-i; k++) //判断是否交换的次数随轮次的增加而减少(因为上一轮已经把大的排后面了)
{
if (a[k]>a[k+1])
{
swap=a[k];
a[k]=a[k+1];
a[k+1]=swap;
}
}
}
for(i=0; i<n; i++)
printf("%d ", a[i]);
return 0;
}
/*报错:
c:5:11: error: expected declaration specifiers or '...' before string constant
scanf("%d", &n);
^~~~
c:5:17: error: expected declaration specifiers or '...' before '&' token
scanf("%d", &n);
^
*/
请问以上报错是什么意思,怎么修改代码
int a[n];//不能这样动态定义的
//使用函数调用方案,参考
#include<stdio.h>
void bubble_sort(int arr[],int sz)//参数类型解释②
{
for (int i = 0; i < sz-1; i++)
{
for (int j = 0; j <sz-1-i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main()
{
int arr[] = { 9,8,7,4,5,6,1,2,3,0 };
int sz = sizeof(arr) / sizeof(arr[0]);//变量sz位置及计算注意事项①
bubble_sort(arr,sz);//参数类型解释②
for (int i = 0; i < 10; i++)//输出交换后的数组
{
printf("%d ", arr[i]);
}
return 0;
}
用的什么编辑器?数组长度不能用变量,当然有些编辑器用变量也行,建议给足够长度,第一行int n,i;后面是分号,不是逗号。有帮助的话采纳一下哦!
#include <stdio.h>
int main()
{
int n;
printf("请输入数组里值的个数(1~100):"); //先输入要排序的数字的个数
scanf("%d",&n);
int i;
int arr[100] = {0};
printf("请输入数组:"); //输入要排序的任意值
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]); //向数组输入值
}
for ( i = 0; i < n - 1; i++) //进行n-1次排序
{
for (int j = 0; j < n - 1 - i; j++) //相邻的数两两进行比较,每排序一次,最后一个数固定
{
if (arr[j] > arr[j + 1])//j为下标,前一个数大于后一个,则交换这两个数
{
int t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
printf("排序后为:");
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
在这个编译器里 数组常数不能以变量n来指定,必须得是常量数字才能表示数组长度