在上一节我们已经学习了如何让计算机打印1~100,那如何让计算机求1~100的和呢? 你可能会说,首项加尾项的和乘以项数然后再除以2,就可以了。没错这样确实可以算出来,但是如果要求1~100以内所有7的倍数或者末尾含7的数的总和又该怎么办呢? 在求1~100的和之前我们先来解决如何求1+2+3的和。 没错你可以这样写: [mw_shl_code=c,true]#include <stdio.h>
int main()
{
int a;
a=1+2+3;
printf("%d",a);
sleep(5000);
return 0;
}[/mw_shl_code]
但是如果计算1~100也这样写岂不是太麻烦了。我们可以尝试另一种写法,如下: [mw_shl_code=c,true]#include <stdio.h>
int main()
{
int a;
a=0;
a=a+1;
a=a+2;
a=a+3;
printf("%d",a);
sleep(5000);
return 0;
}[/mw_shl_code]
你可能会说这样写岂不是更麻烦……但是我们发现在上面这段代码中,a=a+1; a=a+2; a=a+3;这三句话,基本想相同,第一次加1,第二次加2,第三次加3。我们可以把这三条语句用a=a+i来表示。然后让变量i从1到3循环就可以了。代码如下: [mw_shl_code=c,true]#include <stdio.h>
int main()
{
int a,i;
a=0;
i=1;
while(i<=3)
{
a=a+i;
i=i+1;
}
printf("%d",a);
sleep(5000);
return 0;
}[/mw_shl_code]
如果需要算1~100以内的和,我们只需要将上面代码中i<=3修改为i<=100就可以了,赶快去尝试一下吧。 如果要求1~100以内所有7的倍数或者末尾含7的数的总和又该怎么办呢?首先1~100以内所有求和我们已经会了,代码如下: [mw_shl_code=c,true]#include <stdio.h>
int main()
{
int a,i;
a=0;
i=1;
while(i<=100)
{
a=a+i;
i=i+1;
}
printf("%d",a);
sleep(5000);
return 0;
}[/mw_shl_code]
代码中变量i会从1到100每次递增1,然后每次将变量i的值累加到变量a上。这个变量i就像是一个搬运苹果的, 刚开始他只拿1个苹果,之后拿2个苹果,再之后又拿3个苹果……最后一次一下拿了100个苹果。变量a就像是一个很大很大的水果篮子,用来装这些苹果。每次拿来的苹果统统地被装进篮子里面,第一次放1个苹果进去,第二次放2个苹果,第三次放3个苹果进去……最后一次放100个苹果进去。最后篮子a中苹果的总数目就是1~100的和。所以我们最后输出了变量a的值,就是答案啦。好去试一试吧。
回答如何求1~100以内所有7的倍数或者末尾含7的数的和。此时我们不再是每次都把苹果扔进篮子里面啦,只有当苹果个数是7的倍数或者末尾含7的时候,这堆苹果才能被扔进篮子里面,所以就不能每次都执行a=a+i。此时我们需要借助if语句,来完成我们的目标。其中变量i就是每次苹果的数量,代码如下: [mw_shl_code=c,true]if(i%7==0 || i%10==7)
{
a=a+i;
}
i=i+1;
完整代码如下:
#include <stdio.h>
int main()
{
int a,i;
a=0;
i=1;
while(i<=100)
{
if(i%7==0 || i%10==7)
{
a=a+i;
}
i=i+1;
}
printf("%d",a);
sleep(5000);
return 0;
}[/mw_shl_code]
|