题目:
给定一个字符串 a,请你按照下面的要求输出字符串 b。
给定字符串 a 的第一个字符的 ASCII 值加第二个字符的 ASCII 值,得到 b 的第一个字符;
给定字符串 a 的第二个字符的 ASCII 值加第三个字符的 ASCII 值,得到 b 的第二个字符;
…
给定字符串 a 的倒数第二个字符的 ASCII 值加最后一个字符的 ASCII 值,得到 b 的倒数第二个字符;
给定字符串 a 的最后一个字符的 ASCII 值加第一个字符的 ASCII 值,得到 b 的最后一个字符。
代码:
#include<iostream>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
for(int i=0;i+1<a.size();i++)
b[i]=char(a[i]+a[i+1]);
b+=char(a.back()+a[0]);
cout<<b<<endl;
return 0;
}
//循环技巧:最后一位跳到第一位:
//(i + 1) % a.size();
#include<iostream>
using namespace std;
int main()
{
string a, b;
getline(cin, a);
b = a;
for (int i = 0; i < a.size(); i ++)
{
b[i] = (char)(a[i] +a[(i + 1) % a.size()]);
}
cout << b << endl;
return 0;
}
#include<iostream>
using namespace std;
int main()
{
//string a, b;
char a[1024] = {}, b[1024] = {};
//getline(cin, a);
cin.getline(a, 1024);
int i = 0;
for (i = 0; i + 1 < ::strlen(a); i++)
b[i] = char(a[i] + a[i + 1]);
//跳出循环后i指向的位置为a的最后一个字符位置
b[i] += char(a[i] + a[0]);
cout << b << endl;
return 0;
}
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{
string a, b;
getline(cin, a);
b = a;
int i;
for (i = 0; i + 1 < a.size(); i++)
b[i] = (a[i] + a[i + 1]) % 127;
b[i] += (a[i] + a[0]) % 127;
cout << b << endl;
return 0;
}
加一句 b = a,否则b没有分配内存空间无法进行操作
#include <iostream>
using namespace std;
int main()
{
string a, b;
getline(cin, a);
b = a;
for (int i = 0; i + 1 < a.size(); i++)
{
b[i] = char(a[i] + a[i + 1]);
}
b[a.size() - 1] = char(a.back() + a[0]);
cout << b << endl;
return 0;
}