作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在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/
我是一名优秀的程序员,十分优秀!