【问题标题】:C++ ; Write a program that reads in ten whole numbersC++ ;编写一个读取十个整数的程序
【发布时间】:2014-03-09 06:53:19
【问题描述】:

编写一个程序,读取十个整数并输出所有大于零的数字的总和,所有小于零的数字的总和(将是负数或零),以及所有数字的总和数字,无论是正数、负数还是零。用户只需输入十个数字,每个数字都可以输入,用户可以按任意顺序输入。您的程序不应要求用户分别输入正数和负数。现在修改这个程序,使其输出所有正数的总和、所有正数的平均值、所有非正数的总和、所有非正数的平均值、所有正数和非正数的总和,以及输入的所有数字的平均值。

这就是我目前所拥有的......

#include <iostream>
using namespace std;
int main ()
{
     int number, negative_sum=0, positive_sum=0, sum=0, average_neg, 
         average_pos, average;
     int count=0, positiveCount=0, negativeCount=0; 

     cout << "Please Input 10 whole numbers(Each number should be separated by space or Enter)\n";
     for(int i=0; i < 10; i++)
     {
         cin >> number;

     if (number >= 0 )
     {
         positive_sum += number;
         positiveCount++;  
     } 
     else     
     {
         negative_sum += number ; 
         negativeCount++; 
     } 
     }

     average_pos = positive_sum / positiveCount;
     average_neg = negative_sum / negativeCount; 
     sum = positive_sum + negative_sum;
     average = sum / count; 

     cout << "The Total sum of Positive Numbers is " << positive_sum << " and the average of \nThe postive numbers entered is ";
     cout << average_pos<< endl; 
     cout << "The Total sum of Negative Numbers is " << negative_sum << " and the average of \nThe negative numbers entered is ";
     cout << average_neg << endl; 
     cout << "The Total sum of numbers entered is " << sum << " and its average is "<< average << endl;

     system("PAUSE");
     return 0;
}

基本上它只是在我输入数字后多次打印“请输入 10 个整数(每个数字应以空格或 Enter 分隔)\n”部分。

【问题讨论】:

  • 了解数组。说得够多了……
  • for 循环应该在 if/else 部分之后关闭 - 或者这是一个错字?
  • @MikeMB 不是错字。修复它^但现在它只是“停止工作”
  • @PaulMcKenzie 即使我的老师没有教过,我也应该包括它吗?
  • @PaulMcKenzie:考虑到这是一个 C++ 问题,有比数组更好的东西要学习。

标签: c++


【解决方案1】:

您的代码的问题是在average_pos = positive_sum / positiveCount;average = sum / count;average_neg = negative_sum / negativeCount; 行中出现零除以零。为了避免这种情况,您可以添加 if 仅在 positiveCountnegativeCountcount are greater than 0 时执行除法的条件

另外,在您的代码中,您将average = sum / count; 行中的count 除以count,但您的代码中没有count 被递增。 你的for 循环也提前结束了。

正确的修改代码

#include <iostream>
using namespace std;


int main ()
{

int number, negative_sum=0, positive_sum=0, sum=0, average_neg=0, 
average_pos=0, average=0;
int count=0, positiveCount=0, negativeCount=0; 
cout << "Please Input 10 whole numbers(Each number should be separated by space or       Enter)\n";

for(int i=0;i<10;i++)
 {

 //cout<<"i is"<<i<<endl;
cin >> number;

if (number >= 0 )
 {
     positive_sum += number;
     positiveCount++;  count++;
 } 

 else     
 {
     negative_sum += number ; 
     negativeCount++; count++;
 }  
 }
if(positiveCount>0)
{
 average_pos = positive_sum / positiveCount;
}

if(negativeCount>0)
{ 
average_neg = negative_sum / negativeCount; 
}

sum = positive_sum + negative_sum;

if(count>0)
{
  average = sum / count;
} 

 cout<<average_pos;
 cout << "The Total sum of Positive Numbers is " << positive_sum << " and the average of   \nThe postive numbers entered is ";
 cout << average_pos<< endl; 
 cout << "The Total sum of Negative Numbers is " << negative_sum << " and the average of  \nThe negative numbers entered is ";
 cout << average_neg << endl; 
 cout << "The Total sum of numbers entered is " << sum << " and its average is "<< average << endl;

 system("PAUSE");
 return 0;
 }

【讨论】:

  • 在输入所有正数“负数的总和为 0,输入的负数的平均值为 8139408”后,我得到一个“负数的平均值”
  • 重新检查您是否使用了上面发布的确切代码,因为对我来说,当我输入所有正数时,它会显示“负数的总和为 0,负数的平均值为 0”
  • 酷再次感谢。必须将初始值设置为 0
【解决方案2】:
#include <iostream>
using namespace std;
int main ()
{
int number, negative_sum=0, positive_sum=0, sum=0, average_neg = 0,
average_pos = 0, average = 0;
int count=0, positiveCount=0, negativeCount=0;
cout << "Please Input 10 whole numbers(Each number should be separated by space or Enter)\n";
for(int i=0; i < 10; i++)
{
cin >> number;
if (number >= 0 )
{
positive_sum += number;
positiveCount++;
}
else
{
negative_sum += number ;
negativeCount++;
}
}
average_pos = positive_sum / positiveCount;
average_neg = negative_sum / negativeCount;
sum = positive_sum + negative_sum;
average = sum / count;
cout << "The Total sum of Positive Numbers is " << positive_sum << " and the average of \nThe postive numbers entered is ";
cout << average_pos<< endl;
cout << "The Total sum of Negative Numbers is " << negative_sum << " and the average of \nThe negative numbers entered is ";
cout << average_neg << endl;
cout << "The Total sum of numbers entered is " << sum << " and its average is "<< average << endl;
system("PAUSE");
return 0;
}

【讨论】:

  • 欢迎来到 Stack Overflow。 Stack Overflow 上不鼓励仅使用代码的答案,因为它们没有解释它是如何解决问题的。请编辑您的答案以解释此代码的作用以及它如何改进此问题的公认答案,以便对其他有类似问题的用户有用。
【解决方案3】:

试试这个

#include <iostream>
using namespace std;
int main ()
{
     int number, negative_sum=0, positive_sum=0, sum=0, average_neg = 0, 
         average_pos = 0, average = 0;
     int count=0, positiveCount=0, negativeCount=0; 

 cout << "Please Input 10 whole numbers(Each number should be separated by space or Enter)\n";
  for(int i=0; i < 10; i++)
  {
     cin >> number;
     if (number >= 0 )
     {
         positive_sum += number;
         positiveCount++;  
     } 
     else     
     {
         negative_sum += number ; 
         negativeCount++; 
     } 
  }
  average_pos = positive_sum / positiveCount;
  average_neg = negative_sum / negativeCount; 
  sum = positive_sum + negative_sum;
  average = sum / count; 

 cout << "The Total sum of Positive Numbers is " << positive_sum << " and the average of \nThe postive numbers entered is ";
 cout << average_pos<< endl; 
 cout << "The Total sum of Negative Numbers is " << negative_sum << " and the average of \nThe negative numbers entered is ";
 cout << average_neg << endl; 
 cout << "The Total sum of numbers entered is " << sum << " and its average is "<< average << endl;

 system("PAUSE");
 return 0;
}

希望这会有所帮助... :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2013-09-25
    • 2017-02-09
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多