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

一道题,大神帮忙看看哪不对

lowryfly 发布于 2013-01-27 18:33, 516 次点击
给定一个仅由x,y组成的字符串,你可以进行如下两个操作:

    操作一:找到两个相邻的字符,左边是x,右边是y,然后交换它们的位置。如果有多组这样的字符,选择最左边的一组进行操作。

    操作二:找到两个相邻的字符,左边是y右边是x,然后删除它们。如果有多组这样的字符,选择最左边一组进行操作。

    请写一个程序,按照如下步骤执行上面的两个操作:

    第一步:如果能执行第二步,那么就执行第二步。否则,输出经过操作得出的字符串。
   
    第二步:如果能执行操作一,执行操作一。如果不能执行操作一,执行操作二。如果没有操作可执行,进行第一步。

#include<iostream>
using namespace std;
bool k,d;
void step2();
void step1()
{
    char chars[10], m;
   
    for(int i=0;i<strlen(chars);i++)
    {
        if(chars[i]<chars[i+1])
        {
            m=chars[i];
            chars[i]=chars[i+1];
            chars[i+1]=m;
            k=1;
            break;   
        }
        else k=0;
    }
    if(k=1)step1();
    else step2();
}
void step2()
{
    char chars[10];
    for(int i=0;i<strlen(chars);i++)
    {
        if(chars[i]>chars[i+1])
        {
            for(int j=i;j<strlen(chars);j++)
            {
                chars[j]=chars[j+2];
                chars[j+1]=chars[j+3];
                chars[strlen(chars)-2]='\0';
            }
            d=1;
            break;   
        }
        else d=0;
    }
    if(d=1)
    {step2();}
    else
    {cout<<chars;}
}
main()
{
    char chars[10];
    cout<<"请输入:"<<endl;
    cin>>chars;
    step1();

}
2 回复
#2
张海锋2013-01-27 22:45
没有语言错误吧只是你的调用函数没有输出语句吧
#3
lowryfly2013-01-27 22:52
回复 2楼 张海锋
step2()里面有一个输出语句,step1()调用step2
1