所以我一直在研究iTunes U上的哈佛CS50課程,並且遇到了一些問題。代碼運行然後停止。我解釋了代碼給我帶來麻煩的問題。代碼運行正常,但在執行的一半中隨機停止
// Program calculates the amount of change you can give with the least amount of coins.
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int
main(void)
{
float change = 0, inputflag = 1;
int changeint = 0;
int quarter = 25, dime = 10, nickel = 5, penny = 1; // Coins and values
int qc = 0, dc = 0, nc = 0, pc = 0; // Coin value change (Qc = Quarter Change)
// Prompts user for input and validates.
while (inputflag == 1)
{
printf("How much change? ");
change = GetFloat();
if (change == 0)
{
printf("You have no change!\n");
inputflag = 0;
}
else if (change > 0)
{
printf("%.2f\n", change);
inputflag = 0;
}
else
{
printf("Please enter a non-negative number! \n");
}
}
程序在此停止。我運行代碼,輸入一個可接受的值,然後程序停止運行。它不會移動到下面的部分。
我已經花了最後一個小時過去了,仍然無法弄清楚什麼是讓程序運行。 inputflag值被設置爲0,從而打破第一個while循環,然後應該在下面移動,如果(更改!= 0),它不會......因此,任何建議將不勝感激。
if (change != 0) // If the change is zero, this section is skipped
{
changeint = round(100 * change);
printf("%d", changeint);
}
// The following four sections subtract coin amount, compare it, and add 1 to count.
while (changeint >= quarter);
{
changeint = changeint - quarter;
qc = qc + 1;
}
while (changeint >= dime);
{
changeint = changeint - dime;
dc = dc + 1;
}
while (changeint >= nickel);
{
changeint = changeint - nickel;
nc = nc + 1;
}
while (changeint >= penny);
{
changeint = changeint - penny;
pc = pc + 1;
}
//Prints output
printf("You owe a total of %d coins!", qc + dc + nc + pc);
}
此外,您可能需要閱讀模數('%')運算符。它會讓你擺脫這個應用程序中的很多代碼。 – duskwuff 2012-08-07 00:27:55
順便說一下,你可以使用'break;'打破循環,不需要使用變量 – 2012-08-07 00:28:08
哦,我忘了 - GetFloat語句是在一個課程獨家圖書館。但是,我不認爲這是問題,因爲它沒有突破外觀。我會嘗試'break;'語句並回報 – user1580558 2012-08-07 00:31:27