C 我的程序输出错误值和未知错误

C 我的程序输出错误值和未知错误,c,C,这是我正在为我的begginer编程课努力解决的问题。我需要输入零钱并计算我需要返还多少硬币 这是我的代码: 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)

这是我正在为我的begginer编程课努力解决的问题。我需要输入零钱并计算我需要返还多少硬币

这是我的代码:

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);    
 }
int main(无效)
{    
//提示用户更改量并检查输入值
int n=get_float(“输入change owned:”);
//转换为p。
整数变化=n*100;
如果(更改>0)
{
printf(“总更改为:%ip\n”,更改);
} 
其他的
{
printf(“错误:给定的更改需要为正值!\n”);
}
n<0;
int i=0;
//计算季度
而(更改>=250)
{
n=变化-250;
i++;
}
//计算一角硬币
而(更改>=100)
{
n=变化-100;
i++;
}
//计算镍币
而(更改>=50)
{
n=变化-50;
i++;
}
//计算便士
而(更改>=1)
{
n=变化-1;
i++;
}
printf(“%d\n”,i);
}
我不明白为什么当我输入n=2.50,程序需要计算n=n*100的变化时,它会输出200:S的结果。我的程序也会编译,但当我运行它时,我会得到以下消息:运行时错误:有符号整数溢出:2147483647+1不能用“int”类型表示

谢谢大家!

int n = get_float("enter change owned: ");
它将float转换为整数,因此2.4变为2。 改为:

float n = get_float("enter change owned: ");
此外,您可能需要检查此行:

printf("total change is: %ip\n" , change ); 
要打印整数,我建议:

printf("total change is: %d\n" , change ); 
它将float转换为整数,因此2.4变为2。 改为:

float n = get_float("enter change owned: ");
此外,您可能需要检查此行:

printf("total change is: %ip\n" , change ); 
要打印整数,我建议:

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

您不更新变更变量,因此您的循环是无限的。您不更新变更变量,因此您的循环是无限的。