C新手还在学习。 程序应该在第一次启动而不需要被要求做任何事情。然后它会提示用户继续“Y / N”。我保持错误,任何人都可以告诉我为什么它不起作用我不知道如何处理我从中得到的错误。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
void theQnA(char charIn);
int main(void)
{
int answerint = 0;
char charIn;
char anwser;
printf("Enter a character to be examined: ");
scanf("%c", &charIn);
theQnA(charIn);
while (answerint == 0)
{
printf("Would you like to run it again? Y/N\n");
scanf("%c", &anwser);
if (anwser == 'y')
{
printf("Enter in another character buddy\n");
scanf("%c", &charIn);
theQnA(charIn);
}
else (anwser != 'y')
{
answerint = (answerint--);
}
}
printf("Goodbye\n");
return 0;
}
void theQnA(char charIn)
{
if (islower(charIn))
printf("You have entered in a lower case letter dude\n");
else if (isdigit(charIn))
printf("You enterd in a num man\n");
else if (isupper(charIn))
printf("Its upper case man\n");
else if (ispunct(charIn))
printf("You entered in a punctuation!\n");
else if (isspace(charIn))
printf("You enterd in a whitespace dude\n");
else
printf("control char/n");
return;
}
答案 0 :(得分:1)
你有else (anwser != 'y')
。它应该是else if (anwser != 'y')
,或者更好,只有else
。由于循环的结构,提示符Would you like to run it again? Y/N
也将打印两次。你有很多错误,但这里有一些你的循环建议。
您可以在anwser
条件下使用while
变量。 answerint
是不必要的。此外,当您键入字符并按Enter键时,scanf
(带%c
)将提取字符,但将换行符保留在缓冲区中。这意味着下一次调用scanf
将返回换行符,这将使您的程序看起来好像正在跳过输入语句。要解决此问题,请在通话中的%c
之前添加空格:
scanf(" %c", &charIn);
你的逻辑也有些不合适。看看这个例子是如何构建的。
printf("Enter a character to be examined: ");
scanf(" %c", &charIn);
theQnA(charIn);
printf("Would you like to run it again? y/n\n");
scanf(" %c", &anwser);
while (anwser == 'y')
{
printf("Enter in another character buddy: ");
scanf(" %c", &charIn);
theQnA(charIn);
printf("Would you like to run it again? y/n\n");
scanf(" %c", &anwser);
}