zxsa 发表于 2017-2-17 12:34:20

语句循环有问题,循环不了

本帖最后由 zxsa 于 2018-7-18 21:43 编辑

#include <stdio.h>
#include <math.h>

void main()
{
        double a,b;
        char c,d;
        d = 'a';
        printf("这是一个四则运算小程序\n");
        printf("按照输入数字的先后顺序来运行四则运算。\n");
        while (d!='\n')
        {
                printf("输入“数字+(-、*、/)数字”(中间不用加空格)\n");
                scanf("%lf%c%lf",&a,&c,&b);
                switch( c )
                {
                        case '+':
                                printf("%lf\n",a+b);
                                break;
                        case '-':
                                printf("%lf\n",a-b);
                                break;
                        case '*':
                                printf("%lf\n",a*b);
                                break;
                        case '/':
                                printf("%lf\n",a/b);
                                break;
                }
                printf("输入回车以结束!\n");
                scanf("%c",&d);
        }
}




请先不要管逻辑,我的想法就是类似做一个普通计算器,可以算数完毕就结束输入或继续算数下一个运算。
然,我循环不了语句,在VC++6.0编辑。

0mrli0 发表于 2017-2-17 13:44:34

本帖最后由 0mrli0 于 2017-2-17 13:47 编辑

break是跳出循环体
continue是跳出当前循环
把程序里面的break换成continue就好了
可以再看看这两个的区别

0mrli0 发表于 2017-2-17 13:46:47

额, {:10_245:} 我上面的continue打错了 continue!!!!

zxsa 发表于 2017-2-17 14:31:25

0mrli0 发表于 2017-2-17 13:46
额,我上面的continue打错了 continue!!!!

#include <stdio.h>
#include <math.h>

void main()
{
        double a,b;
        char c,d;
        d = 'a';
        printf("这是一个四则运算小程序\n");
        printf("按照输入数字的先后顺序来运行四则运算。\n");
        while (d!='\n')
        {
                printf("输入“数字+(-、*、/)数字”(中间不用加空格)\n");
                scanf("%lf%c%lf",&a,&c,&b);
                switch( c )
                {
                        case '+':
                                printf("%lf\n",a+b);
                                continue;
                        case '-':
                                printf("%lf\n",a-b);
                                continue;
                        case '*':
                                printf("%lf\n",a*b);
                                continue;
                        case '/':
                                printf("%lf\n",a/b);
                                continue;
                }
                printf("输入回车以结束!\n");
                scanf("%c",&d);
        }
}


换成这个continue之后确实是循环下去了,可是,它是一直循环了啊,我在它算数完毕之后一直按回城也结束不了啊

0mrli0 发表于 2017-2-17 15:01:49

那就是逻辑的问题了啊,看我改的#include <stdio.h>
#include <math.h>

int main()
{
    double a,b;
    char c,d;
    while(1)
    {
      printf("是否运行四则运算小程序(y/n)\n");
      d = getchar();
      if(d==89 || d==121) //y或Y
      {
            printf("输入“数字+(-、*、/)数字”(中间不用加空格)\n");
            scanf("%lf%c%lf",&a,&c,&b);
            switch( c )
            {
            case '+': printf("%lf\n",a+b); continue;
            case '-': printf("%lf\n",a-b); continue;
            case '*': printf("%lf\n",a*b); continue;
            case '/': printf("%lf\n",a/b); continue;
            default : printf("error"); continue;
            }
      }
      else if(d==78 || d==110)//N或n
      {
            break;
      }
      else
      {
            printf("error input\n");
      }
    }
    return 0;
}

zxsa 发表于 2017-2-17 15:20:03

0mrli0 发表于 2017-2-17 15:01
那就是逻辑的问题了啊,看我改的

这样是否有点显得不太简洁得体?

0mrli0 发表于 2017-2-17 15:48:33

zxsa 发表于 2017-2-17 15:20
这样是否有点显得不太简洁得体?

这就看你自己了啊,功能实现了啊。
另外你打了太多错的啊,或者多打两个换行让行与行之间的距离大点,稀疏了就好了。还有就是中文换成英文就会显得清楚些。这些都是随心所欲的东西啊,觉得不好就改,觉得还行就不改,看你自己啊

zxsa 发表于 2017-2-17 16:06:33

0mrli0 发表于 2017-2-17 15:48
这就看你自己了啊,功能实现了啊。
另外你打了太多错的啊,或者多打两个换行让行与行之间的距离大点, ...

好的,谢谢,我就自己再研究一下吧。
页: [1]
查看完整版本: 语句循环有问题,循环不了