一个简单的程序,对数字进行计数和求和.我怎样才能让它工作

a simple program that counts and sums digits. How can I make it work?

本文关键字:求和 工作 一个 简单 程序 数字      更新时间:2023-10-16

所以我必须编写一个简单的程序(循环),您可以在其中输入一个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';
        }
    }
}

由于您使用的循环是破坏性的(即它们使循环结束时n变为零),因此您需要将两个循环合并为一个:

int sum=0, count=0;
while(n!=0)
{
    count++;
    sum += n%10;
    n /= 10;
}

您需要在第一个循环之前保存 n 的副本才能在第二个循环中使用它。

如果您尝试获取数字中的数字和数字的 no. 的总和,请使用此代码。

#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。

我猜总和块螺钉与 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;
    }
}