#include <stdio.h>
#include <stdlib.h>
出了什么问题?
int main()
这是代码
{
char planet;
char earth;
int weight;
float mass;
int a=9;
printf("Planet Name \n");
scanf("%s",&planet);
编译器不会读取它只是跳转到else语句的if语句
if(planet=earth){
printf("Enter your weight \n");
scanf("%d",weight);
mass=weight/a;
printf("Your mass is %d",mass);}
else {
printf("Aww,snap!!!!!!We couldn't find the data");
}
return 0;}
答案 0 :(得分:0)
当你这样做时
if(planet=earth){
你做的相当于:
char x = planet=earth;
if(x){
而不是
bool x = planet == earth; 如果(X){
错误的部分是根据语言空间
if(x){
可以被编译器接受,如果x不是布尔表达式,它将被转换为布尔值,但是遵循以下标准:
所以最后
if(false){ //never met until the char given as input is a valid
...
else {
printf("Aww,snap!!!!!!We couldn't find the data");
}
答案 1 :(得分:0)
您planet
是一个char
,因此它只能容纳一个char
,但在scanf
中您尝试读取字符串。
使用%c
代替%s
scanf("%c",&planet);
变量earth
最初包含垃圾,因为您尚未为其分配任何值。
在if
声明中,您指定=
而不是比较==
。
当您阅读weight
的值时,您没有使用address of
运算符&
,因此无法读取该值。
mass=weight/a;
在这里您应该使用显式类型转换,否则您的结果将在int
中,稍后会在分配时升级到float
,但到那时您的小数值已经丢失了。
int main()
{
char planet;
char earth='A'; //at least assign something
int weight;
float mass;
int a=9;
printf("Planet Name \n");
scanf("%c",&planet);
if(planet==earth){
printf("Enter your weight \n");
scanf("%d",&weight);
mass=(float)weight/a;
printf("Your mass is %d",mass);}
else {
printf("Aww,snap!!!!!!We couldn't find the data");
}
return 0;}
我没有编译,应该工作。
答案 2 :(得分:0)
您的代码的正确版本是:
#include<stdio.h>
int main()
{
char planet;
char earth='e';//Assign a value to this variable first.
int weight;
float mass;
int a=9;
printf("Planet Name \n");
scanf("%c",&planet);
if(planet==earth){
printf("Enter your weight \n");
scanf("%d",&weight);
mass=(float)weight/a;
printf("Your mass is %f",mass);}
else {
printf("Aww,snap!!!!!!We couldn't find the data");
}
return 0;}
如果你输入&#39; e&#39;在控制台中,输入重量后,您将获得所需的答案。