122Ml 发表于 2020-8-1 13:42:25

代码错误求解答

#include <stdio.h>

int main()
{
        int i,big,sum;
        bool g;
        char Y,N;
       
        COO:printf("请输入数值:\n");
        scanf("%d",&big);
       
        for(i=1,sum=0;i<=big;i++)
        {
                sum=i+sum;
        }
        printf("1加到%d的和为%d\n",big,sum);
       
        printf("再次计算?(Y/N)\n");
        scanf("%c",&g);
        getchar ( );
        if(g == Y)
        {
                goto COO;
        }
        else
        {
                return 0;
        }
   
}
如上,输出结果“Y”时,直接结束,求解答

zltzlt 发表于 2020-8-1 13:43:08

Y 应该用单引号扩住,代表一个字符。这样试试:

#include <stdio.h>

int main()
{
    int i, big, sum;
    bool g;

COO:
    printf("请输入数值:\n");
    scanf("%d", &big);

    for (i = 1, sum = 0; i <= big; i++)
    {
      sum = i + sum;
    }
    printf("1加到%d的和为%d\n", big, sum);

    printf("再次计算?(Y/N)\n");
    scanf("%c", &g);
    getchar();
    if (g == 'Y')
    {
      goto COO;
    }
    else
    {
      return 0;
    }
}

122Ml 发表于 2020-8-1 13:44:32

zltzlt 发表于 2020-8-1 13:43
Y 应该用单引号扩住,代表一个字符。这样试试:

不行呢,应该是其他代码错误

zltzlt 发表于 2020-8-1 13:45:26

122Ml 发表于 2020-8-1 13:44
不行呢,应该是其他代码错误

g 应该为 char 类型,而不是 bool

#include <stdio.h>

int main()
{
    int i, big, sum;
    char g;

COO:
    printf("请输入数值:\n");
    scanf("%d", &big);

    for (i = 1, sum = 0; i <= big; i++)
    {
      sum = i + sum;
    }
    printf("1加到%d的和为%d\n", big, sum);

    printf("再次计算?(Y/N)\n");
    scanf("%c", &g);
    getchar();
    if (g == 'Y')
    {
      goto COO;
    }
    else
    {
      return 0;
    }
}

122Ml 发表于 2020-8-1 13:48:21

zltzlt 发表于 2020-8-1 13:45
g 应该为 char 类型,而不是 bool

确实如此,但运行依旧错误,应该是我goto自学还不过关吧(还没上课提前看了),先去学学再来理解

baige 发表于 2020-8-1 13:52:07

#include <stdio.h>

int main()
{
      int i, big, sum;
      char g;
      
      COO:printf("请输入数值:\n");
      scanf("%d",&big);
      
      for(i=1,sum=0;i<=big;i++)
      {
                sum=i+sum;
      }
      printf("1加到%d的和为%d\n",big,sum);
      
      printf("再次计算?(Y/N)\n");
      getchar();//吃掉换行符
      scanf("%c",&g);
      getchar ( );
      if(g == 'Y')
      {
                goto COO;
      }
      else
      {
                return 0;
      }
   
}

baige 发表于 2020-8-1 13:53:21

baige 发表于 2020-8-1 13:52


\n赋给g所以g不会等于Y就结束了

baige 发表于 2020-8-1 13:56:01

本帖最后由 baige 于 2020-8-1 13:58 编辑

122Ml 发表于 2020-8-1 13:48
确实如此,但运行依旧错误,应该是我goto自学还不过关吧(还没上课提前看了),先去学学再来理解

你getchar();写错地方了

baige 发表于 2020-8-1 13:57:08

zltzlt 发表于 2020-8-1 13:45
g 应该为 char 类型,而不是 bool

getchar();写在scanf("%c",&g);之前

巴巴鲁 发表于 2020-8-1 13:57:59

122Ml 发表于 2020-8-1 13:48
确实如此,但运行依旧错误,应该是我goto自学还不过关吧(还没上课提前看了),先去学学再来理解

把楼上代码19行和20行换一下位置,用getchar()缓冲换行符
goto有时候挺方便的,但不知道为什么不推荐用{:10_256:}

zltzlt 发表于 2020-8-1 13:58:05

#include <stdio.h>

int main()
{
    int i, big, sum;
    char g;

COO:
    printf("请输入数值:\n");
    scanf("%d", &big);

    for (i = 1, sum = 0; i <= big; i++)
    {
      sum = i + sum;
    }
    printf("1加到%d的和为%d\n", big, sum);

    printf("再次计算?(Y/N)\n");
    getchar();
    scanf("%c", &g);
    if (g == 'Y')
    {
      goto COO;
    }
    else
    {
      return 0;
    }
}

122Ml 发表于 2020-8-1 14:10:58

baige 发表于 2020-8-1 13:57
getchar();写在scanf("%c",&g);之前

谢啦!!☆⌒(*^-゜)v
页: [1]
查看完整版本: 代码错误求解答