18131431963 发表于 2021-10-8 16:54

如何结束循环,输出最后结果?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
        int x,y,n=0,b=0;
        char c;
        printf("输入一个运算数为:\n");
        scanf("%d",&x);
       
    for(;;)
   {
    getchar();
        printf("请输入运算符(+,-,*,/): \n");
    scanf("%c",&c);
        printf("输入另一个运算数为:\n");
        scanf("%d",&y);
        if(y=='#')break;
   {          
        if(c=='+')
       b=x+y;
        else if(c=='-')
        b=x-y;
        else if(c=='*')
        b=x*y;
        else if(c=='/')
        b=x/y;
        }
        x=b;
        printf("%d\n",b);        
        }
        return 0;
}

HULANG-BTB 发表于 2021-10-8 17:50

本帖最后由 HULANG-BTB 于 2021-10-8 17:51 编辑

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
      int      x, y, n = 0, b = 0;
      char      c;
      printf( "输入一个运算数为:\n" );
      scanf( "%d", &x );

      for (;; )
      {
                getchar();
                printf( "请输入运算符(+,-,*,/): \n" );
                scanf( "%c", &c );
                printf( "输入另一个运算数为:\n" );
                scanf( "%d", &y );
                if ( y == '#' )
                        break;
                { // 这个块好像没什么用
                        if ( c == '+' )
                              b = x + y;
                        else if ( c == '-' )
                              b = x - y;
                        else if ( c == '*' )
                              b = x * y;
                        else if ( c == '/' )
                              b = x / y;
                } // 这个块好像没什么用
                x = b;
      }
      printf( "%d\n", b );
      return(0);
}

把printf语句移到循环体外面不就可以了?

田田爱崽崽 发表于 2021-10-8 17:50

是不是可以用break?

无闻无问 发表于 2021-10-8 19:35

你这for用的有意思…每个if中计算结果后,加break;

楚子沦i 发表于 2021-10-8 20:44

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
      int x,y,n=0,b=0;
      char c;
      printf("输入一个运算数为:\n");
      scanf("%d",&x);
      
    for(;;)
   {
    getchar();
      printf("请输入运算符(+,-,*,/): \n");
    scanf("%c",&c);
      printf("输入另一个运算数为:\n");
      scanf("%d",&y);
      if(y=='#')break;
   {         
      if(c=='+')
         b=x+y;
      else if(c=='-')
      b=x-y;
      else if(c=='*')
      b=x*y;
      else if(c=='/')
      b=x/y;
      }
      x=b;
      printf("%d\n",b);      
      }
      return 0;
}


你这个if(y='#')后面跟个break。。。然后后面又跟了个{。。。
写的有点问题,然后就是跳出循环是break,每个判断后面都跟个break就好了,然后如果是跳过这一轮的话是continue,推荐看一下基础的课程。然后具体的代码的话,hulang-btb大哥写好了。

小能维尼 发表于 2021-10-8 22:18

四则运算代码块之前,break之后,是不是少了else?
你目前的循环,会输出每一次的运算结果,比如1+2+3+4,先是1+2输出3,然后是3+3输出6,然后是6+4输出10。
所以把printf("%d\n",b);移动到for循环外面去,x=b; 不用,依旧赋值就行。
不过你循环的唯一结束条件,就是输入#才能break出去。直觉应该用回车

18131431963 发表于 2021-10-19 16:33

HULANG-BTB 发表于 2021-10-8 17:50
#include
#include
#include


把printf语句移到循环体外面就没有结果输出了!{:1_893:}

18131431963 发表于 2021-10-19 16:39

小能维尼 发表于 2021-10-8 22:18
四则运算代码块之前,break之后,是不是少了else?
你目前的循环,会输出每一次的运算结果,比如1+2+3+4, ...

如果不用x=b,则计算结果错误!:handshake
那个结束循环的条件不起作用!{:1_923:}

18131431963 发表于 2021-10-19 16:41

无闻无问 发表于 2021-10-8 19:35
你这for用的有意思…每个if中计算结果后,加break;

加了后显示: 'else' without a previous 'if':handshake

18131431963 发表于 2021-10-19 16:48

感谢大家回复!
页: [1]
查看完整版本: 如何结束循环,输出最后结果?