输入输出格式错误

#include<stdio.h>


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的条件,则执行,如果不满足,则由原程序直接跳转到下一步。程序执行结果仍不改变。

猜你喜欢

转载自blog.csdn.net/chengchaonan/article/details/79476807