鱼C论坛

 找回密码
 立即注册
查看: 5812|回复: 3

switch不能这样用吗?为什么我最后输符号不让输入?

[复制链接]
发表于 2014-9-18 12:05:31 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#define BOOS printf
#define SR scanf
#include <stdio.h>
void hanshu(int in, int ni)
{
        int i;
        i = (in > ni) ? in : ni;
        BOOS("整形max=%d\n", i);
}

void fuhao(int o1, char o, int o2)
{
        switch (o)
        {
        case '+':
                BOOS("%d%c%d=%d", o1, o, o2, (o1 + o2));
                break;
        case '-':
                BOOS("%d%c%d=%d", o1, o, o2, (o1 - o2));
                break;
        case '*':
                BOOS("%ld%c%ld=%ld", (long)o1, o, (long)o2, (long)(o1 * o2));
                break;
        case '/':
                BOOS("%lf%c%lf=%lf", (double)o1, o, (double)o1, (double)(o1 / o2));
                break;
        }
}

void main()
{
        int x1, y1, *ip1;
        char l;
        BOOS("输入整形:\n");
        SR("%d %d", &x1, &y1);
        ip1 = &x1;                                        /* ip1指向x1 */
        BOOS("指针ip1里是%x指向x1\n", ip1);
        BOOS("你输入的整形是%d\t%d\n", x1, y1);
        hanshu(x1, y1);/*比较x1,y1*/
        BOOS("你想让两数相(+-*/)\n输入:");
        SR("%c", &l);
        fuhao(x1, l, y1);


}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-9-18 21:06:04 | 显示全部楼层
#define BOOS printf
#define SR scanf
#include <stdio.h>
void hanshu(int in, int ni)
{
        int i;
        i = (in > ni) ? in : ni;
        BOOS("整形max=%d\n", i);
}

void fuhao(int o1, char o, int o2)
{
        switch (o)
        {
        case '+':
                BOOS("%d%c%d=%d", o1, o, o2, (o1 + o2));
                break;
        case '-':
                BOOS("%d%c%d=%d", o1, o, o2, (o1 - o2));
                break;
        case '*':
                BOOS("%ld%c%ld=%ld", (long)o1, o, (long)o2, (long)(o1 * o2));
                break;
        case '/':
                BOOS("%lf%c%lf=%lf", (double)o1, o, (double)o1, (double)(o1 / o2));
                break;
        }
}

void main()
{
        int x1, y1, *ip1;
        char l;
        BOOS("输入整形:\n");
        SR("%d %d", &x1, &y1);
        ip1 = &x1;                                        /* ip1指向x1 */
        BOOS("指针ip1里是%x指向x1\n", ip1);
        BOOS("你输入的整形是%d\t%d\n", x1, y1);
        hanshu(x1, y1);/*比较x1,y1*/
        BOOS("你想让两数相(+-*/)\n输入:");
        fflush(stdin);//原本有遗留的'\n',现在清空缓冲区
        SR("%c", &l);
        fuhao(x1, l, y1);
} 
scanf会残留一个回车,得先清理缓冲区,最近有好几个鱼油出这错哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-21 08:12:06 | 显示全部楼层
fflush(stdin);//原本有遗留的'\n',现在清空缓冲区
我有两个问题!
1:这个fflush是清除一个流的函数可以用来清除缓存?
2这个stdin是什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-9-21 10:07:35 | 显示全部楼层
昏暗___杜鹃鸟 发表于 2014-9-21 08:12
fflush(stdin);//原本有遗留的'\n',现在清空缓冲区
我有两个问题!
1:这个fflush是清除一个流的函数可 ...

stdin -- 标准输入设备
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-4 06:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表