c++问题,菜鸟级别,求大神

计算并输出100以内能被7整除的所有整数的个数

#include <iostream>
using namespace std;
void main()
{
int i=1,m=7,n=0;
while(n<=100)
{
n=m*i;
i++;
}
i=i-1;
cout<<"100以内能够被7整除的所有整数的个数:"<<i<<endl;
}
这个程序有什么问题啊,为什么我输不出正确答案啊?!

假设要30以内的
初始 i=1,n=0;
1 n=7 i=2;
2 n=14 i=3;
3 n=21 i=4;
4 n=28 i=5;
5 n=35 i=6;跳出
在第4次循环时,n=28 已经是30以内最大的符合条件数,n=i*7 此时的i为4, 而后你又加了两次
不知道你明白没,建议将记总数的 i 与 和7相乘的数分别记作 变量,这样这个方法的意图更容易操作
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-20
#include <iostream>
using namespace std;
void main()
{
int i=1,m=7,n=0;
while(n<=100)
{
if( n%7 == 0 )
{
    i++;
}
n++;
}
cout<<"100以内能够被7整除的所有整数的个数:"<<i<<endl;
}

追问

这个法方法我知道了,但是我想知道我的那种方法问题出在哪里啊?

第2个回答  2014-03-20
你的程序答案是15,比正确答案多了1,原因是:假设某时刻n>100,此时的i必定已经比正确答案多了1,然而你在n=m*i后又执行了i++,所以i会比正确值多2,不知道这样讲你明白否,如果要答案正确,把i++放n=m*i前面,i初始化为0就对了!
第3个回答  2014-03-20
你那是乘法吧,你不是要整除么? 、、追问

可是这样不是也能算出来么,而且还方便啊

追答

等一下,我泡一下试试

错了啊。while循环就用错了。你这个算法不合理,因为当你n值大于100之后你的循环没有停止,i的值还在增加了。增加了再去判断n的条件,i的值没有变化
最后i-1只是対一开始赋值的改变。
求采纳

追问

为什么n值大于100之后循环不停止啊?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网