【发布时间】:2018-11-28 00:39:27
【问题描述】:
我总是将输入的每个字母的值设为 1,而我应该得到代码中描述的值。请帮助找出我的代码中的错误。
#include <stdio.h>
#include <ctype.h>
char c;
char num (char c);
int main () {
int sum;
printf("Enter a word:");
c=0;
while (c=getchar() != '\n') {
c=toupper(c);
sum+=c;
}
printf("Scrabble value : %d",sum);
return(0);
}
char num (char c) {
if (c=='A'||c=='E'||c=='I'||c=='L'||c=='N'||c=='O'||c=='R'||c=='S'||c=='T'||c=='U') c=1;
if (c=='D'||c=='G') c=2;
if (c=='B'||c=='C'||c=='M'||c=='P') c=3;
if (c=='F'||c=='H'||c=='V'||c=='W'||c=='Y') c=4;
if (c=='K') c=5;
if (c=='J'||c=='X') c=8;
if (c=='Q'||c=='Z') c=10;
return(c);
}
【问题讨论】:
-
你在代码中哪里使用
num(char c);-) ? -
表达式
c=getchar() != '\n'是,由于operator precedence,等于c=(getchar() != '\n')。这意味着c的值将是0或1,仅此而已。另请注意,getchar返回一个int,这对于检查EOF很重要。最后,您需要检查EOF或一般错误。
标签: c char parentheses operator-precedence getchar