Hey_System @ 2016-09-29 13:46:03
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main()
{
int n;
string m,ans;
cin>>n>>m;
for(int i=0;i<m.size();i++)
{
if(m[i]+n>122)
m[i]=m[i]+n-26;
else ans[i]=m[i]+n;
}
cout<<ans;
return 0;
}
没有提示错误,ans里面也有字符,就是什么都没有输出
by Hey_System @ 2016-09-29 13:54:50
暂时不看是不是对的。就是
1 qwe 这个数据都无法输出
by Hey_System @ 2016-09-29 13:59:09
后来改进之后AC了
但是cout直接输出string的问题没有解决
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
string m,ans;
cin>>n>>m;
for(int i=0;i<m.size();i++)
{
if(m[i]+n>'z')
ans[i]=(m[i]+n)%122+96;
else ans[i]=m[i]+n;
}
for(int i=0;i<m.size();i++)
cout<<ans[i];
return 0;
}
by 约修亚_RK @ 2016-09-29 14:09:29
你看看ans.size(),它储存的这个字符串的长度是0.
把ans[i]=...改成ans.push_back(...)就好了。
#include <iostream>
#include <string>
using namespace std;
int main(void) {
int n;
string m, ans;
cin >> n >> m;
for (unsigned int i = 0; i < m.size(); i++) {
ans.push_back((m[i] + n > 'z') ? ((m[i]+n) % 122 + 96) : (m[i] + n));
}
cout << ans;
return 0;
}
by 阿也 @ 2016-10-02 14:26:30
C++尽量避免使用字符串,建议改用字符数组
by Toxic_Obsidian @ 2016-10-18 13:00:40
然而我用char str[256];
然后int a=strlen(str);
最后再计算就行了
#include <iostream>
#include <stdio.h>
#include <string.h>
int main()
{
char str[256];
int mov;
std::cin>>mov>>str;
int a=strlen(str);
for(int i=0;i<=a-1;i++)
{
if(mov+(int)str[i]>122) str[i]=(char)(mov+(int)str[i]-26);
else str[i]=(char)(mov+(int)str[i]);
}
std::cout<<str;
}
by Moreland @ 2016-10-24 20:08:50
没有必要用string定义函数吧