PAT1071

1071. 小赌怡情(15)

这里不多废话,先吐槽下这道题,就是这段话:

输入格式:

输入在第一行给出2个正整数T和K(<=100),分别是系统在初始状态下赠送给玩家的筹码数、以及需要处理的游戏次数。随后K行,每行对应一次游戏,顺序给出4个数字:

n1 b t n2

其中n1和n2是计算机先后给出的两个[0, 9]内的整数保证两个数字不相等。b为0表示玩家赌“小”,为1表示玩家赌“大”。t表示玩家下注的筹码数,保证在整型范围内。


我觉的大部分人都会想到用随机数生成两个数n1,n2,然后判断这两个数是否相等,相等的话重新生成n2。所以我一开始就采用了随机数,部分代码如下:

int n1,b,t,n2;
        srand(time(0));
        n1=rand()%10;
        printf("%d",n1);
        cin>>b;
        cin>>t;
        n2=rand()%10;
        if(n1==n2) {
            n2=rand()%10;
        } else {
            printf("%d",n2);
        }
这里要说明下如果只调用rand()这个函数它生成的随机数是固定值的,而加上srand()函数就可以为rand()函数生成随机数种子,每次运行rand()函数的结果就会大不相同。而其中time(0)返回系统时间。
之后提交提示多种错误,但我运行结果自我感觉没毛病,之后百度了网上答案后吐血的发现竟然是自己输入n1,n2,也是很无语T.T,相信我不是一个人这样吧。

吐槽完了,回到这题,作为PAT乙级中每五题的第一题,这道题并不难,简单的if判断就可以,唯一要注意的就是格式问题了,不要少个句号,少个空格就可以了。废话不多说,直接看下面代码:

#include <iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main() {
    int T,K;
    cin>>T>>K;
    int n1,b,t,n2;
    for(int i=0; i<K; i++) {
        cin>>n1>>b>>t>>n2;
        if(T<t) {
            cout<<"Not enough tokens.  Total = "<<T<<"."<<endl;
        } else if((n1<n2&&b==1)||(n1>n2&&b==0)) {
            T=T+t;
            cout<<"Win "<<t<<"!  Total = "<<T<<"."<<endl;

        } else {
            T=T-t;
            cout<<"Lose "<<t<<"."<<"  Total = "<<T<<"."<<endl;
        }
        if(T<=0) {
            cout<<"Game Over."<<endl;
            break;
        }
    }
}


猜你喜欢

转载自blog.csdn.net/tntzs666/article/details/80210241
今日推荐