这个代码稀巴烂啊,根本就是错的
第一个循环结束后,a[0]已经是足底啊只了
可第二个循环的max2初始值却是a[0],后面怎么可能还有比它大的呢?应该是max2=a[1]啊
而且,循环怎么能到i<=n呢?n个整数的最大下标是n-1啊。
所以这两处都写错了,改过来以后才是循环n-1和n-2次
#include<stdio.h>
//冒泡排序的函数
void bubbleSort(int arr[],int n){
//用 for 循环,循环比较排序
int i,j;
int 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 main(){
printf("请输入数组的元素个数:");
int n;
scanf("%d",&n);
printf("请输入数组的%d个元素:",n);
int arr[n];
int i;
for(i=0;i<=n;i++){//循环输入
if(i<n){
scanf("%d",&arr[i]);
}
else{//输入第n个数结束循环
break;
}
}
bubbleSort(arr,n);//默认是地址传递
printf("\n排序后:\n");
int j;
for(j=0;j<n;j++){
printf(" %d",arr[j]);
}
}