#include <string>vector<string>results;results.push_bask(string1);for(const auto &result :result)//字符串可以用下表访问string myString;string.length()ss.replace(ss,find('A'),1,'T');char operator()(char ch) const class SomeClass {private:int memberVar;public:SomeClass(int param) : memberVar(param) {} };
#include <algorithm>transform()template <class InputIterator, class OutputIterator, class UnaryOperation> OutputIterator transform(InputIterator first, InputIterator last, OutputIterator result, UnaryOperation op);
1、 石头剪刀布
石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于意外"与"技术" 两种特性,深受世界人民喜爱。
游戏规则:石头打剪刀,布包石头,剪刀剪布。
现在,需要你写一个程序来判断石头剪子布游戏的结果。
输入格式
输入包括 N +1行:
第一行是一个整数 N,表示一共进行了 N 次游戏。1 < N < 100.接下来 N 行的每一行包括两个字符串,表示游戏参与者 Player1,Player2 的选择(石头、剪子或者是布):S1 S2
字符串之间以空格隔开 S1,S2 只可能取值在{“Rock”,“Scissors”,“Paper”}(大小写敏感)中。输出格式
输出包括 N 行,每一行对应一个胜利者"Player1"或者"Player2”,或者游戏出现平局,则输出"Tie”
#include <iostream>
#include <vector>
#include <string>
using namespace std;
//写一个函数,这个函数里面判断
string judge(const string &play1,const string &play2)
{if(play1==play2){return "Tie";}else if((play1=="Scissors"&&play2=="Paper")||(play1=="Paper"&&play2=="Rock")||(play1=="Rock"&&play2=="Scissors")){return "Player1";}else {return "Player2";}}
int main(){int number;cin>>number;cin.ignore();vector<string>results;for(int i =0;i<number;i++){string play1 ,play2;cin>>play1>>play2;results.push_back(judge(play1, play2));}for(const auto &result:results){cout<<result<<endl;}return 0;
}
2、输出亲朋字符串
编写程序,求给定字符串s的亲朋字符串 81。
亲朋字特串 s 定义如下:给定字特串s的第一个字特的 ASCI值加第二个字特的 ASCⅡ值,得到第一个亲朋字符,给定字特串s的第二个字特的 ASCⅡ值加第三个字特的 ASCI 值,得到第二个亲朋字符;依此类推,直到给定字符串s的倒数第二个字符。亲朋字符串的最后一个字符由给定字符串s的最后一个字符 ASOI 值加 s的第一个字特的 ASCI 值。
输入格式
输入一行,个长度大于等于 2,小于等于 100 的字符串。字符串中每个字符的 ASCII 值不大于 63
输出格式
输出一行为变换后的亲朋字答串。输入保证变换后的字符串只有一行
#include <iostream>
#include <string>using namespace std;int main() {string S;getline(cin, S);string results;for (int i = 0; i < S.length(); i++) {int temp = (i + 1) % S.length();results.push_back(S[i] + S[temp]);}cout << results;return 0;
}
3、配对碱基对
脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。而构成 DNA 的碱基共有4种,分别为腺瞟呤(A)、鸟嘌呤(G)、胸腺嘧啶(T)和胞嘧啶©。我们知道,在两条互补碱基链的对应位置上,腺瞟呤总是和胸腺啶配对,鸟嘌呤总是和胞嘧啶配对。你的任务就是根据一条单链上的碱基序列,给出对应的互补链上的碱基序列。
输入格式
一个字符串,表示一条碱基链。这个字符串只含有大写字母 A、T、G、C,分别表示腺瞟呤、胸腺啶、鸟嘌呤和胞啶。字符串长度不超过 255。
输出格式
一个只含有大写字母 A、T、G、C 的字符串,为与输入的碱基链互补的碱基链。
#include <iostream>
#include <string>using namespace std;int main() {string ss;getline(cin, ss);string results;for (char c : ss) {if (c == 'A') {results += 'T';} else if (c == 'T') {results += 'A';} else if (c == 'G') {results += 'C';} else if (c == 'C') {results += 'G';}}cout << results;return 0;
}
4、标准库的字符替换
这里的oldChar(oldChar)是一种初始化成员变量的语法形式。括号左边的oldChar是类的成员变量,括号右边的oldChar是构造函数的参数。这种写法表示使用构造函数传入的参数值来初始化成员变量。
由于构造函数参数和成员变量同名,这种写法在语法上明确了初始化的来源(即使用传入的参数值),避免了混淆。如果成员变量和参数名不同,其含义会更加清晰,例如:
class SomeClass {
private:int memberVar;
public:SomeClass(int param) : memberVar(param) {}
};
#include <iostream>
#include <string>
#include <algorithm>using namespace std;class CharReplacer {
public:CharReplacer(char oldChar, char newChar) : oldChar(oldChar), newChar(newChar) {}char operator()(char ch) const {return (ch == oldChar)? newChar : ch;}private:char oldChar;char newChar;
};int main() {string ss;cin >> ss;char c, T;cin >> c >> T;string results = ss;transform(results.begin(), results.end(), results.begin(), CharReplacer(c, T));cout << results;return 0;
}
5、密码翻译
上一步的代码不能对下一步的代码产生影响
在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给)的一个字符串,把其中从 ay,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其他非字母字符不变,则可得到一个简单的加密字符串。
输入格式
输入一行,包含一个字符串,长度小于 80 个字符。
输出格式
输出每行字符串的加密字符串。
格式说明
输出时每行末尾的多余空格,不影响答案正确性
样例输入
Hello! How are you!
样例输出
Tfm
px bsf zov
#include <iostream>
#include <string>using namespace std;int main() {string input;getline(cin, input);string encrypted;for (char c : input) {if ((c >= 'a' && c < 'z') || (c >= 'A' && c < 'Z')) {c++;} else if (c == 'z') {c = 'a';} else if (c == 'Z') {c = 'A';}encrypted += c;}cout << encrypted << endl;return 0;
}