想求助你们一个基础问题,为啥这里我将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;
} 这样试试?
#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;
} zltzlt 发表于 2020-8-7 22:59
这样试试?
这样写可以 ,不会使最后一个数多加一次,但小甲鱼给的答案是直接定义long sum=OL就可以避免多加一次最后一个数,我想知道为什么可以这样 long sum 声明 sum 是 长整型变量(long int sum).
=0L 是初始化,给 sum 赋初值 长整型 数值 0。 0L 是 长整型数值 0.
与声明int sum=0;是一回事。 刚看了一下答案,里面是输入就判断是否是合法数字
你是输入计算后再判断 你可以重新看一下答案就会发现你们写的区别了 #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;
} 跟sum无关,这两条语句换个顺序就好了
re = scanf_s("%d", &num);
sum = sum + num; 问题解决的话,记得评出个最佳 baige 发表于 2020-8-8 00:19
问题解决的话,记得评出个最佳
好的,已评为最佳了
页:
[1]