所以我正在尝试编写一个程序,要求用户输入单词或短语,然后给出单词的拼字游戏值。我遇到的问题是,当用户只输入字母" q"时,程序的while循环需要关闭。或" Q"作为单词/短语。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string>
#include<conio.h>
这是决定字母值
的函数int scrabbleValue(char* word)
{
int value = 0;
int scrabbleTot = 0;
int index = 0;
while (*(word + index) != '\0')
{
switch (toupper(*(word + index)))
{
case 'A':
case 'E':
case 'I':
case 'L':
case 'N':
case 'O':
case 'R':
case 'S':
case 'T':
case 'U':
value = 1;
break;
case 'D':
case 'G':
value = 2;
break;
case 'B':
case 'C':
case 'M':
case 'P':
value = 3;
break;
case 'F':
case 'H':
case 'V':
case 'W':
case 'Y':
value = 4;
break;
case 'K':
value = 5;
break;
case 'J':
case 'X':
value = 8;
break;
case 'Q':
case 'Z':
value = 10;
break;
}
scrabbleTot += value;
*word++;
}
return scrabbleTot;
}
好的主要陈述
int main()
{
char *ptr;
char check;
int wordvalue;
char name[100];
printf("\nEnter a word :");
scanf("%s", name);
ptr = name;
check = name[0];
wordvalue = scrabbleValue(ptr);
printf("Your word value is: %d\n", wordvalue);
这是我遇到麻烦的地方。我似乎无法得到这个循环工作正常。我尝试了字符串比较名称[0]和&#34; q&#34;但它不会编译。
while (!strcmp() || !strcmp(name, "Q"))
{
printf("\nEnter a word :");
scanf("%s", name);
ptr = name;
wordvalue = scrabbleValue(ptr);
printf("Your word value is: %d\n", wordvalue);
}
return 0;
}
答案 0 :(得分:1)
你可能想要这个主要功能。没有无用的变量且没有重复的代码,它就会简单得多。
int main()
{
int wordvalue;
char name[100];
while (1)
{
printf("\nEnter a word :");
scanf("%s", name);
if (strcmp(name, "Q") == 0)
break;
wordvalue = scrabbleValue(name);
printf("Your word value is: %d\n", wordvalue);
}
return 0;
}
这是未经测试的代码,可能无法编译,可能存在拼写错误。
答案 1 :(得分:0)
而不是while (!strcmp() || !strcmp(name, "Q")) {
,这似乎是错误的,您可以使用以下更简单的代码:
while (!(tolower(name[0]) == 'q' && name[1] == '\0')) {
答案 2 :(得分:0)
你几乎拥有它。 while
应该是:
while (strcmp(name,"q") && strcmp(name,"Q")) {
当值相等时,从strcmp
得到0
(隐式转换为false)。你希望价值既不是&#34; q&#34;也不是&#34; Q&#34;循环继续(两者都必须返回非零或真),因此只有while (true && true)
将继续。
如此完整main
将是:
int main()
{
char *ptr;
char check;
int wordvalue;
char name[100];
printf("\nEnter a word :");
scanf("%s",name);
ptr = name;
check = name[0];
wordvalue = scrabbleValue(ptr);
printf("Your word value is: %d\n",wordvalue);
while (strcmp(name,"q") && strcmp(name,"Q")) {
printf("\nEnter a word :");
scanf("%s",name);
ptr = name;
wordvalue = scrabbleValue(ptr);
printf("Your word value is: %d\n",wordvalue);
}
return 0;
}