杭州电子科技大学上机题——关羽过五关斩六将

杭州电子科技大学上机题——关羽过五关斩六将

题目描述:
关羽过五关斩六将,输入四个人的武力值(大于0小于50),若超过界限需要重新输入,关羽的武力值为x,将士武力值为y,满足(x-y)^2 +(x-y)+41 若为素数则关羽获胜,若关羽三次获胜输出WIN。若失败则输出失败的将领序号(第几关)。

算法思路:
本题主要解决两个问题:
素数的判断:在大于1的自然数中,除了1和它本身以外不再有其他因数。
判断武力值是否满足条件。

#include<iostream>
using namespace std;
bool isPrime(int num) {
	if (num % 2 == 0)
		return false;
	for (int i = 2;i <= sqrt(num);i = i + 2) {
		if (num % i == 0)
			return false;
	}
	return true;
}
int main() {
	int guanyu;
	int wujiang[3];
	cout << "输入关羽的武力值:";
	cin >> guanyu;
	while (guanyu < 0 || guanyu>50) {
		cout << "输入错误,重新输入:";
		cin >> guanyu;
	}
	for (int i = 0;i < 3;i++) {
		cout << "输入武将的武力值:";
		cin >> wujiang[i];
		while (wujiang[i] < 0 || wujiang[i]>50) {
			cout << "输入错误,重新输入:";
			cin >> wujiang[i];
		}
	}
	int result, failNum;
	bool b = true;
	for (int i = 0;i < 3;i++) {
		result = (guanyu - wujiang[i]) * (guanyu - wujiang[i]) + (guanyu - wujiang[i]) + 41;
		if (!isPrime(result)) {
			failNum = i + 1;
			b = false;
			break;
		}
	}
	if (b) {
		cout << "WIN!" << endl;
	}
	else {
		cout << "LOSE!" << endl;
		cout << "失败在第" << failNum << "关" << endl;
	}
	return 0;
}

运行测试结果:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章