pta——大笨钟的心情,稳赢,统计一行文本的单词个数(c语言)

程序设计实训8月15日小组编程

7-4 稳赢

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
在这里插入图片描述
现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。

输入格式:
输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi代表“锤子”、JianDao代表“剪刀”、Bu代表“布”。End代表输入结束,这一行不要作为出招处理。

输出格式:
对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。

输入样例:
2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End
输出样例:
Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu

#include<stdio.h>
#include<string.h>
int main()
{
	int k,z=0;
	char str[10];
	scanf("%d",&k);
	while(1){
   	    scanf("%s",str);//用gets就错了 
   	    if(strcmp(str,"End") == 0) break; 
	    if(z != k){
		   if(strcmp(str,"ChuiZi") == 0) 
		      printf("Bu\n");
		    else if(strcmp(str,"JianDao") == 0)
		      printf("ChuiZi\n");
		    else if(strcmp(str,"Bu") == 0)
		       printf("JiaoDao\n");
		    z++;
     	}
     	else {
     		puts(str);
        	z = 0; 
	    }
	}
	return 0;
}

ssn:字符串的函数当初学的时候只考计算长度的,所以别的我都很生疏。上课的时候是输入字符串,然后比较str[0]是C,J,B还是E,其实这个思路也没有问题。我错在scanf(“%s”)写的是gets,忘了gets还会连回车一起读入。(但是我后面加了getchar还是测试不成功,这点求大佬指点)
今天测试了一下,竟然不对:

在这里插入图片描述
通过观察,此题可能想一起输入之后再一起输出,并不是他出一招我马上就跟一招。又改:

#include<stdio.h>
#include<string.h>
//jiandao为1,chuizi为2,bu为3 
int main()
{
	int k,z=0;
	char str[10];
	int a[10001]={0};
	scanf("%d",&k);
	for(int i=0;;i++){
   	    scanf("%s",str);
   	    if(strcmp(str,"End") == 0) break; 
	    if(z != k){
		   if(strcmp(str,"ChuiZi") == 0) 
		       a[i]=3;
		    else if(strcmp(str,"JianDao") == 0)
		       a[i]=2;
		    else if(strcmp(str,"Bu") == 0)
		       a[i]=1;
		    z++;
     	}
     	else {
 		   if(strcmp(str,"ChuiZi") == 0) 
		       a[i]=2;
		    else if(strcmp(str,"JianDao") == 0)
		       a[i]=1;
		    else if(strcmp(str,"Bu") == 0)
		       a[i]=3;
        	z = 0; 
	    }
	}
	for(int i=0;a[i]!=0;i++){
		if(a[i]==1){
			printf("JianDao\n");
		}
		else if(a[i]==2){
			printf("ChuiZi\n");
		}
		else if(a[i]==3){
			printf("Bu\n");
		}
	}
	return 0;
}

在这里插入图片描述

7-6 大笨钟的心情

在这里插入图片描述

有网友问:未来还会有更多大笨钟题吗?笨钟回复说:看心情……
本题就请你替大笨钟写一个程序,根据心情自动输出回答。

输入格式:
输入在一行中给出 24 个 [0, 100] 区间内的整数,依次代表大笨钟在一天 24 小时中,每个小时的心情指数。

随后若干行,每行给出一个 [0, 23] 之间的整数,代表网友询问笨钟这个问题的时间点。当出现非法的时间点时,表示输入结束,这个非法输入不要处理。题目保证至少有 1 次询问。

输出格式:
对每一次提问,如果当时笨钟的心情指数大于 50,就在一行中输出 心情指数 Yes,否则输出 心情指数 No。

输入样例:
80 75 60 50 20 20 20 20 55 62 66 51 42 33 47 58 67 52 41 20 35 49 50 63
17
7
3
15
-1
输出样例:
52 Yes
20 No
50 No
58 Yes

#include<stdio.h>
int main()
{
	int a[24],n;
	int i;
	for(i=0;i<24;i++){
		scanf("%d",&a[i]);
	}
	while(1){
		scanf("%d",&n);
		if(n<0||n>23) break;
		if(a[n]>50){
			printf("%d Yes\n",a[n]);
		}
		else{
			printf("%d No\n",a[n]);
		}
	}
	return 0;
}

ssn:这道题好简单啊!写题的时候就没写这道,亏死!
在这里插入图片描述

这道题之前写过:
7-7 统计一行文本的单词个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜·肉多多·狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值