注册 登录
编程论坛 C语言论坛

代码没有error,但运行时会出现照片上的问题,就是本来应该输入的,它直接跳了

张珂珂 发布于 2019-11-03 14:08, 2386 次点击
程序代码:
include<stdio.h>
int main()
{
    char sports,diet,sex;
    float faHeight,moHeight,height;
    printf("请输入用户父亲及母亲身高:");
    scanf("%f,%f",&faHeight,&moHeight);
    printf("请输入用户性别(男M,女F):");
    scanf("%c",&sex);
    if(sex=='F')
        height=(faHeight*0.923+moHeight)/2;
    else if(sex=='M')
        height=(faHeight+moHeight)*0.54;
    printf("请输入用户是否有良好的饮食习惯(Y为良好,N为不良好):\n");
    scanf("%c",&diet);
    if(diet=='Y')
        height=1.015*height;
    printf("请输入用户是否喜爱体育锻炼(Y为喜爱,N为不喜爱):");
    scanf("%c",&sports);
    if(sports=='Y')
        height=height*1.002;
    printf("用户身高预测为:%fcm\n",height);
    return 0;
}


只有本站会员才能查看附件,请 登录


10 回复
#2
张珂珂2019-11-03 14:10
题目
设 faEight为其父身高, moHeight为其母身高,身高预测公式为
男性成人时身高=( faEight+ moHeight)x0.54cm
女性成人时身高=( faHeightxe0.923+ moHeight)2cm
此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生饮食习惯,那
么可增加身高1.5%。
编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入
字符M表示男性)、父母身高(用实型变量存储, feIght为其父身高, moHeight为其
母身高)、是否喜爱体育锻炼(用字符型变量 sports存储,输入字符Y表示喜爱,输入
字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字
符Y表示良好,输入字符N表示不好),利用给定公式和身高预测方法对身高进行预测。

刚刚点回车直接发布了,忘记传题目了,求大佬!谢谢!!
#3
林月儿2019-11-03 15:13
可能是输入性别那边读取了上一个输入结束回车键的字符
你可以在printf("请输入用户性别(男M,女F):");前面加一行代码:getchar();吃掉这个回车键试试
#4
纯蓝之刃2019-11-03 15:20
程序代码:
#include<stdio.h>
int main()
{
    char sports,diet,sex;
    float faHeight,moHeight,height;
    printf("请输入用户父亲及母亲身高:");
    scanf("%f,%f",&faHeight,&moHeight);
    while(getchar()!='\n');
    printf("请输入用户性别(男M,女F):");
    scanf("%c",&sex);
    if(sex=='F')
        height=(faHeight*0.923+moHeight)/2;
    else if(sex=='M')
        height=(faHeight+moHeight)*0.54;
    while(getchar()!='\n');
    printf("请输入用户是否有良好的饮食习惯(Y为良好,N为不良好):\n");
    scanf("%c",&diet);
    if(diet=='Y')
        height=1.015*height;
    while(getchar()!='\n');
    printf("请输入用户是否喜爱体育锻炼(Y为喜爱,N为不喜爱):");
    scanf("%c",&sports);
    if(sports=='Y')
        height=height*1.002;
    printf("用户身高预测为:%fcm\n",height);
    return 0;
}
#5
张珂珂2019-11-03 15:32
回复 3楼 林月儿
好了!!谢谢大佬!!
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

可是为什么会被吃掉啊,还有不是已经有scanf了吗,为什么还能用getchar啊
(刚接触c两星期,对C语言瑟瑟发抖的我)
#6
张珂珂2019-11-03 15:33
回复 4楼 纯蓝之刃
谢谢!!
#7
张珂珂2019-11-03 15:41
回复 4楼 纯蓝之刃
为什么要用while(getchar()!='\n');啊,我之前肯定要敲回车啊,这不是当输出的不是回车时才执行循环吗?
{虽然是对的,可是想不通}
#8
forever742019-11-03 19:43
这句话解读为 吃掉缓冲区中回车以及之前的所有多余字符
#9
紫诺2019-11-03 22:15
为什么我用不同的软件输入一样的数会得到不同的结果?
#10
林月儿2019-11-03 22:28
回复 9楼 紫诺
底层实现不一样吧
#11
张珂珂2019-11-04 16:05
回复 8楼 forever74
谢谢!!
1