每次用户输入一个整数,直到输入负数或非整数,我都能得到总和。问题是我的总和计算是关闭的。 I.E用户投入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 characters\n";
cout << "Enter another integer number: ";
}
return 0;
}
答案 0 :(得分:0)
看起来你正试图输出一个整数,并在1000边界插入逗号。即:1000000将显示为1,000,000。
在这种情况下,接近它的最简单方法可能不涉及数学,而只是获取int的字符串表示(例如atoi()
)并计算。从后面开始,向前计数三个字符,插入一个逗号,重复直到你的字符串用完为止。
字符串处理的细节留给读者练习 - 看起来这毕竟是他的作业。 ; - )