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