wz3950 发表于 2020-8-7 22:54:26

想求助你们一个基础问题,为啥这里我将sum=0定义为intl类型运行结果就出错了?

#include<stdio.h>

int main()
{
        int re, num , sum = 0;
        do
        {
                printf("请输入合法的数字:");
                re = scanf_s("%d", &num);
                sum = sum + num;
               
        }
        while (re == 1);
        printf("结果是:%d", sum);
        return 0;
}

zltzlt 发表于 2020-8-7 22:59:27

这样试试?

#include <stdio.h>

int main()
{
    int re, num, sum = 0;
    do
    {
      printf("请输入合法的数字:");
      re = scanf("%d", &num);
      if (re == 1)
            sum = sum + num;

    } while (re == 1);
    printf("结果是:%d", sum);
    return 0;
}

wz3950 发表于 2020-8-7 23:15:04

zltzlt 发表于 2020-8-7 22:59
这样试试?

这样写可以 ,不会使最后一个数多加一次,但小甲鱼给的答案是直接定义long sum=OL就可以避免多加一次最后一个数,我想知道为什么可以这样

baige 发表于 2020-8-7 23:23:14

long sum   声明 sum 是 长整型变量(long int sum).
=0L   是初始化,给 sum 赋初值 长整型 数值 0。   0L 是 长整型数值 0.
与声明int sum=0;是一回事。

baige 发表于 2020-8-7 23:37:28

刚看了一下答案,里面是输入就判断是否是合法数字
你是输入计算后再判断

baige 发表于 2020-8-7 23:39:28

你可以重新看一下答案就会发现你们写的区别了

baige 发表于 2020-8-7 23:46:02

#include <stdio.h>

int main()
{
      int num = 0;
      long sum = 0L; // 0L表示类型为long的0
      int status;

      do
      {
                printf("请输入合法的数字:");
                sum = sum + num;
                status = scanf("%d", &num);//输入之后进入判断 status是否等于1
      } while(status == 1);// 等于1说明是合法的数字, 不等于1退出循环,

      printf("结果是:%ld\n", sum);

      return 0;
}

baige 发表于 2020-8-7 23:52:48

跟sum无关,这两条语句换个顺序就好了
re = scanf_s("%d", &num);
sum = sum + num;

baige 发表于 2020-8-8 00:19:01

问题解决的话,记得评出个最佳

wz3950 发表于 2020-8-8 10:28:30

baige 发表于 2020-8-8 00:19
问题解决的话,记得评出个最佳

好的,已评为最佳了
页: [1]
查看完整版本: 想求助你们一个基础问题,为啥这里我将sum=0定义为intl类型运行结果就出错了?