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

关于函数的问题!谢谢

独孤小梦 发布于 2008-08-29 14:44, 745 次点击
大家先看下这个程序!


//冒泡法,排列10个数字!
#include<iostream.h>
main(void)
{
    int sz[10],xh,xh1,zh;                  //定义一系列变量
    cout<<"请输入10个数字,数字中间用空格分隔,或者使用回车分隔。\n";
    for(xh=0;xh<10;xh++)
        cin>>sz[xh];                      //输入数子
    for(xh=0;xh<10;xh++)
        for(xh1=0;xh1<10;xh1++)
        {
            if(sz[xh1]>sz[xh1+1])
            {
                zh=sz[xh1];
                sz[xh1]=sz[xh1+1];
                sz[xh1+1]=zh;
            }
        }                                 //以上为比较和换位置
        cout<<"比较以后的数,从小到大排列\n";
        for(xh=0;xh<10;xh++)
            cout<<sz[xh]<<"\t";          //输出所得数
}

在看下,下面的程序



#include<iostream.h>
int sz[10],xh,xh1,zh;                  //定义一系列全局变量
bj(void)
{
        for(xh=0;xh<10;xh++)
        for(xh1=0;xh1<10;xh1++)
        {
            if(sz[xh1]>sz[xh1+1])
            {
                zh=sz[xh1];
                sz[xh1]=sz[xh1+1];
                sz[xh1+1]=zh;
            }
        }                                 //以上为比较和换位置
}
main(void)
{
    cout<<"请输入10个数字,数字中间用空格分隔,或者使用回车分隔。\n";
    for(xh=0;xh<10;xh++)
        cin>>sz[xh];                      //输入数子
    bj();
        cout<<"比较以后的数,从小到大排列\n";
        for(xh=0;xh<10;xh++)
            cout<<sz[xh]<<"\t";          //输出所得数
}

为什么把这个比较的代码弄进一个函数,然后调用函数比较以后,输出的数并不是像上面一个程序输出的结果?请各位给看看,谢谢了!
2 回复
#2
fish_2008-08-29 15:08
for(xh1=0;xh1<10;xh1++)
        {
            if(sz[xh1]>sz[xh1+1])
            {
                zh=sz[xh1];
                sz[xh1]=sz[xh1+1];
                sz[xh1+1]=zh;
            }
        }

这个有点问题,不知道发现没有,当xh1=9时,xh1+1=10,这个就溢出啦!
http://hi.baidu.com/hanshuidandan/blog/item/090ce2d3056175d9a8ec9a4d.html
看看这里,看看对你有没有什么帮助!
#3
独孤小梦2008-08-29 15:23
哇,是啊!我先回家试下!谢谢了啊!
1