所以我要编写一个简单的程序(循环),你可以输入一个int,它会输出数字和数字的总和。由于我在编程时非常谨慎,所以我只是在网上搜索代码并尝试将它拼凑在一起。我猜这个和块螺钉用n,但我不太确定。无论如何,如果有人能够指出错误并告诉我如何让它发挥作用,我将非常感激。
#include <iostream>
using namespace std;
int main()
{
while(1)
{
int i,p,n,sum=0; //sum block
cout<<"enter an int: ";
cin>>n;
{
while(n!=0)
{
p=n % 10;
sum+=p;
n=n/10;
}
cout<<"int digit sum: "<<sum <<endl;
}
{
int count = 0;
while(n)
{
n /= 10;
++count;
}
cout <<"number of digits: " << count << '\n';
}
}
}
答案 0 :(得分:3)
由于您使用的循环是破坏性的(即它们使n
在循环结束时变为零),您需要将两个循环合并为一个:
int sum=0, count=0;
while(n!=0)
{
count++;
sum += n%10;
n /= 10;
}
答案 1 :(得分:0)
您需要在第一个循环之前保存n的副本,以便在第二个循环中使用它。
答案 2 :(得分:0)
如果您要获取数字之和而不是数字,请使用此代码。数字中的数字。
#include <iostream>
using namespace std;
int main()
{
int i, p, n, sum=0, count = 0; //sum block
cout<<"enter an int: ";
cin>>n;
while(n!=0)
{
p=n % 10;
sum+=p;
count++;
n=n/10;
}
cout<<"int digit sum: "<<sum<<endl;
cout<<"count of digits: "<<count<<endl;
}
你的第二个while循环while(n)
将永远不会执行,因为n
的值将会变为0。
答案 3 :(得分:0)
我猜这个和块螺钉用n,但我不太确定
你猜对了:你在第一个嵌套循环中更改 n
。在n
为零之前,您不会退出该循环...所以现在它为零!
作为参考,我可能会更像这样构造它,以避免必须保持明确的副本......
#include <iostream>
using namespace std;
int sum_of_digits(int n);
int num_of_digits(int n);
int main()
{
while(1)
{
cout << "enter an int: ";
int n;
cin >> n;
cout << "sum of digits: " << sum_of_digits(n) << endl;
cout << "num of digits: " << num_of_digits(n) << endl;
}
}
int sum_of_digits(int n)
{
int sum = 0;
while(n)
{
sum += n % 10;
n /= 10;
}
return sum;
}
int num_of_digits(int n)
{
int count = 0;
while(n)
{
++count;
n /= 10;
}
}