作为开发入门类(class)中我的第一个家庭作业的一部分,我必须用 C 语言编写一个货币兑换程序。我已经满足了大部分作业要求,但我陷入了两个部分。
1) 当我输入 30000 作为输入值时,我得到两种汇率的 2 个新值,但我应该将差异显示为最终输出。当我这样做时,四舍五入不起作用,并且差异比实际差异大一分。我知道这个问题在类里面已经讨论过,但即使当我尝试匹配文本中的示例(分割美元和美分)时,我最终还是少了一分钱。
2)当我输入5000作为输入值时,最终的差值是“16.9”,但小数点后应该有两位。无论我如何格式化输出,我都无法在 5000 条目和 30,000 条目上显示准确的格式。
由于这是我们在介绍类中的第一个作业,因此我们只能使用一些不同的参数/命令。我们不允许将 double 用于任何事情。这些说明特别提到在报告差异时使用 fabs() 获取绝对值,我在这里已经这样做了。我假设至少第一个问题是我对 fabs() 和 Floor() 的排序,但作为新手,我对在哪里寻找实际问题一无所知。任何建议或帮助将不胜感激!
// This program compares a specified quantity of US Dollars to Czech
// Korunas at two different fixed exchange rates.
#include <stdio.h>
#include <math.h>
int kor; // User-entered Korunas
const float EXRATE1 = 42; // Constant Exchange Rate 1
const float EXRATE2 = 37; // Constant Exchange Rate 2
float dolex1; // User-entered Koruna value with Exchange Rate 1 applied
float dolex2; // User-entered Koruna value with Exchange Rate 2 applied
float diff; // Difference between two values
int dollars; // Diff value expressed as absolute, dollar digit
float cents; // Diff value expressed as absolute, cents digits
FILE *diskfile;
//Main function
main(){
// Get information from user
printf("*** Koruna Exchange App ***\n\n");
printf("How many korunas do you have in your savings account?\n");
scanf("%d", &kor);
printf("The exchange information for %d korunas is now being recorded.\n", kor);
// Combine user-entered value with various exchange rates to get new values
dolex1 = kor / EXRATE1;
dolex2 = kor / EXRATE2;
// Find difference between new values, then get absolute value
diff = fabs (dolex2 - dolex1);
//Separate dollars and cents
dollars = floor (diff);
cents = (diff-dollars) * 100;
//Open and create file
diskfile = fopen("c:\\class\\test-ke.txt","w");
//Display results
fprintf(diskfile,"For %d korunas:\n", kor);
fprintf(diskfile,"At the rate of %.0f korunas per U.S. dollar,\n", EXRATE1);
fprintf(diskfile,"you have %.2f U.S. dollars.\n", dolex1);
fprintf(diskfile,"At the rate of %.0f korunas per U.S. dollar,\n", EXRATE2);
fprintf(diskfile,"you have %.2f U.S. dollars.\n\n", dolex2);
fprintf(diskfile,"The difference is %d.%.f U.S. dollars.\n", dollars, cents);
fclose(diskfile);
return 0;
}
最佳答案
请更换
fprintf(diskfile,"The difference is %d.%.f U.S. dollars.\n", dollars, cents);
通过此编辑:
fprintf(diskfile, "The difference is %.2f U.S. dollars.\n", dollars+cents/100);
关于C:家庭作业中美元/美分的舍入和输出格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51369522/