中易网

帮我看一个题,哪错了(C语言)

答案:2  悬赏:50  
解决时间 2021-05-11 16:50

这是我的程序,帮我看看我的循环为什么不正常?

#include<stdio.h>
int main()
{
 int i,j,a,b,n,t;
 char c1,c2;
 a=b=0;
 scanf("%d",&t);
 for(i=1;i<=t;i++){
  scanf("%d",&n);
  for(j=1;j<=n;j++){
   scanf("%c%c",&c1,&c2);
   if(c1=='R'&&c2=='S'||c1=='S'&&c2=='P'||c1=='P'&&c2=='R')
    a++;
   else if(c1==c2)
    continue;
   else
    b++;
  }
  if(a>b)
   printf("Player 1\n");
  else if(a==b)
   printf("TIE\n");
  else
   printf("Player 2\n");
 }
 return 0;
}

例如:

我输入:1

然后输入:2

接下来我输入两个字符R P(应该是两次,可是我输入第一轮字符后,就会输出结果)

请高手帮我看看哪里错了?

 

最佳答案

哥们儿,你的这句话有问题scanf("%c%c",&c1,&c2);在读取字符时,会把回车也读进去,最好改为:


scanf("%c %c\n",&c1,&c2);,两个字符间加个空格。


另外我看了一下你的程序,发现有点儿问题。

if(c1=='R'&&c2=='S'||c1=='S'&&c2=='P'||c1=='P'&&c2=='R')

这句话会让人感觉逻辑不清晰,最好改为:


if((c1=='R'&&c2=='S')||(c1=='S'&&c2=='P')||(c1=='P'&&c2=='R'))
用括号让优先级更明确。

全部回答

for(i=0;i<=t;i++) /*输入1后循环次数为两次:0,1两个数

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
亲情重要还是爱情重要,选择哪个比较多
空间里的积分怎么得啊?(做任务除外)(一些
在紫钻专区买东西永久的如果不是紫钻了 那还
怎样取消拒绝添加好友设置
我只知道两个问题的答案,怎么办?
要QQ有什么用???
帮起网名和慕雪同意,男生用
每天做梦是怎么一回事啊?
地跨各个大洲的各个地方城市有哪些?
方园天书地址在哪,我要去那里办事
累是不是真的不行啊,人为啥活着呢,天真的绝
联通有活动不?
为什么电脑打魔兽的时候,一段时间过后 游戏
DNF怎么耍着耍着就卡掉然后就断网
爱情不在于说多少次“我爱你”而在于怎样去证
推荐资讯
现在能用的QQ播放器
上海移动的密友一张卡漫游了电话还免费么
张继红的英文名怎么写?
制作个性照片背景有哪个网站啊
新一代国民教育书店这个地址在什么地方,我要
我连续登陆20天校友为什么领了礼包却没有给我
红颜美容养生会所地址有知道的么?有点事想过
是不是用手机申请QQ账号好?
皮肤过敏了要怎么办?
2011年有什么好听的歌曲?(注意:粤语的 不
鑫靓点银河娱乐尚会在什么地方啊,我要过去处
N81有什么方法可以关掉拍摄的声音
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?