C++编程练习 - 关羽过关斩将

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

#include<iostream>
using namespace std;

bool judge(int n) {      // 判断战力值是否在界限内
	if (n > 0 && n < 50) return true;
	else return false;
}

bool IsPrime(int n) {    // 判断结果是否为素数
	for (int i = 2; i <= sqrt(n * 1.0); ++i) {
		if (n % i == 0) return false;
	}
	return true;
}

int main() {
	int x;
	int count = 1;


	int y[3] = { 0 };
	cin >> x >> y[0] >> y[1] >> y[2];
	while (!judge(x) || !judge(y[0]) || !judge(y[1]) || !judge(y[2])) {   
		cout << "武力值超出界限,重新输入:";
		cin>> x >> y[0] >> y[1] >> y[2];
	}
	
	for (int i = 0; i < 3; ++i) {      
		if (IsPrime((x - y[i]) * (x - y[i]) + (x - y[i]) + 41)) {   // 如果为素数,关羽胜,关数+1
			if (count < 3) count++;
		}
		else break;     // 如果不是素数,退出循环,此时的count值为当前关数
	}

	if (count == 3) cout << "WIN" << endl;
	else cout << count << endl;

	system("pause");
	return 0;
}

输出测试:

自己写的,如有问题欢迎提问和纠正。

猜你喜欢

转载自blog.csdn.net/MARS_098/article/details/114296701
今日推荐