gpt4 book ai didi

c - 使用 DO-WHILE 循环时得到零答案

转载 作者:行者123 更新时间:2023-11-30 14:52:07 26 4
gpt4 key购买 nike

我尝试在do-while循环中计算tot(总费用),但我得到的只是tot=0.00?!为什么会发生这种情况?之后我收到一条消息:它说可变费用没有被初始化?

#include<stdio.h>
int main(void)
{
int cofno;
float tot=0.0;
float fee;
char option;
do{

printf("Enter cofno: ");
scanf("%d",&cofno);
if(cofno>0)
{
printf("Key in (h/c): ");
scanf("%c",&option);
getchar();
switch(option)
{case 'h':fee=cofno*1.80;
break;
case 'c': fee=cofno*2.50;
break;
}

tot=tot+fee;
//the program will repeat until the user key in negative value or zero
}
}while(cofno>0);

printf("\ntot=RM%.2f \n\n",tot);
return 0;

}

最佳答案

scanf("%c",&option); 这将为您解决问题。 ' ' 是在 scanf 中提供的原因,以便它可以消耗空白字符。

之前发生的情况是,您的字符输入从之前的输入中获取了 \n

要检查输入的内容 \n 尝试输出这样的选项printf("[%c]",option); 您将看到输出

[
]

此外,您提供的 break 语句也会破坏 case 语句。不是 while 循环。你现在有无限循环。您可以通过添加条件来解决此问题。

...
tot=tot+fee;
if(option == 'c' || option =='h')
break;
...

更简单的是,您可以整体更改 while 条件并使其像这样

while(cofno<=0);

这符合您的想法程序将重复,直到用户键入负值或零更合适。

关于c - 使用 DO-WHILE 循环时得到零答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47741057/

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