首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

排序,输入数据不能超过四个

2013-07-08 
排序,输入数据不能超过4个#include stdio.hvoid two_bubble_sort(int *,int n)void main(){int array[]

排序,输入数据不能超过4个


#include <stdio.h>
void two_bubble_sort(int *,int n);

void main()
{
int array[] = {0};
int i,n = 0;
printf("   **How many numbers do you want to input**\n");
scanf("%d",&n);
for(i = 0; i < n; i++)
{
printf("Input the NO.%d number: ",i + 1);
scanf("%d",&array[i]);
}

printf("   **The array before being sorted is** \narray = { ");
for(i = 0; i < n; i++){
printf("%d ",array[i]);
}

two_bubble_sort(array,n);

printf("}\n   **The array after being sorted is** \narray = { ");
for(i = 0; i < n; i++){
printf("%d ",array[i]);
}
printf("}\n");
}

void two_bubble_sort(int *array, int n)
{
int boundmin = 0;
int boundmax = n - 1; // i + 1 <= n - 1
int min,max,i;
int temp = 0;
while(boundmin < boundmax){
max = 0;
min = 0;
for(i = boundmin; i < boundmax; i++){
if(array[i] > array[i+1]){ 
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
max = i;
}
}

boundmax = max;

for(i = boundmax - 1; i > boundmin; i--){
if(array[i] < array[i+1]){
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
min = i;
}
}

boundmin = min;
}
}

[解决办法]
int array[] = {0};
array数组的大小仅仅是1,放2个以上的数据必定出错
[解决办法]
int array[255] = {};

改成这样,定义一个足够大的。或者用malloc()函数分配内存。
[解决办法]

#include <stdio.h>
void two_bubble_sort(int *,int n);

void main()
{
//int array[] = {0};
int i,n = 0;
printf("   **How many numbers do you want to input**\n");
scanf("%d",&n);
int *array = new int[n];//你的array的大小只有1。。会越界。。改为这样根据n动态new数组吧。。
for(i = 0; i < n; i++)
{
printf("Input the NO.%d number: ",i + 1);
scanf("%d",&array[i]);
}

printf("   **The array before being sorted is** \narray = { ");
for(i = 0; i < n; i++){
printf("%d ",array[i]);


}

two_bubble_sort(array,n);

printf("}\n   **The array after being sorted is** \narray = { ");
for(i = 0; i < n; i++){
printf("%d ",array[i]);
}
printf("}\n");
delete [] array;
}

void two_bubble_sort(int *array, int n)
{
int boundmin = 0;
int boundmax = n - 1; // i + 1 <= n - 1
int min,max,i;
int temp = 0;
while(boundmin < boundmax){
max = 0;
min = 0;
for(i = boundmin; i < boundmax; i++){
if(array[i] > array[i+1]){ 
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
max = i;
}
}

boundmax = max;

for(i = boundmax - 1; i > boundmin; i--){
if(array[i] < array[i+1]){
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
min = i;
}
}

boundmin = min;
}
}


[解决办法]
引用:
Quote: 引用:

int array[] = {0};
array数组的大小仅仅是1,放2个以上的数据必定出错

对哦,忘记给数组大小了!


真幸运,出错了

热点排行