题目描述:
输入一个整数 n,输出小于 n 并且能被 37 整除的所有自然数之和。
没有则输出 0。
第一个问题是为啥num和plus不初始化为0,结果就会大1,比如应该是111,输出确实112
#include
int main()
{
int i,num=0,plus=0;
scanf("%d",&num);
for(i=0;num>=37;i++)
{
num-=37;
plus+=37+i*37;
}
printf("%d",plus);
}
输入999时,实际输出为13986,预期输出为12987
先把设的num和plus初始化为0了,然后按着步骤来比如输入38,输出37是对的,输入75,输出111也是对的,但是到了999就不对了
小于 n 并且能被 37 整除的所有自然数之和
你为什么非要写个等号
为啥num和plus不初始化为0,因为你要是用 num跟plus分别来保存计算之后的下一个值和最终的和,你要是初始化之后怎么知道下一个值是多少呢
输出小于 n并且能被 37 整除的所有自然数之和,那就加个判断num>0再累加
#include<stdio.h>
int main()
{
int i,num=0,plus=0;
scanf("%d",&num);
for(i=0;num>=37;i++)
{
num-=37;
if(num>0){
plus+=37+i*37;
}
}
printf("%d",plus);
}
#include<stdio.h>
int main()
{
int i,num=0,plus=0;
scanf("%d",&num);
for(i=0;i<num;i++){
if(i%37==0){
plus+=i;
}
}
printf("%d",plus);
}
供参考:
#include<stdio.h>
int main()
{
int i, num = 0, plus = 0;
scanf("%d", &num);
for (i = 1; i < num; i++) //for (i = 0; num >= 37; i++)
{
if (i % 37 == 0)
plus += i;
}
printf("%d", plus);
return 0;
}
#include<stdio.h>
int main()
{
int i, num = 0, plus = 0;
scanf("%d", &num);
for (i = 0; num > 37; i++) //for (i = 0; num >= 37; i++)
{
num -= 37;
plus += 37 + i * 37;
}
printf("%d", plus);
return 0;
}