问题标题: 酷町堂:2868怎么错了?写作业结束后自动揭帖

0
0
已解决
吴庞茂旭
吴庞茂旭
资深光能
资深光能

题目:2868 字符格式转换2

给出一个字符串,全部由数字,字母,’#‘和’^ ‘组成。请将字符串中’#‘后面的一个小写字母变为大写字母,并且删除这个’#’;将’^ ‘后面的一个大写字母变为小写字母,并且删除这个’^ ‘。如果’#‘和’^ ‘后面的字符不满足这些条件,则只删除’#‘或’^’。输出最后字符串的结果。

输入描述 Input Description 一个字符串,由数字,字母,’#‘和’^'组成。

输出描述 Output Description 按要求转化后的字符串

样例输入 Sample Input #a#b^A^B#123^123

样例输出 Sample Output ABab123123

WA的代码:

//Coding
#pragma GCC optimize(2)
#include <iostream>
#include <string>
using namespace std;
void make(string &s)
{
    for(int i=s.size();i>=0;i--)
    {
        if(s[i]=='#')//先处理#
        {
            if(s[i+1]>='a'&&s[i+1]<='z')s[i+1]-=32;
            s.erase(i,1);	
        } 
        if(s[i]=='^')
        {
            if(s[i+1]>='A'&&s[i+1]<='Z')s[i+1]+=32;
            s.erase(i,1);
        }
    }
}
int main()
{
    string s;
    cin>>s;
    make(s);
    cout<<s;
    return 0;
}

求助龖荖!

吴庞茂旭在2020-08-20 15:04:18追加了内容

s


0
已采纳
郑金顺
郑金顺
中级光能
中级光能

#include <iostream>

#include <string>

using namespace std;

int main()

{

string s;

cin >> s;

for(int i=s.size()-1; i>=1; i--) {

if(s[i]=='#') {

if(s[i+1]>='a'&&s[i+1]<='z')

s[i+1]-=32;

s.erase(i,1);

}

if(s[i]=='^') {

if(s[i+1]>='A'&&s[i+1]<='Z')

s[i+1]+=32;

s.erase(i,1);

}

}

cout << s;  

return 0;

}

20分

1
董宇昊
董宇昊
初级启示者
初级启示者

发布整段代码,举报举报

0
吴庞茂旭
吴庞茂旭
资深光能
资深光能

求助龖荖!求助龖荖!求助龖荖!

0
0
0
郑金顺
郑金顺
中级光能
中级光能

这是我的代码

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    string a;
    cin>>a;
    int l=a.size();
    bool f=0;
    for(int i=0;i<l;i++)
    {
        if(a[i]=='#')
        {
            f=1;
            continue; 
        }
        if(a[i]=='^')
        {
            f=2;
            continue;
        }
        if(a[i]!='#'&&f==1&&a[i]!='^')
        {
            if(a[i]>='a'&&a[i]<='z')
                a[i]-=32; 
        }
        if(a[i]!='#'&&f==2&&a[i]!='^')
        {
            if(a[i]>='A'&&a[i]<='Z')
                a[i]+=32;
        }
        cout<<a[i];
        f=0; 
    }
    return 0;
} 

这是0分代码

0
郑金顺
郑金顺
中级光能
中级光能

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s;
    cin >> s;
    for(int i=1; i<s.size(); i++) {
            if(s[i]>='a'&&s[i]<='z'&&s[i-1]=='#')  
                s[i]-=32;  
            if(s[i]>='A'&&s[i]<='Z'&&s[i-1]=='^')  
                s[i]+=32;  
    }
    for(int i=s.size()-1;i>=0;i--){
        if(s[i]=='#'||s[i]=='^') s.erase(i,1);
    }
    cout << s;    
    return 0;
}

AC

我要回答