首页 > 解决方案 > 我的程序输出错误值和未知错误

问题描述

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

这是我的代码:

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”类型表示

谢谢你!

标签: c

解决方案


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 ); 

推荐阅读