以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  谁能帮忙看看这段程序哪里有错?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=28127)


--  作者:greatmenddc
--  发布时间:3/4/2006 9:04:00 PM

--  谁能帮忙看看这段程序哪里有错?
楼主  我在做C++的一道习题时编了下面的程序,但运行时却死机了,恳请哪位大虾指点:
#include<string.h>
#include<iostream.h>
class STR{
    char s1[80],s2[80];
    char s3[160];
public:
    STR(char a[],char b[])
    { strcpy(s1,a);strcpy(s2,b);}
    void consort()
    { int i,j,n,p;
      char c;
      strcpy(s3,s1);
      strcpy(s3,s2);
      n=strlen(s3);
      for(i=0;i<n-1;i++)
      {  p=i;
         for(j=i+1;j<n;j++)
            if(s3[j]<s3[p]) p=j;
         if(p!=i)
         { c=s3[i];s3[i]=s3[p];s3[p]=c;}
      }
    }
    void show()
    {  cout<<s1<<endl;cout<<s2<<endl;cout<<s3<<endl;}
};

void main()
{  char a[80],b[80];
   cout<<"Please input s1,s2:";
   cin>>a;cin>>b;
   STR str(a,b);
   str.consort();
   str.show();
}

题目要求的运行结果应是:pear
            apple
            aaeelpppr



--  作者:elfstone
--  发布时间:3/5/2006 12:52:00 AM

--  
你的程序我越看越晕,我写了个算法,你参考。。。
#include "iostream"
#include "string"
using namespace std;
string s1,s2,s3;
int main()
{
    cin>>s1>>s2;
    s3=s1+s2;
    char ch;
    bool change=true;
    for(int i=s3.length()-1;i>0&&change;i--)
    {
        change=false;
        for(int j=0;j<i;j++)
             if(s3[j]>s3[j+1])
             {
                 ch=s3[j];
                 s3[j]=s3[j+1];
                 s3[j+1]=ch;
                 change=true;
             }
    }
    cout<<s1<<endl<<s2<<endl<<s3<<endl;   
    system("PAUSE");
    return 0;
}


--  作者:elfstone
--  发布时间:3/5/2006 12:55:00 AM

--  
一个基本的冒泡法排序就搞定了,对string类的运算是很灵活的。。。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms