我想獲取用戶輸入,將其存儲在數字數組中,然後獲取數字的美元和美分部分,將它們存儲在單獨的數組中,然後打印格式化的數字。使用單獨的陣列美元和美分印刷美元金額
這是我的代碼:
#include <stdio.h>
int main()
{
int i;
float amounts[5];
printf("Enter numbers as dollar amounts: \n");
for(i=0; i<5; i++) {
printf("Value %d: ", i+1);
scanf("%f", &amounts[i]);
}
long dollars[5];
long cents[5];
for (i=0; i<5; i++) {
dollars[i]=(int)amounts[i];
cents[i]=(amounts[i]-dollars[i]);
cents[i]*=100;
}
for (i=0; i<5; i++) {
printf("\n$%ld.", dollars[i]);
printf("%ld", cents[i]);
}
return 0;
}
我,我怎麼可能拿分,並將它們存儲在一個數組作爲一項長期的類型有點不確定。在執行程序時,我得到正確的美元,但美分部分始終爲0.任何建議?
編輯:
所以我試圖通過這樣做是爲了解決一些問題:
#include <stdio.h>
int main()
{
int i, j;
float amounts[5];
printf("Enter numbers as dollar amounts: \n");
for(i=0; i<5; i++) {
printf("Value %d: ", i+1);
scanf("%f", &amounts[i]);
}
long dollars[5];
long cents[5];
double decimal[5];
for (i=0; i<5; i++) {
dollars[i]=trunc(amounts[i]);
}
for (i=0; i<5; i++) {
printf("\n$%ld.", dollars[i]);
decimal[i]=100*(amounts[i]-dollars[i]);
cents[i]=(int)decimal[i];
if(cents[i]<10)
printf("0%ld", cents[i]);
else
printf("%ld", cents[i]);
}
return 0;
}
不過,現在我得到的一切,對於美分[I]輸出小於10 1比它應該少。所以3.06打印爲3.05美元。某些原因,3.12也是如此。另外,對於我正在使用什麼變量類型的一些批評,這是針對一個任務,它決定了要使用哪些類型。
4編寫一個程序,它將從鍵盤讀取五個值(使用一個循環)並將它們存儲在名稱數量爲float的數組中。創建名稱爲美元和美分的兩個long類型數組的兩個數組。將金額數組中的每個值的整數部分存儲在美元的相應元素中,並將金額的小數部分存儲爲以美分爲單位的兩位數整數(例如,2.75的金額[1]將導致2以美元存儲[1]和75以美分[1]存儲)。輸出型的兩列中的值,只要貨幣量(例如,2.75 $)
請不要使用浮點數的錢。將這個值存儲爲美分/便士等。 –
既然'cents [i] =(amount [i] -dollars [i]);'嘗試將分數存儲在int中,則存儲的值將始終爲零。在同一行中進行乘法:'cents [i] = 100 *(金額[i] - 美元[i]);'。仍然存在問題:由於「浮動」類型的範圍有限,諸如1000000.03之類的數字可能仍然會給予美分爲0。另外,請注意,您的代碼會將'1.09'格式化爲'1.9' - 您也必須修復此問題。 –
你做了一個從'long int'到'float'的轉換,然後你做回來了,真的嗎? – Michi