#include <stdio.h>
#include <math.h>
int main(){
float radius;
float keliling;
float luas;
const float PI = 3.14;
char choice;
luas = 0;
keliling = 0;
printf("Luas or Keliling :\n");
scanf("%s", &choice);
if(choice = luas){
printf("Enter radius :\n");
scanf("%f", &radius);
keliling = 2 * PI * radius;
luas = PI * pow(radius, 2);
printf("Luas lingkaran adalah : %.2f\n", luas);
}
else if(choice = keliling){
printf("Enter radius :\n");
scanf("%f", &radius);
keliling = 2 * PI * radius;
luas = PI * pow(radius, 2);
printf("Keliling lingkaran adalah : %.2f\n", keliling);
}
return 0;
}
当我运行代码时,代码转到if语句,用于选择beetwen luas和keliling,我选择luas,但在我选择luas之后,有一个新条目,无论我用什么词填充该条目,它都会变成“blablabla未被识别为内部或外部命令,可操作程序或批处理文件”。
尝试查找错误并修复代码
2条答案
按热度按时间iklwldmw1#
分配与比较:
这将用
float
类型的luas
初始化choice
类型的char
。=
用于赋值,==
用于比较。也就是说,你不能用==
比较字符串,使用标准的strcmp
。==
只比较指针值。格式说明符不正确:
choice
被声明为char
类型。char
的正确格式说明符是%c
。但是,您希望用户输入一个字符串,因此scanf
将读取一个char
,并在输入缓冲区中留下尾随的垃圾,它可能会被后续的输入函数调用自动读取。而且永远不会提示您输入。00jrzges2#
代码中的问题是luas和keiling是浮点数,而你试图将它们与字符串进行比较,就像@Haris提到的那样。
而
=
是赋值。你应该使用==
来比较。无论如何,如果你愿意,你也可以使用switch(choice)
。你也应该把半径扫描从if条件中去掉。同样在下面的代码中,luas的选择是0,keliling是1。在枚举中,如果值没有明确提到,它从0开始
代码的工作版本如下所示: