标题:代码没有error,但运行时会出现照片上的问题,就是本来应该输入的,它直接跳 ...
只看楼主
张珂珂
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:60
专家分:30
注 册:2019-11-3
结帖率:100%
已结贴  问题点数:20 回复次数:10 
代码没有error,但运行时会出现照片上的问题,就是本来应该输入的,它直接跳了
程序代码:
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;
}




搜索更多相关主题的帖子: 输入 用户 scanf printf 代码 
2019-11-03 14:08
张珂珂
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:60
专家分:30
注 册:2019-11-3
得分:0 
题目
设 faEight为其父身高, moHeight为其母身高,身高预测公式为
男性成人时身高=( faEight+ moHeight)x0.54cm
女性成人时身高=( faHeightxe0.923+ moHeight)2cm
此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生饮食习惯,那
么可增加身高1.5%。
编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入
字符M表示男性)、父母身高(用实型变量存储, feIght为其父身高, moHeight为其
母身高)、是否喜爱体育锻炼(用字符型变量 sports存储,输入字符Y表示喜爱,输入
字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字
符Y表示良好,输入字符N表示不好),利用给定公式和身高预测方法对身高进行预测。

刚刚点回车直接发布了,忘记传题目了,求大佬!谢谢!!

长风吹过
2019-11-03 14:10
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:10 
可能是输入性别那边读取了上一个输入结束回车键的字符
你可以在printf("请输入用户性别(男M,女F):");前面加一行代码:getchar();吃掉这个回车键试试

剑栈风樯各苦辛,别时冰雪到时春
2019-11-03 15:13
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:10 
程序代码:
#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;
}

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-11-03 15:20
张珂珂
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:60
专家分:30
注 册:2019-11-3
得分:0 
回复 3楼 林月儿
好了!!谢谢大佬!!


可是为什么会被吃掉啊,还有不是已经有scanf了吗,为什么还能用getchar啊
(刚接触c两星期,对C语言瑟瑟发抖的我)

长风吹过
2019-11-03 15:32
张珂珂
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:60
专家分:30
注 册:2019-11-3
得分:0 
回复 4楼 纯蓝之刃
谢谢!!

长风吹过
2019-11-03 15:33
张珂珂
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:60
专家分:30
注 册:2019-11-3
得分:0 
回复 4楼 纯蓝之刃
为什么要用while(getchar()!='\n');啊,我之前肯定要敲回车啊,这不是当输出的不是回车时才执行循环吗?
{虽然是对的,可是想不通}

长风吹过
2019-11-03 15:41
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
这句话解读为 吃掉缓冲区中回车以及之前的所有多余字符

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2019-11-03 19:43
紫诺
Rank: 1
来 自:中国
等 级:新手上路
帖 子:8
专家分:0
注 册:2019-11-3
得分:0 
为什么我用不同的软件输入一样的数会得到不同的结果?
2019-11-03 22:15
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
回复 9楼 紫诺
底层实现不一样吧

剑栈风樯各苦辛,别时冰雪到时春
2019-11-03 22:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497587-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.603568 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved