注册 登录
编程论坛 C++教室

冒泡排序中的错误

erdongwei 发布于 2012-03-17 14:42, 731 次点击
我新来的,哪位大哥能帮忙看看这个程序:
#include<stdio.h>
void bubblesort(int a[10]);
int main()
{
    int i,a[10];
    for(i=0;i<9;i++)
        scanf("%d",a[i]);
    bubblesort(a);
    for(i=1;i<=10;i++)
        printf("%d ",a[10-i]);
    printf("\n");
    return 0;
}

void bubblesort(int a[10])
{
    int i,j,m;
    for(i=0;i<9;i++){
        for(j=0;j<9-i;j++){
            if(a[j]>a[j+1]){
                m=a[j];
                a[j]=a[j+1];
                a[j+1]=m;
            }
            else ;
        }
    }
}
为什么在Vc++中编译时没有错,却不能运行呢?谢谢啦!
11 回复
#2
nicum2012-03-17 20:21
#include<stdio.h>
void bubblesort(int a[10]);//void bubblesort(int *);
int main()
{
    int i,a[10];
    for(i=0;i<9;i++)
        scanf("%d",a[i]);// scanf("%d",&a[i]);
    bubblesort(a);
    for(i=1;i<=10;i++)
        printf("%d ",a[10-i]);
    printf("\n");
    return 0;
}

void bubblesort(int a[10])//void bubblesort(int * a)
{
    int i,j,m;
    for(i=0;i<9;i++){
        for(j=0;j<9-i;j++){
            if(a[j]>a[j+1]){
                m=a[j];
                a[j]=a[j+1];
                a[j+1]=m;
            }
            else ;//这句可以不要
        }
    }
}
#3
erdongwei2012-03-17 21:58
这个我懂,但之前没有这个,也不能运行,
我就加上了这个,还是不能运行,编译时没报错啊
#4
shuijiashui2012-03-18 00:34
scanf("%d",a[i]);//=================&a[i]  
   
#5
erdongwei2012-03-18 12:43
对了!谢谢啦!
如果是字符型的数组,还需要&吗
#6
Invariably2012-03-18 13:46
#include<stdio.h>
void bubblesort(int a[10]);
int main()
{
    int i,a[10];
    printf("请输入10个整数:");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    bubblesort(a);
    for(i=1;i<=10;i++)
        printf("%d ",a[10-i]);
    printf("\n");
    return 0;
}

void bubblesort(int a[10])
{
    int i,j,m;
    for(i=0;i<9;i++){
        for(j=0;j<9-i;j++){
            if(a[j]>a[j+1]){
                m=a[j];
                a[j]=a[j+1];
                a[j+1]=m;
            }
            else ;
        }
    }
}
字符型的还是要用取地址符“&”的,可以去看看scanf()函数的详细用法;http://baike.baidu.com/view/1390039.htm
#7
lyswwr2012-03-18 14:12
只有数组名时候就不要取地址符号,因为数组就是表示地址:
#8
C_戴忠意2012-03-18 14:49
路过看看丶貌似冒泡排序不是很难丶
#9
erdongwei2012-03-18 23:00
懂了,谢谢各位!
#10
HUYOULIANGHH2012-03-19 10:17
兄弟,这不是冒泡排序法,这是直接插入排序法,好好看看书分清两者的差别,提醒一下第二个for循环有误,自己去想为什么吧!
#11
zhzhlmqm2012-03-19 16:45
程序代码:
#include<stdio.h>
void bubblesort(int a[10]);
int main()
{
    int i,a[10];
    for(i=0;i<=9;i++)
        scanf("%d",&a[i]);
    bubblesort(a);
    for(i=1;i<=10;i++)
        printf("%d ",a[10-i]);
    printf("\n");
    return 0;
}

void bubblesort(int a[10])
{
    int i,j,m;
    for(i=0;i<9;i++){
        for(j=0;j<9-i;j++){
            if(a[j]>a[j+1]){
                m=a[j];
                a[j]=a[j+1];
                a[j+1]=m;
            }
            else ;
        }
    }
}
#12
erdongwei2012-03-22 23:37
这是冒泡
第二个for循环有误?请指出,兄弟我还真看不出
1