题目
在21点游戏中,无论花色如何,从2到10的牌都是按牌面数的;所有带脸的牌(杰克、王后和国王)都算为10;一张ace被算作1或11,这取决于玩家手中所有牌的总数。只有当玩家手中所有牌的总价值不超过21时,ace才算11;否则,它被算作1。使用这些信息,编写一个c++程序,接受三个纸牌值作为输入(1对应于ace, 2对应于2,等等),计算手牌的总价值,并显示这三张纸牌的值。
参考代码1
#include<stdio.h>
int main(){
int a[4], sum = 0;
printf("请输入三张牌:");
scanf("%d%d%d", &a[0], &a[1], &a[2]);
for(int i = 0; i < 3; i++){
if(a[i] > 10){
sum += 10;
}
else{
sum += a[i];
}
}
for(int i = 0; i < 3; i++){
if(a[i] == 1 && sum + 10 <= 21){
sum += 10;
}
}
printf("总值为:%d\n", sum);
return 0;
}
参考代码2
#include<iostream>
using namespace std;
int main(){
int a, b, c, ans;
cout << "Please input three numbers:";
cin >> a >> b >> c;
if(a < 0||a > 13||b < 0||b > 13||c < 0||c > 13){
cout << "Error!" << endl;
return 0;
}
if(a > 10)
a = 10;
if(b > 10)
b = 10;
if(c > 10)
c = 10;
if(a == 1||b == 1||c == 1){
if(a + b + c + 10 <= 21){
ans = a + b + c + 10;
}else{
ans = a + b + c;
}
}else{
ans = a + b + c;
}
cout << ans << endl;
return 0;
}