【发布时间】:2014-09-03 07:45:18
【问题描述】:
我正在尝试创建一个布尔标志,当输入无效的输入代码时将输出错误消息。这是课堂作业,我只是在学习 C,所以请原谅格式并通知我是否可以改进。除了在输入或输出变量不正确时输出错误消息外,我的代码一切都成功了。我相信这是代码的布尔检查部分的错误。诊断会很棒。
此代码将:
- 请求和来源货币、目标货币和来源金额
- 如果输入变量不正确,输出目的货币金额或错误信息
参数:
- 来源和目的地货币必须是加元 ($)、日元 (Y) 或欧元 (E)
- 必须使用布尔标志
提前致谢。
# include <stdio.h>
int main() {
char $ = $;
char Y = Y;
char E = E;
char in_currency, out_currency;
char flag = 1;
char new_line;
float in_value;
float out_value;
//Calculation variables
printf("Enter the source currency: ");
scanf("%c%c", &in_currency, &new_line);
printf("Enter the destination currency: ");
scanf("%c%c", &out_currency, &new_line);
if ( ( in_currency || out_currency ) != ( '$' || 'Y' || 'E' ) )
flag = 0;
printf("Enter the value: ");
scanf("%f%c", &in_value, &new_line);
//Calculations
if (flag) {
printf("%c%.2f = %c%.2f \n", in_currency, in_value, out_currency, out_value);
}
else {
printf("There was an error with the input. \n");
}
return 0;
}
【问题讨论】:
-
in_currency || out_currency ) != ( '$' || 'Y' || 'E' ) 你不能这样检查 jn 并且 p.s 你的 char $ char E char Y 没用
-
$在 C 中不是有效的变量名。变量名必须以字母或下划线开头,并且只能包含字母、数字或下划线。 -
这些语句:
char $ = $; char Y = Y; char E = E;通过使用它们自己的未初始化值初始化变量来调用未定义的行为(或者,至少没有取得任何有用的结果)。变量$在标准 C 中无效;您可能会找到一个允许它的 C 编译器(特别是如果您在 VMS 上工作)。可悲的是,这不是一个好的开始。其余代码不使用变量这一事实是另一个问题。您可以简单地删除它们。 -
请注意,如果用户输入“源货币”作为 GPB,
new_line变量将不会包含换行符。使用" %c"(space, percent, c) 作为格式字符串可能会做得更好;它会跳过前导空格(空格、制表符、换行符),然后是一个字符。对目标货币重复;它将跳过您期望的换行符,然后读取下一个非空白字符。"%f%c"格式没有什么意义;它不能保证你会读到一个换行符(而且你不会检查它)。 -
@Barmar 这是 GCC 和 MSVC 的扩展 stackoverflow.com/questions/7926394/in-variable-name
标签: c if-statement char boolean flags