在允许输入之前循环在输入后运行多次
Loop runs multiple times after input before allowing input
所以每当我 运行 这段代码,代码 运行s 并打印出结果,然后它再次 运行s 并打印一些任意结果,一次又一次,然后它让我输入另一个循环。我找不到错误并尝试在线搜索。
感谢帮助
while (x > 0)
{
printf("Please enter your money and nickels (ex. .63 and 3 nickels). \nEnter 0 to end program:\n");
scanf("%c %lf %s %d", &dollar, &money, &andWord, &nickel_input);
if (dollar == '0')
{
printf("Thanks for using the program!");
return 0;
}
money *= 100;
money -= nickels * 5;
quarters = (money / 25);
money -= quarters * 25;
dimes = (money / 10);
money -= dimes * 10;
nickels = (money / 5);
money -= nickels * 5;
pennies = (money / 1);
money -= pennies * 1;
coins = quarters + dimes + nickels + pennies;
nickels += nickel_input;
printf("The fewest number of coins that you could have is %d:\n", coins);
printf("# quarters: %d\n", quarters);
printf("# dimes: %d\n", dimes);
printf("# nickels: %d\n", nickels);
printf("# pennies: %d\n\n", pennies);
}
顺便说一句,如果您不知道,这只是代码的摘录。
避免 scanf
在输入中留下垃圾的最好方法是读取带有 fgets
的行,然后解析带有 sscanf
的行。请务必检查两个函数的 return 值。如果到达文件末尾,fgets
将 return NULL。 sscanf
returns 成功转换的次数,在您的情况下应为 4。
所以每当我 运行 这段代码,代码 运行s 并打印出结果,然后它再次 运行s 并打印一些任意结果,一次又一次,然后它让我输入另一个循环。我找不到错误并尝试在线搜索。
感谢帮助
while (x > 0)
{
printf("Please enter your money and nickels (ex. .63 and 3 nickels). \nEnter 0 to end program:\n");
scanf("%c %lf %s %d", &dollar, &money, &andWord, &nickel_input);
if (dollar == '0')
{
printf("Thanks for using the program!");
return 0;
}
money *= 100;
money -= nickels * 5;
quarters = (money / 25);
money -= quarters * 25;
dimes = (money / 10);
money -= dimes * 10;
nickels = (money / 5);
money -= nickels * 5;
pennies = (money / 1);
money -= pennies * 1;
coins = quarters + dimes + nickels + pennies;
nickels += nickel_input;
printf("The fewest number of coins that you could have is %d:\n", coins);
printf("# quarters: %d\n", quarters);
printf("# dimes: %d\n", dimes);
printf("# nickels: %d\n", nickels);
printf("# pennies: %d\n\n", pennies);
}
顺便说一句,如果您不知道,这只是代码的摘录。
避免 scanf
在输入中留下垃圾的最好方法是读取带有 fgets
的行,然后解析带有 sscanf
的行。请务必检查两个函数的 return 值。如果到达文件末尾,fgets
将 return NULL。 sscanf
returns 成功转换的次数,在您的情况下应为 4。