2015-09-05 70 views
-2

这是我的问题...打印总数到n号

从用户输入数字n。该程序应输出从1到n的所有数字的总和,不包括5的倍数。

例如,如果用户输入13,则程序应该计算并打印数之和:1 2 3 4 6 7 8 9 11 12 13(注意5,10不包括在总和)

我做了下面的程序,但它不工作.. 任何一个可以帮助我预先感谢您...

#include <iostream> 
    using namespace std; 
    int main() 
    { 
     int inputnumber = 0; 
     int sum = 0; 
     int count= 1; 
     cout<<"Enter the number to print the SUM : "; 
     cin>>inputnumber; 

     while(count<=inputnumber) 
     { 
      if (count % 5!=0) 
      { 
       sum = sum + count; 
      } 

     } count = count +1; 
     cout<<"the sum of the numbers are : "<<sum; 

    } 
+0

我不承认错误“不工作”。 – stark

回答

0

你应该增加count内循环,而不是外面:

while(count<=inputnumber) 
{ 
    if (count % 5!=0) 
    { 
     sum = sum + count; 
    } 
    count = count +1; // here 
} 

请注意,顺便说一句,使用for循环在这里会更方便。此外,sum = sum + count可能短于sum += count

for (int count = 1; count <= inputnumber; ++count) 
{ 
    if (count % 5 != 0) 
    { 
     sum += count; 
    } 
} 
0

您需要将count + 1放入while循环中。也加上!= 0 tou你的if语句。

while(count<=inputnumber) 
     { 
      if (count % 5!=0) 
      { 
       sum = sum + count; 
      } 
     count = count +1; 
     } 
0

无需使用一个循环在所有:

总和1..n的是

n * (n+1)/2; 

的5不高于n中的倍数的总和是

5 * m * (m+1)/2 

其中m = n/5(整数devision)。因此

n * (n+1)/2 - 5 * m * (m+1)/2 
0

试试这个..

在我的病情结果是,检查ñ值不等于零%的逻辑

int sum = 0; 
int n = 16; 
for(int i=0 ; i < n ;i++) { 
    if(i%5 != 0){ 
     sum += i; 
    } 
} 
System.out.println(sum); 
0

让我们运用一些数学。我们将使用一个公式来让我们总结一个算术级数。这将使程序的方式更高效的数字更大。

总和= N(A1 +的)/ 2

凡总和的结果,n是inpnum,a1为进展的第一数目和一个是ocuppies N(该地方inpnum)。

因此,我所做的是计算所有数字从1到inpnum的总和,然后将5的所有倍数之和从5减去n。

#include <iostream> 

using namespace std; 

int main (void) 
{ 
    int inpnum, quotient, sum; 

    cout << "Enter the number to print the SUM : "; 
    cin >> inpnum; 

    // Finds the amount of multiples of 5 from 5 to n 
    quotient = inpnum/5; 

      // Sum from 1 to n  // Sum from 5 to n of multiples of 5 
    sum = (inpnum*(1+inpnum))/2 - (quotient*(5+(quotient)*5))/2; 
    cout << "The sum of the numbers is: " << sum; 
} 
0

感谢每一位,但问题就解决了。这个错误非常小。我忘了在if条件下写“()”。

#include <iostream> 
using namespace std; 
int main() 
{ 
    int inputnumber = 0; 
    int sum = 0; 
    int count= 1; 
    cout<<"Enter the number to print the SUM : "; 
    cin>>inputnumber; 

    while(count<=inputnumber) 
    { 
     if ((count % 5)!=0)//here the().. 
     { 
      sum = sum + count; 
     } 
     count = count +1; 
    } 
    cout<<"the sum of the numbers are : "<<sum; 

}