昏暗___杜鹃鸟 发表于 2014-9-18 12:05:31

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

#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);


}

漩涡鸣人 发表于 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会残留一个回车,得先清理缓冲区,最近有好几个鱼油出这错哦

昏暗___杜鹃鸟 发表于 2014-9-21 08:12:06

fflush(stdin);//原本有遗留的'\n',现在清空缓冲区
我有两个问题!
1:这个fflush是清除一个流的函数可以用来清除缓存?
2这个stdin是什么意思?

牡丹花下死做鬼 发表于 2014-9-21 10:07:35

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

stdin -- 标准输入设备
页: [1]
查看完整版本: switch不能这样用吗?为什么我最后输符号不让输入?