B44. 猜价格 两种方法创建程序,功能为猜价格小游戏,规则:系统随机生成 100 以内数字, 用户有 8 次猜数字的机会,每猜错一次,系统会给出一些提示,提示猜得高了, 还是低了。猜对,游戏胜利!错误,游戏失败!。考虑猜的是整型、小数和字符 等不同类型。 方法 1 函数原型:int guess(int v1, int& number); int guess(double v1, int& number); int guess(char v1, int& number); 功能描述:此程序为猜价格小游戏,用户有 8 次猜数字的机会,每猜错一次,系统会给出一些提示,提示猜得高了,还是低了。猜对,游戏胜利!错误,游戏失败!程序中使用了函数重载,支持猜测整型、小数和字符等不同类型的数字。 方法 2 函数模板原型: template int guess(T v1, int& number); 功能描述:此程序同样为猜价格小游戏,与方法 1 不同的是,此版本使用函数模板,可以支持更多种数据类型。其他功能与方法 1 相同。
时间: 2024-02-12 08:09:42 浏览: 68
这是一个要求你实现两种不同方法的猜价格小游戏的题目,其中规则是系统随机生成100以内的数字,用户有8次猜数字的机会,每猜错一次,系统会给出提示,提示猜得高了还是低了,猜对则游戏胜利,错误则游戏失败。考虑猜的数字可以是整型、小数和字符等不同类型。
方法1中提供了三个重载函数,分别支持猜测整型、小数和字符等不同类型的数字,函数原型分别为:
```
int guess(int v1, int& number);
int guess(double v1, int& number);
int guess(char v1, int& number);
```
其中,v1是用户猜测的数字,number是系统随机生成的数字,在函数中进行比较并给出提示,返回值表示猜测的结果。
方法2中使用了函数模板,函数模板的原型为:
```
template <typename T>
int guess(T v1, int& number);
```
其中,T表示模板参数,可以是整型、小数和字符等不同类型的数字,其他功能与方法1相同。
相关问题
B44.猜价格 两种方法创建程序,功能为猜价格小游戏,规则:系统随机生成 100 以内数字, 用户有 8 次猜数字的机会,每猜错一次,系统会给出一些提示,提示猜得高了, 还是低了。猜对,游戏胜利!错误,游戏失败!。考虑猜的是整型、小数和字符 等不同类型。方法 1 函数原型:int guess(int v1, int& number);int guess(double v1, int&number );int guess(char v1, int& number);功能描述:此程序为猜价格小游戏,用户有 8 次猜数字的机会,每猜错一次,系统会给出一些提示,提示猜得高了,还是低了。猜对,游戏胜利!错误,游戏失败!程序中使用了函数重载,支持猜测整型、小数和字符等不同类型的数字。方法 2 函数模板原型: template int guess(T v1, int& number);功能描述:此程序同样为猜价格小游戏,与方法 1 不同的是,此版本使用函数模板,可以支持更多种数据类型。其他功能与方法 1 相同。 怎么写 c++
以下是两种方法的C++实现:
方法1:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int guess(int v1, int& number) {
if (v1 == number) {
cout << "恭喜你猜对了!" << endl;
return 1;
}
else if (v1 > number) {
cout << "猜的太高了!" << endl;
}
else {
cout << "猜的太低了!" << endl;
}
return 0;
}
int guess(double v1, int& number) {
int iv1 = (int)v1;
return guess(iv1, number);
}
int guess(char v1, int& number) {
int iv1 = (int)v1 - '0';
return guess(iv1, number);
}
int main() {
srand(time(0)); // 初始化随机数种子
int number = rand() % 100 + 1; // 生成1到100之间的随机数
cout << "猜价格小游戏开始!系统已生成一个1到100之间的数字,请猜测它是多少:" << endl;
int count = 0;
while (count < 8) {
int v1;
cin >> v1;
if (guess(v1, number) == 1) {
cout << "游戏结束!" << endl;
return 0;
}
count++;
if (count < 8) {
cout << "你还有" << 8 - count << "次机会,请再猜一次:" << endl;
}
}
cout << "很遗憾,你没有在规定次数内猜对,游戏失败!" << endl;
return 0;
}
```
方法2:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
template <typename T>
int guess(T v1, int& number) {
int iv1 = (int)v1;
if (iv1 == number) {
cout << "恭喜你猜对了!" << endl;
return 1;
}
else if (iv1 > number) {
cout << "猜的太高了!" << endl;
}
else {
cout << "猜的太低了!" << endl;
}
return 0;
}
int main() {
srand(time(0)); // 初始化随机数种子
int number = rand() % 100 + 1; // 生成1到100之间的随机数
cout << "猜价格小游戏开始!系统已生成一个1到100之间的数字,请猜测它是多少:" << endl;
int count = 0;
while (count < 8) {
int v1;
cin >> v1;
if (guess(v1, number) == 1) {
cout << "游戏结束!" << endl;
return 0;
}
count++;
if (count < 8) {
cout << "你还有" << 8 - count << "次机会,请再猜一次:" << endl;
}
}
cout << "很遗憾,你没有在规定次数内猜对,游戏失败!" << endl;
return 0;
}
```
注意,这两种方法都使用了随机数生成器srand和rand,需要包含cstdlib头文件,同时为了保证随机数真正随机,需要在程序开始时调用srand函数初始化随机数种子。
阅读全文