我一直在我的初學者C課上爲一兩天的程序工作。我已經寫了,重寫了,分解了,並且已經重寫了這些代碼,在我的幫助下搜索了所有的問題。我懷疑我做錯了很簡單,但我認爲我只是不理解。C中簡單的修改程序;不理解初始化
該計劃旨在提示收銀員提供價格,投標金額,計算變更,並告知收銀員每退回多少鈔票/硬幣。 void main(void)to change = round的代碼由我的教師提供。我明白這就是我應該如何將一個雙數轉化爲一個整數。花了很長時間才弄清楚,如果我是唯一可以用於我的scanf的格式,並且我的導師特別要求使用大量的定義。
當程序運行時,它會成功提示支付的價格和金額,但總是將輸出更改爲-2,147,483,648(我知道它是int的最低值)。但是,我不知道爲什麼它正在挑選那個價值。變化的數學=圓的,它計算付費成本,是由我的老師提供的,我沒有玩弄它。
此外,我的編譯器給我發出警告「_____用於未初始化該功能」,用於「變更列表」下列出的「二十,十,五」等。當我將它們列爲int的頂部時,我認爲我已經初始化了它們?我的教練描述事情的方式對我來說似乎有點深奧,所以我肯定我只是錯過了一些超級簡單的東西。任何關於int和int *之間差異的解釋,或者爲什麼%f在我列出的%lf之後都不起作用,因爲它們是我以前的頭痛,並獎勵了互聯網獎勵點。
在此先感謝。希望我格式化好。
#include <stdio.h>
#define TWENTY 2000
#define TEN 1000
#define FIVE 500
#define SINGLE 100
#define QUARTER 25
#define DIME 10
#define NICKEL 5
#define PENNY 1
void main(void)
{
int round(double num)
{
return (int) (num + 0.5);
}
int change, // to be paid, in cents
twenties, tens, fives, singles, quarters, dimes, nickels, pennies;
//bills and coins used
double cost, // item cost, in dollars and cents
paid; // amount paid, in dollars and cents
change = round((paid - cost) * 100.0);
//Ask for cost
printf("Enter amount cost ($): ");
scanf("%lf", &cost);
//Ask for amount paid
printf("Enter amount tendered ($): ");
scanf("%lf", &paid);
//Change list
printf("Change is: %d\n", change);
printf("$20 bills: %d\n", twenties);
printf("$10 bills: %d\n", tens);
printf("$5 bills: %d\n", fives);
printf("$1 bills: %d\n", singles);
printf("Quarters: %d\n", quarters);
printf("Dimes: %d\n", dimes);
printf("Nickels: %d\n", nickels);
printf("Pennies: %d\n", pennies);
//Calculations
twenties = (change/TWENTY);
change = (change % TWENTY);
tens = (change/TEN);
change = (change % TEN);
fives = (change/FIVE);
change = (change % FIVE);
singles = (change/SINGLE);
change = (change % SINGLE);
}
這是迄今爲止我見過的最錯誤縮進的代碼。你實際上設法採取每一行,並把它放在錯誤的縮進,這是了不起的! – 2015-03-08 20:28:06
C&P,編譯併爲我工作。發佈時是否更改了某些內容?你在Linux或Windows中編譯?(好吧,'工作',結果不好) – 2015-03-08 20:31:40
@barakmanos大聲笑。我一直都知道我是個特例...:'^)謝謝你的提高。 – Keapora 2015-03-08 22:53:39