for循环C#中的数字和
Digit sum in for loop C#
我写了一个方法,假设从用户那里接收一个数字,然后检查从 0 到 1000 的数字。然后它应该 return 所有数字总和等于接收到的数字。
因此,如果我输入 6,它应该 return 数字,例如 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);
}
我知道 "return(0)" 存在问题,但我不完全确定 returning 到底是什么。
您几乎完成了:唯一剩下的问题是您正在修改嵌套 while
循环内的循环计数器 i
,这会改变外循环的工作方式。
您可以通过将 i
的副本保存在另一个变量中来解决此问题,例如 ii
,然后在 while
循环中修改它:
double r;
double sum = 0;
int ii = i;
while (ii != 0) {
r = iCopy % 10;
ii /= 10;
sum = sum + r;
}
我建议尝试做这样的事情:
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
然后我得到这个结果:
我写了一个方法,假设从用户那里接收一个数字,然后检查从 0 到 1000 的数字。然后它应该 return 所有数字总和等于接收到的数字。
因此,如果我输入 6,它应该 return 数字,例如 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);
}
我知道 "return(0)" 存在问题,但我不完全确定 returning 到底是什么。
您几乎完成了:唯一剩下的问题是您正在修改嵌套 while
循环内的循环计数器 i
,这会改变外循环的工作方式。
您可以通过将 i
的副本保存在另一个变量中来解决此问题,例如 ii
,然后在 while
循环中修改它:
double r;
double sum = 0;
int ii = i;
while (ii != 0) {
r = iCopy % 10;
ii /= 10;
sum = sum + r;
}
我建议尝试做这样的事情:
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
然后我得到这个结果: