C 寻找拼字的要点
所以我最近开始学习c语言,之前没有编码或计算机科学方面的知识。编写以下代码以使用拼字点查找单词的值: 1:AEILNORSTU 2:DG 3:BCMP 4:FHVWY 5:K 8:JX 10:QZC 寻找拼字的要点,c,C,所以我最近开始学习c语言,之前没有编码或计算机科学方面的知识。编写以下代码以使用拼字点查找单词的值: 1:AEILNORSTU 2:DG 3:BCMP 4:FHVWY 5:K 8:JX 10:QZ # include <stdio.h> # include <ctype.h> # include <conio.h> int main (void) { int n=0; char ch; clrscr(); printf("Enter the S
# include <stdio.h>
# include <ctype.h>
# include <conio.h>
int main (void)
{
int n=0;
char ch;
clrscr();
printf("Enter the SCRABBLE word\n");
ch = getchar();
while(ch!='\n')
{
toupper(ch);
if(ch =='A'||'E'||'I'||'L'||'N'||'O'||'R'||'S'||'T'||'U')
n=n+1;
else if (ch =='D'||'G')
n=n+2;
else if (ch =='B'||'C'||'M'||'P')
n=n+3;
else if (ch =='F'||'H'||'V'||'W'||'Y')
n=n+4;
else if (ch =='K')
n=n+5;
else if (ch =='J'||'X')
n=n+8;
else if (ch =='Q'||'Z')
n=n+10;
ch = getchar();
}
printf("The value is %d",n);
return 0;
}
因此,当我运行此代码时会发生以下情况:
输入拼字
障碍物
值为7
虽然它应该是9,因为b携带3个点,如上面代码所述,a携带1,r携带1,同样是R1点,i携带1个点,最后两个字母表各一个点,所以这是3+1+1+1+1+1+1=9像ch='D'| |'G'这样的表达式等于ch='D'| |'G'
换句话说,首先执行子表达式ch=='D'。然后使用“G”进行逻辑or运算。结果总是正确的,因为‘G’是非零的,所有非零的东西在C中都是正确的
您希望ch='D'| ch='G'来检查ch是否等于'D'或者ch是否等于'G'
这是非常基本的,每个人都会这样告诉你
在您显示的代码的特定情况下,第一次检查将始终为true,因此您不会检查任何其他情况。您忘记了获取toupper的返回值。你也没有检查它 根据man 3 toupper的说法,如果出现故障,函数将返回相同的字符 那么你的情况就不好了: 如果ch='Q'| |'Z'与如果ch='Q'| | ch='Z'不同 | |表示如果右或左条件为真,并且在第一种情况下,ch==‘Q’并不总是真的,但‘Z’总是真的 这意味着您的第一个条件: ifch='A'| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 这永远是真的 这里有一些你可以申请的修正,这可能有用
char tmp;
ch = getchar();
while(ch!='\n')
{
//Stocking in a tmp char to check return value
tmp = ch;
//Here
ch = toupper(ch);
if (ch == tmp)
{
//Error
break;
}
{...}
else if (ch =='Q'|| ch =='Z')
n += 10;
ch = getchar();
}
编辑:修改toupper的返回值 什么是拼字??你说的是拼字,但你输入的是一个字符。。请澄清,请了解缩进。还可以考虑使用空行将代码划分为块。它将使代码更易于阅读、理解和维护。此外,返回一个int。当您检查错误或getchar返回EOF时文件结束时,这一点很重要。一些你确实应该检查的东西。我没有得到正确的答案是没有帮助的。你在输入什么?你到底想干什么?预期产量是多少?这个案子应该是敏感的吗?这只允许使用大写字母谢谢这似乎解决了我的问题。除了另一个。如果我输入小写字母,它总是显示0。如果我使用大写锁定输入,答案是正确的。猜猜我的“图珀”有什么问题吗?谢谢again@NayanT函数返回新字符。它无法在适当的位置修改。啊,再次感谢。我也一定会在我的压痕上练习;谢谢。是的,我的头巾有点问题。你能解释一下包含break的if块吗?它是在检查错误吗?怎么做?再次谢谢。你好,谢谢。是的,我的头巾有点问题。你能解释一下包含break的if块吗?它是在检查错误吗?怎么做?再次感谢。正如Drumz所说,如果失败,toupper将返回“c”。因此,您必须检查ch是否等于“c”,以查看是否有错误。@Drumz您误读了。toupper不返回“c”。未进行任何转换时,它将返回输入字符。@斯塔克:好的,谢谢,我的错