【问题标题】:My program outputs wrong value and unknown error我的程序输出错误值和未知错误
【发布时间】:2019-08-16 18:18:44
【问题描述】:

这是我试图为我的初学者编程课程解决的问题。我需要输入零钱并计算我需要返还多少硬币。

这是我的代码:

int main(void)
{    
//prompts user for amount of change and check the value of the imput
int n = get_float("enter change owned: ");

//converts to p.
int change = n * 100; 

if ( change > 0)
{
printf("total change is: %ip\n" , change ); 
} 
else
{
    printf(" ERROR: change given needs to be positive value!\n");
}
while(n < 0); 
int i = 0;

//calculate quarters
while (change >= 250) 
{
n = change - 250;
  i++;     
}

//calculate dimes
while (change >= 100) 
{
 n = change - 100;
  i++;     
}
//calculate nickels
while (change >= 50) 
{
 n = change - 50;
  i++;     
}
//calculate pennies
while (change >= 1) 
{
 n = change - 1;
  i++;     
}
 printf("%d\n", i);    
 }

我不明白为什么当我输入 n = 2.50 并且程序需要将变化计算为 n = n *100 时,它输出结果为 200 :S。我的程序也编译了,但是当我运行它时,我得到以下消息:运行时错误:有符号整数溢出:2147483647 + 1 不能用“int”类型表示

谢谢!

【问题讨论】:

  • 你没有更新 change 变量,所以你的循环是无限的。

标签: c


【解决方案1】:
int n = get_float("enter change owned: ");

它将浮点数转换为整数,因此 2.4 变为 2。 改为:

float n = get_float("enter change owned: ");

你也可能想检查这一行:

printf("total change is: %ip\n" , change ); 

我建议打印出整数:

printf("total change is: %d\n" , change ); 

【讨论】:

    猜你喜欢
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2012-10-02
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    相关资源
    最近更新 更多