【发布时间】:2018-10-02 02:45:48
【问题描述】:
我正在尝试用 C 语言编写一个程序,该程序使用 switch 语句来决定使用哪个被调用函数来转换各种值。我的指示如下:
“创建一个程序来将华氏温度转换为摄氏温度,将摄氏温度转换为华氏温度,将英寸转换为厘米,以及将厘米转换为英寸。将您的选择放入 switch 语句中,这样它们就会出现在屏幕上,如下所示:
Select from the menu below to covert temperature or linear menus:
1 Convert Fahrenheit to Celsius
2 Convert Celsius to Fahrenheit
3 Convert Inches to Centimes
4 Convert Centimeters to Inches
5 Exit the program
Enter your selection:
将每个转换例程都设为您将从主程序中调用的函数。每个选择都应该是 switch 语句中的一个案例。请务必根据编码标准注释所有代码。
当我运行程序并输入选项后跟要转换的值时,会出现一个奇怪的数字,然后是
ProgramExiting.ProgramExiting.
这是我的代码:
#include <stdio.h>
void FahrenheitToCelsiusConversion (double conversionValue) {
double output;
output = conversionValue / (9.0 / 5.0) - 32;
printf("%d", output);
}
void CelsiusToFahrenheitConversion (double conversionValue) {
double output;
output = conversionValue * (9.0 / 5.0) + 32;
printf("%d", output);
}
void InchesToCentimetersConversion (double conversionValue) {
double output;
output = conversionValue * 2.54;
printf("%d", output);
}
void CentimetersToInchesConversion (double conversionValue) {
double output;
output = conversionValue / 2.54;
printf("%d", output);
}
int main(void) {
int conversionChoice;
double conversionValue;
printf("Select from the menu below to convert temperature or linear\n");
printf("menus:");
printf("\n");
printf("1 Convert Fahrenheit to Celsius\n");
printf("2 Convert Celsius to Fahrenheit\n");
printf("3 Convert Inches to Centimeters\n");
printf("4 Convert Centimeters to Inches\n");
printf("5 Exit the Program\n");
scanf("%d", &conversionChoice);
printf("Enter the value you wish to convert:\n");
scanf("%d", &conversionValue);
switch (conversionChoice) {
case 1:
FahrenheitToCelsiusConversion(conversionValue);
case 2:
CelsiusToFahrenheitConversion(conversionValue);
case 3:
InchesToCentimetersConversion(conversionValue);
case 4:
CentimetersToInchesConversion(conversionValue);
case 5:
printf("Program exiting.");
default:
printf("Program exiting.");
}
return 0;
}
【问题讨论】:
-
C
switch语句提供自动 fall-through 除非在每个语句中都提供了break;语句。例如,您的 case1将在失败时执行1,2,...default。 -
我已经修复了我的 switch 语句语法,并在打印语句中使用了正确的扫描标识符。我现在的问题是,当我想要小数时,我的输出都是整数。
-
您修复了所有
printf("%d", output);语句吗?应该是printf("%f", output);(我可能会将其限制为理智的"%.2f",只是为了减少默认的小数位数5或6) -
@DavidC.Rankin 我将它们更正为 %ld,但仍然得到整数。将它们全部更改为 %.2f,但是当我尝试将 5 英寸转换为厘米时,我得到了 0.00;当我试图将 35 华氏度转换为摄氏度时,我得到了 -32。出于某种原因,在将 %ld 更改为 %.2f 后,所有乘法和除法都会导致 0
-
什么都不应该是
%ld。%lf(关于扫描和打印)——先搞定,然后再担心漂亮的格式。
标签: c