标题:新手求助!关于getchar()!='\n'与scanf的冲突。另外,关于%fl和%f的区别
只看楼主
HolyDumpling
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:14
专家分:10
注 册:2016-10-28
结帖率:66.67%
已结贴  问题点数:10 回复次数:2 
新手求助!关于getchar()!='\n'与scanf的冲突。另外,关于%fl和%f的区别
新手求助!关于getchar()!='\n'与scanf的冲突。另外,关于%fl和%f的区别

以下代码将//去掉则可以正确执行,加上//则会导致login()函数的scanf语句跳过执行。求解答。

程序代码:
#include<stdio.h>
void login();
void menu();
void add();
int main()
{
    char m;
    login();
    menu();
    //while(getchar()!='\n');
    printf("请输入选择:\n");
    m=getchar();
    switch(m)
    {
    case 'A':printf("a\n");break;
    case 'B':printf("b\n");break;
    case 'C':printf("c\n");break;
    }
    return 0;

}
void menu()
{
    printf("*********\n");
    printf("*   A   *\n");
    printf("*   B   *\n");
    printf("*   C   *\n");
    printf("*********\n");
}
void login()
{
    int mm;
    printf("请输入登录口令:\n");
    scanf("%d",&mm);
}


下面这段代码中,在//这一行中将%fl换成%f ,则无法得出正确结果,求教。

程序代码:
#include<stdio.h>
#include<math.h>
int san(double a,double b,double c);
int main()
{
    double x,y,z;
    int f;
    printf("请输入三角形的三边,以空格隔开:\n");
    //scanf("%lf %lf %lf",&x,&y,&z);
    f=san(x,y,z);
    if(f==1)
        printf("这是三角形!\n");
    else
        printf("这不是三角形!\n");
    return 0;

}
int san(double a,double b,double c)
{
    int m;
    if(a+b>c && b+c>a && c+a>b)
        m=1;
    else
        m=0;
    return m;
}


2016-10-28 21:00
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:10 
double  对应%lf

早知做人那么辛苦!  当初不应该下凡
2016-10-28 22:14
益达炒鸡蛋
Rank: 2
等 级:禁止发言
帖 子:15
专家分:21
注 册:2016-10-30
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2016-10-30 15:01



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




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

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