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

高手请帮小弟我看看这个程序哪里错了

2012-02-05 
高手请帮我看看这个程序错哪了?#include stdio.h#define N 5void bubblesort(int [],int)void main(){i

高手请帮我看看这个程序错哪了?
#include <stdio.h>
#define N 5
void bubblesort(int [],int);
void main()
{
int a[N]={12,22,10,3,9};
//printf("input Array a[]:\n");
//for(int i=0;i<N;i++)
//scanf("%d ",a[i]);
printf("\nAfter sort......\n");
bubblesort(a,N);
}

void bubblesort(int a[],int n)
{
int i,j,temp;
for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
可以运行,可结构总是内存出错!我的目的是要达到排序的效果。

[解决办法]
for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}

当i=0;j<n-0=n j=n-1 ,j+1==n a[j+1]溢出
[解决办法]

C/C++ code
for(i=0;i<n;i++)for(j=0;j<n-i;j++)// j = i+1; j<n-i;j++if(a[j]<a[j+1])// a[i]<a[j]{temp=a[j];//a[j]=a[j+1];//a[j+1]=temp;// 冒泡排序你写错了。。}
[解决办法]
让我看了半天,还调试了好长时间,终于发现,你的错误居然。。。。。。

C/C++ code
#include <stdio.h>#define N 5void bubblesort(int [],int);void main(){    int a[N]={12,22,10,3,9};    // printf("input Array a[]:\n");    // for(int i=0;i<N;i++)    // scanf("%d ",a[i]);    printf("\nAfter sort......\n");    bubblesort(a,N);}void bubblesort(int a[],int n){    int i,j,temp;    for(i=0;i<n;i++)    {        for(j=0;j<n-1;j++)  //你原来的代码写成了for(j=0;j<n-i;j++)        {            if(a[j]<a[j+1])            {                temp=a[j];                a[j]=a[j+1];                a[j+1]=temp;            }        }    }    for(i=0;i<n;i++)    {        printf("%d ",a[i]);    }    printf("\n");} 

热点排行