| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3003 人关注过本帖
标题:求各位帮帮忙。。运行有错~数组首尾依次交换
只看楼主 加入收藏
ccccmeiyi
Rank: 1
等 级:新手上路
帖 子:14
专家分:7
注 册:2016-3-3
结帖率:60%
收藏
已结贴  问题点数:10 回复次数:7 
求各位帮帮忙。。运行有错~数组首尾依次交换
#include<iostream>
using namespace std;
int main()
{
    int a[100],i,j,temp,n;
    i=0;
    cin>>n;
    j=n-i-1;
    for(i=0;i<n;i++)
    { cin>>a[i];}
    for(i=0;i>=0,j<n;i++,j--)
    {
        if(i<=j)
        {
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
    }
    for(i=0;i<n;i++)
    {
        cout<<a[i]<<endl;
    }
    return 0;
}
2016-03-09 20:33
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
收藏
得分:3 
#include<iostream>
using namespace std;
int main()
{
    int a[100],
        i,
        j,
        temp,
        n;  //数组大小
    i=0;
    cin>>n;
    j=n-i-1;   //j指向数组末尾
    for(i=0;i<n;i++)
    { cin>>a[i];}
    /*
        修改的这里:
            i>0 j<n 的条件,i从0开始往上长, j从n-1开始往下降,所以永远都不会停止
            陷入了死循环
            改成i<j就好了
    */
    for(i=0;i<j;i++,j--)            
    {
        //交换a[i]与 a[j]
        if(i<=j)
        {
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
    }
    for(i=0;i<n;i++)
    {
        cout<<a[i]<<endl;
    }
    return 0;
}

我走向的将是机械、电子、编程的集成之路。
2016-03-09 20:48
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
收藏
得分:3 
#include<iostream>
using namespace std;
int main()
{
    int a[100],
        i,
        j,
        temp,
        n;  //数组大小
    i=0;
    cin>>n;
    j=n-i-1;   //j指向数组末尾
    for(i=0;i<n;i++)
    { cin>>a[i];}
    for(i=0;i>=0,j<n;i++,j--)            
    {
        //交换a[i]与 a[j]
        if(i<=j)
        {
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
        /*
            突然发现,你是不是想修改这里
        */
        else break;
    }
    for(i=0;i<n;i++)
    {
        cout<<a[i]<<endl;
    }
    return 0;
}

我走向的将是机械、电子、编程的集成之路。
2016-03-09 20:50
御坂
Rank: 1
等 级:新手上路
帖 子:1
专家分:1
注 册:2016-3-9
收藏
得分:1 
回复 楼主 ccccmeiyi
int main()
{
    const int count = 8;
    int test[count] = { 0 ,123,12,2,1251,2,213,12};
    int temp = 0;
    for (int i = 0; i < count/2; i++)
    {
        temp = test[i];
        test[i] = test[count - 1 - i];
        test[count - 1 - i] = temp;
        /*
                不用temp的写法
        test[i] += test[count - 1 - i];
        test[count - 1 - i] = test[i] - test[count - 1 - i];
        test[i] -= test[count - 1 - i];
                */
    }
    for (int i = 0; i < count; i++)cout << test[i] << endl;
}
2016-03-09 21:11
ccccmeiyi
Rank: 1
等 级:新手上路
帖 子:14
专家分:7
注 册:2016-3-3
收藏
得分:0 
回复 2楼 civilherui
谢谢啦   我总是陷入死循环。请教下这个程序算法复杂度是多少啦?

我很菜,但我不放弃。
2016-03-09 21:25
ccccmeiyi
Rank: 1
等 级:新手上路
帖 子:14
专家分:7
注 册:2016-3-3
收藏
得分:0 
回复 3楼 civilherui
嗯。。非常感谢

我很菜,但我不放弃。
2016-03-09 21:28
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
收藏
得分:1 
回复 5楼 ccccmeiyi
o(n),都没有双层循环的

我走向的将是机械、电子、编程的集成之路。
2016-03-09 22:21
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:2 
算法错误别人已经指出来了,我说一下更重要的“代码规范”

程序代码:
#include <iostream>
using namespace std;

int main( void )
{
    // 获得数组长度
    size_t n;
    cin >> n;
    if( !cin || n>100 )
        return 1;

    // 获得数组内容
    int a[100];
    for( size_t i=0; i!=n; ++i )
        cin >> a[i];

    // 反序
    for( size_t i=0; i!=n/2; ++i )
    {
        int temp = a[i];
        a[i] = a[n-i-1];
        a[n-i-1] = temp;
    }

    // 输出
    for( size_t i=0; i!=n; ++i )
        cout << a[i] << '\n';
    cout << flush;

    return 0;
}

2016-03-10 09:26
快速回复:求各位帮帮忙。。运行有错~数组首尾依次交换
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028086 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved