C#如果总和等于9,则为数字的总和

时间:2016-11-15 11:00:06

标签: c# numbers sum digits

我想在控制台中写入所有3位数字,总和为9。 这是我到目前为止所做的,它不起作用:

class Program
{
    static void Main(string[] args)
    {
        int sum = 0;
        for (int n = 100; n < 1000; n++)
        {
            while (n <1000)
            {
                sum += n % 10;
                n /= 10;
                if (sum == 9)
                Console.WriteLine(sum);
            }
        }
    }
}

4 个答案:

答案 0 :(得分:3)

我使用三个循环,每个数字一个:

for (int i1 = 1; i1 < 10; i1++)
for (int i2 = 0; i2 < 10; i2++)
for (int i3 = 0; i3 < 10; i3++)
{
    if (i1 + i2 + i3 == 9)
        Console.WriteLine("{0}{1}{2}", i1, i2, i3);
}

答案 1 :(得分:2)

每次循环迭代后你都没有重置和。 sum应该在每次迭代开始时等于零。此外,while循环是错误的。试试这个:

for(int n=100;n<1000;n++)
        {
            sum=0;
            int i = n;
            while(i!=0) {
                sum += i % 10;
                i /= 10;
            }
            if (sum == 9)
            Console.WriteLine("Number {0} has digit sum of {1}", n, sum);
        }

答案 2 :(得分:2)

为什么soo复杂?

for (int n = 100; n < 1000; n++)
{
    var s1 = n/100 % 10;
    var s2 = n/10 % 10;
    var s3 = n/1 % 10;

    var sum = s1+s2+s3;
    if (sum == 9)
    Console.WriteLine(n);       
}

对于那些不喜欢简单方式的人:D

Enumerable.Range(0, 1000).Select(x => x.ToString())
    .Where(x => x.Length == 3).Select(x => new {x, sum=x.ToCharArray()
    .Select(c=>int.Parse(c.ToString())).Sum()}).Where(x=>x.sum == 9)
    .Select(x=>x.x).ToList().ForEach(Console.WriteLine);    
Oki,尝试创建非通用但最快的解决方案。

for (var i = 1; i <= 10; i++)
    for (var j = 0; j < 10; j++)
    {
        if ((i>1 && j == 0) || i < j)           
        {                   
            Console.WriteLine(i * 90 + j * 9);              
        }
    }

答案 3 :(得分:0)

我认为你正在寻找这个:

    class Program
{
    static void Main(string[] args)
    {

        for (int n = 100; n < 1000; n++)
            {
                int sum = 0;
                int num = n;
                while (num != 0)
                {
                    int r = num % 10;
                    sum += r;
                    num /= 10;
                }
                if (sum == 9)
                    Console.WriteLine(n);//.....Number whose all digit sum ==9
            }
    }
}