1.1
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
int user_guess; //用户的猜的数字
int num_tries; // 总的猜测数
int num_right; // 总的正确数
char user_answer; //用户回答是否再猜一次(同一数列中)
char user_answer_try; //是否尝试下一组数列?
int tries_cnt = 0; //循环内用户猜的次数,每次猜新数列要清零
bool next_seq = true; // 显示下一组数列
bool go_for_it = true; // 用户想继续猜一次
bool true_or_not = false; // 用户是否猜对
const int max_tries = 3; //总猜测次数 3次
const int size_18 = 18; //容器,常数18
const int max_seq = 6; // 最多猜6次,6个数列
int elem_seq[size_18] = {
1, 2, 3, // Fibonacci数列
3, 4, 7, // Lucas数列
2, 5, 12, // Pell数列
3, 6, 10, // Triangular数列
4, 9, 16, // Square数列
5, 12, 22 // Pentagonal数列
}; //初始化容器(数组) 18+1个,末尾是0
string seq_names[max_seq] = {
"Fibonacci",
"Lucas",
"Pell",
"Triangular",
"Square",
"Pentagonal"
}; //这是声明了个字符串数组?
int true_size = 0; //用来做数组的下标
// 用户想要继续猜某个数列
while (next_seq == true && true_size < size_18)
{
cout << "\t\t" << "这个数列的前两个数字: "
<< elem_seq[true_size]
<< ", "
<< elem_seq[true_size+1]
<< endl; // 显示数列的前两个数字
cout << "\t\t" << "下一个数字是什么?"
<< "\t\t"
<< endl;
tries_cnt = 0;
next_seq = true;
go_for_it = true;
true_or_not = false;
while(!true_or_not && go_for_it && (tries_cnt < max_tries)) // 用户所猜不正确 && 用户想要再猜一次
{ num_tries++;
tries_cnt++;
if(tries_cnt>1){cout << "\t\t" << "再尝试一个数字吧"<<endl;}
printf( "\t\t");
cin >> user_guess;
if(user_guess == elem_seq[true_size+2]) // 如果答案正确
{
num_right++;
cout << '\n'
<< "\t\t" << "很棒,答对了, "
<< '\n'
<< endl
<< "\t\t"
<< elem_seq[true_size+2]
<< " 便是 "
<< seq_names[true_size/3]
<< " 数列的下一个数字"
<< endl
<< endl;
true_or_not = true;
}
else{ // 如果答案错误
switch (tries_cnt)
{
case 1:
cout << "\t\t" << "哈哈,你猜的很准但不对!";
break;
case 2:
cout << "\t\t" << "抱歉,你错了两次啦!" ;
break;
default:
cout << "\t\t" << "哈,它看起来很难,错三次了,不是吗?" << endl;
break;
}
if(tries_cnt<3){
cout << "\t\t" << "还想继续吗?(y/n):" << endl;
printf( "\t\t");
cin >> user_answer;
}
if(tries_cnt==3){cout << endl;
user_answer=1;
}
if(!(user_answer == 'Y' || user_answer == 'y'))
go_for_it = false;
}
}
cout << "\t\t" << "想试试下一个数列吗? (y/n)?"
<< endl;
printf( "\t\t");
cin >> user_answer_try;
if(!(user_answer_try == 'Y' || user_answer_try == 'y'))
{
next_seq = false;
}
else
true_size += 3;
}
// 外层while结束
if(!(user_answer_try == 'n' || user_answer_try == 'n'))
{
cout << "你的输入有误,本程序即将退出";
}
return 0;
}
版权声明:
作者:maple
链接:https://www.maplezeroz.com/?p=141
来源:我的学习笔记
文章版权归作者所有,未经允许请勿转载。
THE END
1
二维码
海报
1.1
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
int user_guess; //用户的猜的数字
……

共有 0 条评论