问题标题: 酷町堂:2853

0
0
已解决
陈曦
陈曦
资深天翼
资深天翼

题目传送门

#include<iostream>
#include<string> 
#include<cmath>
using namespace std;
string bh(string s){
    for(int i=0;i<s.size();i++){
        if(int(s[i])%2==0){
            if(s[i]>='a'&&s[i]<='z'){
                s[i]-=32;
            }
        }
    }
    return s;
}
char sz(char a){
    if(a>='0'&&a<='9') 
        return true;
    return false;
}
string s,a,b,k;
int cnt=0,cnt1=0,cc;
int main(){

    getline(cin,s);
    s=bh(s);        //把 ASCII 码值为偶数的小写字母转大写 
    for(int i=0;i<s.size();i++){
        if(s[i]>='0'&&s[i]<='9'){ 
            a[++cnt]=s[i];
        }
    }
    for(int i=s.size()-1;i>=1;i--){
        if(s[i]>='0'&&s[i]<='9'){
            b[++cnt1]=s[i];
        }
    }
//  for(int i=1;i<=cnt;i++) cout<<a[i]<<" ";
//  cout<<endl;
//  for(int i=1;i<=cnt1;i++) cout<<b[i]<<" ";

    for(int i=1;i<=cnt/2;i++){
        swap(a[i],b[i]);
    }
//  for(int i=0;i<s.size();i++){
//      if(sz(s[i])){
//          cc++;
//          if(cc<=cnt/2){
//              s[i]=b[i];
//          }
//          else{
//              s[i]=a[i];
//          }
//      }
//  }
    for(int i=s.size()-1;i>=0;i--){
        for(int j=0;j<s.size();j++){
            if(sz(s[i])&&sz(s[j])){
                swap(s[i],s[j]);
            }       
        } 
    }
    cout<<s;
    return 0;

}

写到一半,发现越写越乱。


0
已采纳
褚俊皓
褚俊皓
新手天翼
新手天翼

建议重新开始写

思路:

1,将ASCII码为偶数的小写字母变为大写

2,将字符串中的数字的位置左右对称地交换位置(对字符串"a1b2c3d4"应用此规则会变为"a4b3c2d1")

至于交换数字的问题,定义两个数组,数组a存放字符串中是“数字”的字符的下标,数组b存放“数字”字符的值。

对了,还有一个规律,字符的ASCII码值是不是偶数可以直接判断,s[i]%2==0

采纳我吧

0
黄子扬
黄子扬
初级天翼
初级天翼

转换以后,直接存数字,再逆输出

0
黄子扬
黄子扬
初级天翼
初级天翼

转换以后,直接存数字,再逆输出

0
陈曦
陈曦
资深天翼
资深天翼

ding

陈曦在2020-10-06 17:52:38追加了内容

ding

陈曦在2020-10-06 17:53:01追加了内容

ding

陈曦在2020-10-06 17:52:38追加了内容

ding

陈曦在2020-10-06 17:53:34追加了内容

 

陈曦在2020-10-06 17:52:38追加了内容

ding

陈曦在2020-10-06 19:57:49追加了内容

ding

陈曦在2020-10-06 17:52:38追加了内容

ding

陈曦在2020-10-06 17:53:01追加了内容

ding

陈曦在2020-10-06 17:52:38追加了内容

ding

陈曦在2020-10-06 17:53:34追加了内容

 

陈曦在2020-10-06 17:52:38追加了内容

ding

我要回答