为什么此函数无法正常输出
#include<stdio.h>int main(){
int a,b,n;
int s1=0,s2=0;
scanf("%d",&n);
getchar();
char ch1,ch2;
for(a=0;a<n;a++){
scanf("%s %s",ch1,ch2);
if((ch1=="Rock"&&ch2=="Scissors")||(ch1=="Scissors"&&ch2=="Paper")||(ch1=="Paper"&&ch2=="Rock")){
printf("Player1\n");
}
else if((ch2=="Rock"&&ch1=="Scissors")||(ch2=="Scissors"&&ch1=="Paper")||(ch2=="Paper"&&ch1=="Rock")){
printf("Player2\n");
}
else if(ch1==ch2){
printf("Tie\n");
}
}
return 0;
} 你好,根据你提供的代码,函数无法正常输出的原因可能有以下几种情况:
1. 输入格式错误:请确保你的输入格式与代码中的要求一致。比如,如果你希望两个字符之间通过空格分隔,那么你需要在输入时加入空格。
2. 输入缓冲区未清空:在使用scanf读取整数后,如果后面还有要读取的字符,需要使用getchar()将缓冲区中的换行符读取掉。
3. 循环条件不正确:for循环中的循环条件可能有问题,导致循环无法正常结束。请检查循环条件是否正确。
请检查以上几点,并根据需要修改你的代码。如果你能提供更多的代码细节和具体的错误信息,我可以更具体地帮助你解决问题。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 1、在进行字符串操作的时候需要用特定的操作函数,在头文件<string.h>中,这里你需要将所有的 == 条件转换成strcmp函数
示例:将ch1 == ch2转换成strcmp(ch1,ch2) == 0
2、当进行多次scanf操作的时候,需要在之前使用getchar();
示例:while(getchar()!='\n');
scanf("%s %s",ch1,ch2);
渔村暮火 发表于 2023-11-29 10:17
1、在进行字符串操作的时候需要用特定的操作函数,在头文件中,这里你需要将所有的 == 条件转换成strcmp函数 ...
3、新使用的数组最好先进行初始化
示例:int ch1 = {0},ch2={0};
或者使用memset函数
memset(ch1,0,9);
memset(ch2,0,9); 简单的石头剪刀布游戏,它比较两个玩家的选择并决定谁是赢家或是否是平局
1、输入问题:你使用scanf("%s %s",ch1,ch2);来获取两个字符串。这可能会导致缓冲区溢出,因为%s会在遇到空格或换行符时停止读取。为了更安全地读取字符串,建议使用fgets。
2、比较问题:你使用==来比较字符串,这在C中并不安全。应该使用strcmp函数来比较字符串。
3、打印玩家问题:你使用printf("Player1\n");和printf("Player2\n");来打印赢家。然而,由于你的输入和比较逻辑,这两个打印语句可能不会正确地标识赢家。
#include <stdio.h>
#include <string.h>
int main() {
int n;
scanf("%d", &n);
getchar();// consume newline left-over from previous input
char ch1, ch2;
for (int a = 0; a < n; a++) {
fgets(ch1, sizeof(ch1), stdin);// read input safely
fgets(ch2, sizeof(ch2), stdin);// read input safely
// Remove newline character from fgets reads
ch1 = 0;
ch2 = 0;
if (strcmp(ch1, "Rock") == 0 && strcmp(ch2, "Scissors") == 0) {
printf("Player1\n");
} else if (strcmp(ch1, "Scissors") == 0 && strcmp(ch2, "Paper") == 0) {
printf("Player1\n");
} else if (strcmp(ch1, "Paper") == 0 && strcmp(ch2, "Rock") == 0) {
printf("Player1\n");
} else if (strcmp(ch2, "Rock") == 0 && strcmp(ch1, "Scissors") == 0) {
printf("Player2\n");
} else if (strcmp(ch2, "Scissors") == 0 && strcmp(ch1, "Paper") == 0) {
printf("Player2\n");
} else if (strcmp(ch2, "Paper") == 0 && strcmp(ch1, "Rock") == 0) {
printf("Player2\n");
} else if (strcmp(ch1, ch2) == 0) {
printf("Tie\n");
} else {
printf("Invalid input! Both should be Rock, Scissors or Paper.\n");
}
}
return 0;
}
页:
[1]