gpt4 book ai didi

c - 为什么不执行 if 条件?

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:51 25 4
gpt4 key购买 nike

这是一个菜单驱动程序,要求用户进行选择。为什么 if 条件没有执行?附上输出。创建一个要求用户输入的程序:

void main()
{
float a,b,ans=0;char ch,choice;


choice='y';

while(choice=='Y'||choice=='y')
{


printf("Enter two numbers \n");
scanf("%f %f",&a,&b);
printf("1.+for Addition\n");
printf("2.-for subtraction \n");
printf("3.*for multiplication \n ");
printf("4./for Division \n");
printf("Enter your choice of operation \n");
scanf("%c",&ch);

if(ch=='+')
ans=a+b;
else if (ch=='-')
ans=a-b;
else if(ch=='*')
ans=a*b;
else if(ch=='/')
ans=a/b;
else
{
printf("wrong choice entered\n");
}
printf("Answer is %f \n",ans);
printf("Do you want to coninue (Y/N)\n");
scanf("%c",&choice);
}

printf("program Terminated\n");
}

输出:

/* Enter two numbers
1010
22
1.+for Addition
2.-for subtraction
3.*for multiplication
4./for Division
Enter your choice of operation
wrong choice entered
Answer is 0.000000
Do you want to coninue (Y/N)
n
program Terminated
*/

以上是输出画面。它不执行操作。

最佳答案

当您输入前 2 个数字时,它们将被放入变量 a 和 b。但是在输入这两个数字后,您按下了回车键。计算机将其视为新输入,并将其放在需要输入的第一个下一个适当变量中。在这种情况下,它是您的变量 ch,而不是 +、-./或 *,ch 具有“新行”的值。如果您尝试在标准输出上将 ch 的值作为整数写入,它将写入数字 10。它是换行符的 ASCII 字符。在输入前 2 个数字后简单地添加 getchar() 将收集新的行符号,并且您的下一个 scanf 将正常工作。

顺便说一句,你最后一次输入 scanf("%c",&choice); 也有同样的问题,因为在之前的操作决定后按回车,也会导致你的程序无法正常运行。对这部分做同样的事情,或者只是在 %c 之前留下空白字符。

关于c - 为什么不执行 if 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42315726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com