C 字符不能正确比较
这是我到目前为止写的:C 字符不能正确比较,c,if-statement,char,C,If Statement,Char,这是我到目前为止写的: int main(void) { int playerJerseys[5]; int playerRatings[5]; printf("Enter player 1's jersey number:\n"); scanf("%d",&playerJerseys[0]); printf("Enter player 1's rating:\n\n"); scanf("%d",&playerRatings[0]);
int main(void) {
int playerJerseys[5];
int playerRatings[5];
printf("Enter player 1's jersey number:\n");
scanf("%d",&playerJerseys[0]);
printf("Enter player 1's rating:\n\n");
scanf("%d",&playerRatings[0]);
printf("Enter player 2's jersey number:\n");
scanf("%d",&playerJerseys[1]);
printf("Enter player 2's rating:\n\n");
scanf("%d",&playerRatings[1]);
printf("Enter player 3's jersey number:\n");
scanf("%d",&playerJerseys[2]);
printf("Enter player 3's rating:\n\n");
scanf("%d",&playerRatings[2]);
printf("Enter player 4's jersey number:\n");
scanf("%d",&playerJerseys[3]);
printf("Enter player 4's rating:\n\n");
scanf("%d",&playerRatings[3]);
printf("Enter player 5's jersey number:\n");
scanf("%d",&playerJerseys[4]);
printf("Enter player 5's rating:\n\n");
scanf("%d",&playerRatings[4]);
printf("ROSTER\n");
printf("Player 1 -- Jersey number: %d, Rating: %d\n",playerJerseys[0],playerRatings[0]);
printf("Player 2 -- Jersey number: %d, Rating: %d\n",playerJerseys[1],playerRatings[1]);
printf("Player 3 -- Jersey number: %d, Rating: %d\n",playerJerseys[2],playerRatings[2]);
printf("Player 4 -- Jersey number: %d, Rating: %d\n",playerJerseys[3],playerRatings[3]);
printf("Player 5 -- Jersey number: %d, Rating: %d\n\n",playerJerseys[4],playerRatings[4]);
char selection;
printf("MENU\n");
printf("u - Update player rating\n");
printf("a - Output players above a rating\n");
printf("r - Replace player\n");
printf("o - Output roster\n");
printf("q - Quit\n\n");
printf("Choose an option:\n");
scanf("%c",&selection);
if(selection == 'q'){
return 0;
}
else if(selection == 'u'){
int userJersey;
int userRating;
printf("Enter a jersey number:\n");
scanf("%d",&userJersey);
for(int i = 0; i < 5; ++i){
if(playerJerseys[i] == userJersey){
printf("Enter a new rating for player:\n");
scanf("%d",&userRating);
playerRatings[i] = userRating;
}
}
}
else if(selection == 'o'){
printf("ROSTER\n");
printf("Player 1 -- Jersey number: %d, Rating: %d\n",playerJerseys[0],playerRatings[0]);
printf("Player 2 -- Jersey number: %d, Rating: %d\n",playerJerseys[1],playerRatings[1]);
printf("Player 3 -- Jersey number: %d, Rating: %d\n",playerJerseys[2],playerRatings[2]);
printf("Player 4 -- Jersey number: %d, Rating: %d\n",playerJerseys[3],playerRatings[3]);
printf("Player 5 -- Jersey number: %d, Rating: %d\n\n",playerJerseys[4],playerRatings[4]);
}
return 0;
}
这是输出:
Player 1 -- Jersey number: 84, Rating: 7
Player 2 -- Jersey number: 23, Rating: 4
Player 3 -- Jersey number: 4, Rating: 5
Player 4 -- Jersey number: 30, Rating: 2
Player 5 -- Jersey number: 66, Rating: 9
MENU
u - Update player rating
a - Output players above a rating
r - Replace player
o - Output roster
q - Quit
Choose an option:
所需输出为:
ROSTER
Player 1 -- Jersey number: 84, Rating: 7
Player 2 -- Jersey number: 23, Rating: 4
Player 3 -- Jersey number: 4, Rating: 6
Player 4 -- Jersey number: 30, Rating: 2
Player 5 -- Jersey number: 66, Rating: 9
MENU
u - Update player rating
a - Output players above a rating
r - Replace player
o - Output roster
q - Quit
Choose an option:
当u被提供作为输入时,后续的数字应该会改变其中一个玩家的等级,但对我来说它不起作用。我不确定我是否只是不知道如何比较字符?或者我的if语句,或者如果语句设置不正确?任何建议都将不胜感激。尝试在%c之前留出空白,这样做很有效。 像
scanf(“%c”,选择(&c))代码>请尝试重新表述您的问题,以包含最低限度的工作示例。那里有很多不必要的代码。试着把它归结为字符比较。我看不出输出有什么不同,对吗?您是否在调试器中逐行运行代码,检查变量并查看发生了什么?更新播放评级后,程序退出。我看不到“菜单”上有任何循环。“这是输出”的显示方式?OT:调用任何scanf()
函数族时,始终检查返回值(而不是参数值),以确保操作成功:关于:scanf(“%c”,&selection)
您在哪里允许吸收/跳过“\n”建议:如果(scanf(“%c”,&selection)!=1){fprintf(stderr,“无法输入菜单选项”);
请注意%c
前面的空格,以便使用任何“空白”
ROSTER
Player 1 -- Jersey number: 84, Rating: 7
Player 2 -- Jersey number: 23, Rating: 4
Player 3 -- Jersey number: 4, Rating: 6
Player 4 -- Jersey number: 30, Rating: 2
Player 5 -- Jersey number: 66, Rating: 9
MENU
u - Update player rating
a - Output players above a rating
r - Replace player
o - Output roster
q - Quit
Choose an option: