题目:
以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。
输入格式:
输入按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行,为不超过10个英文字母的非空单词,以回车结束。一个英文句点.
标志输入的结束,这个符号不算在点赞名单里。
输出格式:
根据点赞情况在一行中输出结论:若存在第2个人A和第14个人B,则输出“A and B are inviting you to dinner...”;若只有A没有B,则输出“A is the only one for you...”;若连A都没有,则输出“Momo... No one is for you ...”。
输入样例1:
GaoXZh
Magi
Einst
Quark
LaoLao
FatMouse
ZhaShen
fantacy
latesum
SenSen
QuanQuan
whatever
whenever
Potaty
hahaha
.
输出样例1:
Magi and Potaty are inviting you to dinner...
输入样例2:
LaoLao
FatMouse
whoever
.
输出样例2:
FatMouse is the only one for you...
输入样例3:
LaoLao
.
输出样例3:
Momo... No one is for you ...
解答:
题目分析:
- 按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行
- 一个英文句点
.
标志输入的结束,这个符号不算在点赞名单里 - 输出有三种情况:没有第二个点赞的人名,有第二个没有第十四个,有第二个和第十四个,三种情况对应三种不同的输出
- 潜台词,如果有第十四个人名则必有第二个人名
操作实现:
-
定义bool型变量flag2和flag14 ,用来标记是否有第二个人名和第十四个人名
-
定义string型变量s2和s14,用来存储第二个人名和第十四个人名
-
定义int型变量index,用来表示当前是第index次输入
-
定义string型变量s,用来输入第index次的人名
-
因为给出的人名数量未知,所以使用while循环,当s="."表示输入结束,退出循环
-
如果index=2,则说明输入了第二个人名,需将flag2改为true,将s存入s2,index=14时同理
-
按要求输出
代码实现:
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int main()
{
bool flag2 = false, flag14 = false;
string s2 = "", s14 = "";
int index = 1;
string s; cin >> s;
while(s != ".")
{
if(index == 2) {s2 = s; flag2 = true;}
if(index == 14) {s14 = s; flag14 = true;}
index++;
cin >> s;
}
if(!flag2) cout << "Momo... No one is for you ..." << endl;
else if(!flag14) cout << s2 << " is the only one for you..." << endl;
else cout << s2 << " and " << s14 << " are inviting you to dinner..." << endl;
return 0;
}
欢迎大家探讨