然后用scanf读入单个字符时需要注意
输入完母亲身高后会输入回车,即换行符'\n'仍留在输入缓冲区中
那么之后的scanf("%c\n", &sex)会先读出'\n',导致sex输入错误
将scanf("%c\n", &sex)改为scanf("\n%c", &sex),即可忽略缓冲区中的'\n'
之后的scanf("%c\n", &sports)和scanf("%c\n", &diet)也都改为"\n%c"
问题较多,帮你改了,再试试int
main()
{
double
f,m,y
int
f,m,y,n
char
sex,sports,diet
printf("请输入父亲身高:")
scanf("%lf",&f)
printf("请输入母亲身高:")
scanf("%lf",&m)
fflush(stdin)
printf("sex(f
,
m):")
scanf("%c",&sex)
fflush(stdin)
printf("sports(y
,
n):")
scanf("%c",&sports)
fflush(stdin)
printf("diet(y
,
n):")
scanf("%c",&diet)
//scanf("%lf\n",&y)
这句应该没用!
if
(sex=='m'
)
y=(f+m)*0.54
else
//
if
(sex=='f'
)
非男即女,这个if也没用
y=(f*0.923+m)/2
if
(sports=='y')
y=y*(1+0.02)
if
(diet=='y')
y=y*(1+0.015)
printf("y=%lfcm\n",y)
return
0
}
#include<stdio.h>int main()
{
//c语言预测子女身高只用父母的身高,其它不管。
float fq=0,mq=0,ez=0,nr=0
printf("请输入父亲母亲身高:")
scanf("%f%f",&fq,&mq)
ez = (fq+mq)*0.54
nr = ((fq*0.9)+mq)/2.0
printf("儿子 %.2f 女儿 %.2f\n",ez,nr)
return 0
}
请输入父亲母亲身高:173 156
儿子 177.66 女儿 155.85
Press any key to continue