低级初心者 2021-05-29 14:54 采纳率: 100%
浏览 47
已采纳

C,loop中,读取输入字符后,在if的语句中出错,请求帮助

#include <stdio.h>
#include <math.h>

float grade, ttlgrade = 0;
int count = 0;
char opt;
void AverageGrade(float grade);

int main()
{
	while(1)
	{
		printf("Do you want to enter another grade?(Y or N)\n");
		scanf("%c", &opt);
		if (opt == 121 || opt == 'Y')
		{
			break;
		}
		else if (opt == 'n' || opt == 'N')
		{
			printf("Program Ended.\n");
			break;
		}
		else
		{
			printf("Invalid input! Please re-enter!\n");
			continue;
		}
	}

	return 0;
}

各位好!我是超级小白,遇到了问题想请求大佬帮助!这是我的代码的一部分,以提示用户选择是否要输入其他成绩。 我在第一次循环输入“ a”,如下面的截图所示,得到了正确的响应。

然后,代码应该引导用户在第二个循环中输入‘opt’ 的值; 但是,我的代码不允许我在第二个循环中输入‘opt’的值,直接跳到了第三个循环,我在下面附加了屏幕截图,

它打印了两次“ Invalid ... Do ...”。 在第三个循环中,倒允许我输入变量‘opt’的值了,我输入了’N‘。 它给了我算是正确的反馈。

有没有大神能指点下我为什么,哪些地方有问题啊,谢谢!拜谢!

  • 写回答

5条回答 默认 最新

  • qfl_sdu 2021-05-29 15:06
    关注

    在终端输入z(回车)后,scanf("%c",&ch)读取到两个字符,一个是你输出的‘N’,一个是回车符,需要修改成:

    scanf("%c%*c",&ch);这样就可以了。如有帮助,请采纳一下,谢谢。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?