int main(int argc, const char *argv[])
{
double fuheight,moheight,height1,height2,height3;
char sex,exerse,health;
printf("the fuheight:\n");
printf ("the moheight:\n");
printf("the sex:\n");
printf("the exerse:\n");
printf("the health:\n");
scanf("%lf,%lf,%c,%c,%c",&fuheight,&moheight,&sex,&exerse,&health);
错误解释:一开始写成:scanf("%f,%f",&a,&b);
sex=getchar();
exerse=getchar();
health=getchar();
那么在输入时,输入完a,b要先输入enter键,表示这一行程序输入结束,才可以进入下行的输入
如果输成a,b,sex,exerse,,,,,的形式就是错误的
避免错误的方式,直接将输入写成一行形式,可以直接使用scanf,输入数字和字符都可以
if(sex==0)
错误:变量sex内存储的是我们通过键盘输入的一个字符,字符0的ascii码值没办法与数值0直接进行比较,所以,这个时候应该与字符0进行比较
所以,应该注意的是:
当遇到这样的情况:
需要判断条件是否成立
如果我们想要输入的是数值,那么从int开始,一路定义成数值
1)int sex,health;
输入也是数值
scanf("%d,%d",sex,health)
判断语句也是数值与数值的比较
if(sex==1)
因为此时sex输入的数值,一开始定义的也是数值,所以可以与数值1进行比较
2)如果我们想输入字符,那么从char开始,一路定义成字符
char sex,health
那么从键盘获取的也是以字符的形式保存在sex中
scanf("%c,%c",,)
此时可以让sex与a比较
if(sex=='a')
但注意要加上单引号,才表示字符,如果不带字符,表示变量,计算机无法识别
而你的做法,先是将sex定义成字符型变量,此时你就应该输入的是字符,但是你输入了一个不那么常规的字符1,此时字符1带着它的ASCII,然后输入的是1,所以这个1应该带上单引号,也表示字符。如果1不加单引号,表示的是一个数值。a不加单引号表示的是一个变量,如果表示字符,必须加上单引号。
应该从一开始就确定你要用字符还是数字进行比较,然后
height1=(fuheight+moheight)*0.54;
/* scanf("%d",&op);
if(op == 1)
{
height1 = height1 + height1 * 0.02;
}
scanf("%d",&op);
if(op == 1)
{
height1 = height1 + height1 * 0.15;
}
*/
}
else
{
height1=(fuheight*0.923+moheight)/2;
}
if(exerse==1)
{
height2=height1*1.02;
}
else
{
height2=height1;
}
if(health==2)
{
height3=height2*1.015;
}
else
{
height3=height2;
}
printf("the height of the child is:%lf",height3);
return 0;
}
注:如果else后面的内容没有做什么具体的内容,可以只用if,不用else后面的内容,表示如果满足if的条件,则执行,如果不满足,则由原程序直接跳转到下一步。程序执行结果仍不改变。