#include <stdio.h>
int main() {
char choice;
float x,y;
start:
printf("[c] Converts Celsius -> Fahrenheit\n[f] Converts Fahrenheit -> Celsius\n\n\n");
printf("Enter Choice: ");
scanf("%c",&choice);
if (choice!='c' || choice!='f' || choice!='x') {
printf("Wrong Choice: Try Again!");
goto start;
} if (choice!=x)
printf("Input Value: ");
scanf("%f",&x);
if (choice =='c')
y = 1.8 * x + 32
else
y = (x-32) * (5/9)
printf("Result: %.2f",y);
exit:
return 0;
}
我的导师发布了这个,但是当我尝试它时,它有错误,需要帮助来解决它。
答案 0 :(得分:2)
此代码存在一些问题:
STintersect
代替goto
循环不是实现这一目标的方法。while
(if
)缺少大括号。这样,只有第一个语句执行,如果为true。其余的始终执行。if (choice != x)
。;
中的布尔逻辑不正确。if
中,您要与变量进行比较,而不是固定值。希望这些提示对您有所帮助。我不会发布正确的代码,这取决于你还在学习; - )。
答案 1 :(得分:0)
首先,您应该忘记C中有goto
语句。
包含goto
语句的所有程序,我看到包含一些IBM的源代码,其中包含许多与goto
语句相关的错误。
goto
语句使程序难以阅读,更难以维护和修改。
使用goto
语句与traffic violatins相同。:)
取代此代码段
start:
printf("[c] Converts Celsius -> Fahrenheit\n[f] Converts Fahrenheit -> Celsius\n\n\n");
printf("Enter Choice: ");
scanf("%c",&choice);
if (choice!='c' || choice!='f' || choice!='x') {
printf("Wrong Choice: Try Again!");
goto start;
}
至少在if语句
中有无效条件if (choice!='c' || choice!='f' || choice!='x')
而不是有效
if (choice!='c' && choice!='f' && choice!='x')
你可以写例如
enum { Celsius = 'c', Fahrenheit = 'f', Exit = 'x' };
char choice;
int valid_input;
do
{
printf( "[c] Converts Celsius -> Fahrenheit\n"
"[f] Converts Fahrenheit -> Celsius\n"
"[x] Exit\n\n" );
printf( "Enter Choice: " );
if ( scanf( "%c ", &choice ) != 1 ) choice = Exit;
valid_input = choice == Celsius || choice == Fahrenheit || choice == Exit;
if ( !valid_input ) puts( "Wrong Choice: Try Again!\n" );
} while ( !valid_input );
您的程序包含许多错误。列举它们的内容我将展示如何 该程序可以写成
#include <stdio.h>
int main( void )
{
enum { Celsius = 'c', Fahrenheit = 'f', Exit = 'x' };
char choice;
int valid_input;
do
{
printf( "[c] Converts Celsius -> Fahrenheit\n"
"[f] Converts Fahrenheit -> Celsius\n"
"[x] Exit\n\n" );
printf( "Enter Choice: " );
if ( scanf( "%c ", &choice ) != 1 ) choice = Exit;
valid_input = choice == Celsius || choice == Fahrenheit || choice == Exit;
if ( !valid_input ) puts( "Wrong Choice: Try Again!\n" );
} while ( !valid_input );
switch( choice )
{
float x, y;
case Celsius: case Fahrenheit:
printf( "Input Value: " );
if ( scanf( "%f", &x ) == 1 )
{
if ( choice == Celsius )
y = 1.8 * x + 32;
else
y = ( x - 32 ) * ( 5.0f / 9.0f );
printf( "Result: %.2f\n", y );
}
case Exit:
puts( "Bye!" );
break;
}
return 0;
}
如果要按顺序输入
c 20 x
然后输出看起来像
[c] Converts Celsius -> Fahrenheit
[f] Converts Fahrenheit -> Celsius
[x] Exit
Enter Choice: c
Input Value: 20
Result: 68.00
Bye!