循环C#中的数字和

时间:2015-04-04 10:31:47

标签: c# loops for-loop sum digit

我写了I方法,假设从用户接收nubmer然后检查0到1000之间的数字。然后它应该返回所有数字总和等于收到的数字的数字。
因此,如果我输入6,它应该返回6,42,51,33,123等数字。我非常感谢帮助,因为我一直在为此而烦恼而现在。

public static double number() {
    Console.WriteLine("Enter your number! ");
    string enter = Console.ReadLine();
    double x = Convert.ToDouble(enter);        
    for (int i = 0; i < 1000; i++ ) {
        double r;
        double sum = 0;
        while (i != 0) {
            r = i % 10;
            i = i / 10;
            sum = sum + r;
        }
        if (sum == x) {
            Console.WriteLine(i + " ");
        }
    }
    return(0);
}

我知道&#34; return(0)&#34;有问题,但我不完全确定应该返回的是什么。

2 个答案:

答案 0 :(得分:1)

你几乎就在那里:唯一剩下的问题是你在嵌套的i循环中修改循环计数器while,这会改变外循环的工作。

您可以通过将i的副本保存在另一个变量(例如ii中),然后在while循环中修改它来解决此问题:

double r;
double sum = 0;
int ii = i;
while (ii != 0) {
    r = iCopy % 10;
    ii /= 10;
    sum = sum + r;
}

答案 1 :(得分:1)

我建议尝试这样做:

public static IEnumerable<int> number()
{
    Console.WriteLine("Enter your number!");
    string enter = Console.ReadLine();
    int digitSum = int.Parse(enter);
    foreach (var n in Enumerable.Range(0, 1000))
    {
        if (n.ToString().ToCharArray().Sum(c => c - '0') == digitSum)
        {
            yield return n;
        }
    }
}

当我运行并输入6时,我得到了这个结果:

result