#include
int main()
{ int i,j,t,n,k;
scanf("%d",&n);
int a[n];
for(k=0;k<n;k++)
{ scanf("%d",&a[n]);
}
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(a[j]>a[j+1])
{ t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
数组长度不能用变量,并且输入的那一块是&a[k],不是&a[n],代码修改如下,当然,有些编辑器是支持数组长度用变量的,你试试你的支持不,不支持的话就把数组长度改成一常量。
有帮助的话采纳一下哦!
#include<stdio.h>
int main()
{ int i,j,t,n,k;
scanf("%d",&n);
int a[n];
for(k=0;k<n;k++)
{
scanf("%d",&a[k]);
}
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(a[j]>a[j+1])
{ t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
int a[n];//里面不可以是变量,很简单的问题,语法问题
你可以宏定义n,例如:#define n 100;
//封装冒泡排序函数用法如下,参考
#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;
}
数组长度不能用变量n来表示只能用常量数字表示
写一个常量10再将n=10试试
int a[10]; n=10;
scanf("%d",&a[n])这里把n改为k 因为你循环是k在变化
scanf("%d", &a[k])