| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 711 人关注过本帖
标题:求人指点,自学c++难啊
只看楼主 加入收藏
zr1234561555
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-7-17
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:9 
求人指点,自学c++难啊
为5个国家名字排顺序,我自己写了个,怎么运行时有时是对的,有时是错的
#include <iostream.h>
#include <string.h>
#define M 5
#define N 20
void main()
{
    char name[M][N]={'\0'},t[M][N]={'\0'};
    int i,j,p,b,x;
    for (i=0;i<=4;i++)
    {
        cout<<"请输入一个国家的名字";
        cin>>name[i];
    }
    for (j=0;j<=3;j++)
    {
        for (p=j+1;p<=4;p++)
        {
            if (name[j][0]>=name[p][0])
            {
                for (b=0;b<N;b++)
                {
                    t[p][b]=name[j][b];
                    t[j][b]=name[p][b];
                }
            }
        }
    }
    for (x=0;x<=4;x++)
    {
        cout<<"排好序的国家名字为"<<x+1<<":"<<t[x]<<endl;
    }
}
搜索更多相关主题的帖子: 路人帮忙看看问题在哪 
2009-07-22 16:15
zhangwanzhou
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-7-22
收藏
得分:0 
我编译都不能通过
名空间不需要写 ?
2009-07-22 16:32
ET_bug
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:黑侠
帖 子:89
专家分:602
注 册:2009-7-21
收藏
得分:100 
LZ你的是什么排序算法呀。。好像不能达到完全排序的目的吧
我改了下,但不知为何会自动退出,只有加个断点才能看到排序结果。。。
#include <iostream.h>
#include <string>
using namespace std;
#define M 5
void main()
{
    string name[M];
    int i,j,p,x;
    for (i=0;i<=4;i++)
    {
        cout<<"请输入一个国家的名字:";
        cin>>name[i];
    }

    for (j=0;j<=3;j++)
    {
        for (p=j+1;p<=4;p++)
        {
    if (name[j]>=name[p])
            {
        name[j].swap(name[p]);//交换字符串
            }
        }
    }
    for (x=0;x<=4;x++)
    {
        cout<<"排好序的国家名字为"<<x+1<<":"<<name[x]<<endl;
    }

}

编程之路无止境!
可是小子才入门!
2009-07-23 14:06
ET_bug
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:黑侠
帖 子:89
专家分:602
注 册:2009-7-21
收藏
得分:0 
结果如下:
请输入一个国家的名字:ser
请输入一个国家的名字:sxe
请输入一个国家的名字:yryr
请输入一个国家的名字:huu
请输入一个国家的名字:csa
排好序的国家名字为1:csa
排好序的国家名字为2:huu
排好序的国家名字为3:ser
排好序的国家名字为4:sxe
排好序的国家名字为5:yryr

编程之路无止境!
可是小子才入门!
2009-07-23 14:08
金多虾
Rank: 2
等 级:论坛游民
帖 子:153
专家分:99
注 册:2009-6-9
收藏
得分:0 
( ^_^ )不错嘛
2009-08-02 08:51
sadan20111
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2009-8-1
收藏
得分:0 
#include<iostream>
#include<string>
using namespace std;

int main()
{
string coun[5];
int i,p;
for(i=0;i<=4;i++)
{cout<<"请输入国家名称"<<endl;
cin>>coun[i];
}
for(p=0;p<=3;p++)
{
    for(i=p+1;i<=4;i++)
    {
    if(coun[p]<=coun[i])
    {
    coun[p].swap(coun[i]);
    }
    }
}
for(i=0;i<=4;i++)
{
    cout<<" 第"<<i+1<<"位国家为"<<coun[i]<<endl;
}
return 0;

}
和3楼的想法一样,只是好像我不会自动退出...用string类型设字符,比较变得简单一点
2009-08-02 22:20
sadan20111
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2009-8-1
收藏
得分:0 
还有排序和3楼是相反的,应该是字母靠后的比较大把,string类型设字符比较字符是按照字典顺序排的,对不住,应该将if(coun[p]<=coun[i])
改为if(coun[p]>=coun[i])
2009-08-02 22:23
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:0 
楼主,你只对每个国家进行了按第一个字母排序,如果输入中含有第一个字母相同的,你的程序就只会交换他们的位置,不管他们谁“大”。
2009-08-03 16:01
zwei_0
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2009-3-19
收藏
得分:0 
领教了
2009-08-04 10:27
Kiu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:107
注 册:2009-7-31
收藏
得分:0 
以下是引用ET_bug在2009-7-23 14:06的发言:

LZ你的是什么排序算法呀。。好像不能达到完全排序的目的吧
我改了下,但不知为何会自动退出,只有加个断点才能看到排序结果。。。
#include <iostream.h>
#include <string>
using namespace std;
#define M 5
 ...

请问下   这位大虾    你所写的代码可以运行吗?    你有试过吗?
2009-08-04 15:08
快速回复:求人指点,自学c++难啊
数据加载中...
 
   



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

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