杭州電子科技大學上機題——關羽過五關斬六將

杭州電子科技大學上機題——關羽過五關斬六將

題目描述:
關羽過五關斬六將,輸入四個人的武力值(大於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;
}

運行測試結果:
在這裏插入圖片描述

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