C 正确计算总和

C calculating sum correctly

本文关键字:计算      更新时间:2023-10-16

每次用户输入整数时,我都可以得到总和,直到输入负数或非整数。 问题是我的总和计算是关闭的。 即用户输入 1000;总和输出 1111,然后是用户输入 2000,加起来为 3333。任何建议都是值得赞赏的。我仍然会尝试我的编码。

   #include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int j , i = 0, k = 0,number;
double sum = 0;
cout << "Enter Positive integer number: ";
while(cin >> number)
{
    cout << endl;
    if( number < 0)//test if the number is negative
    {
        cout << "Ending program since user has input a negative number" <<endl;
        break;
    }
    int temp = number;
    int p = 1;
    while( temp > 0) //counting number of digits
    {
        sum = sum+temp; //Sum attempt.
        temp /= 10;
        p *= 10;
        i++;
    }
        cout << sum << endl;
    j = i % 3;
    p /= 10;
    while( i > 0 )//display integer number with 1000 seperator
    {
        //this is giving me error
        cout << char ((number/p) +'0');
        number %= p;
        p /= 10;
        i--;
        k++;
        j--;
        if ((k % 3 == 0 && i > 0)||(j == 0 && i > 2) )
        {
            cout <<",";
            k = 0;
        }
    }
    cout << endl << endl;
    cout << "This program will exit if you input any non-integer charactersn";
    cout << "Enter another integer number: ";
}
return 0;
    }

看起来您正在尝试输出一个整数,并在 1000 个边界处插入逗号。 即:1000000 将显示为 1,000,000。

在这种情况下,最简单的方法可能不涉及数学,而只是获取 int 的字符串表示(例如atoi())并对其进行计数。 从后面向前数三个字符,插入一个逗号,重复直到字符串用完为止。

字符串处理的细节留给读者作为练习 - 看起来这毕竟是他的家庭作业。 ;-)