C# 确定n和交换n之和的所有数字是否为奇数
我需要确定n个数字和交换的n的总和的所有数字是否都是奇数 例如: 36+63=99(9和9都是奇数) 409+904=1313(1和3都是奇数) VisualStudio生成我的代码并运行,但它不返回答案C# 确定n和交换n之和的所有数字是否为奇数,c#,C#,我需要确定n个数字和交换的n的总和的所有数字是否都是奇数 例如: 36+63=99(9和9都是奇数) 409+904=1313(1和3都是奇数) VisualStudio生成我的代码并运行,但它不返回答案 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program {
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
long num = Convert.ToInt64(Console.Read());
long vol = voltea(num);
long sum = num + vol;
bool simp = simpares(sum);
if (simp == true)
Console.Write("Si");
else
Console.Write("No");
}
static private bool simpares(long x)
{
bool s = false;
long [] arreglo = new long [1000];
while ( x > 0)
{
arreglo [x % 10] ++;
x /=10;
}
for (long i=0 ; i <= arreglo.Length ; i++)
{
if (arreglo [i]%2 != 0)
s = true;
}
return s;
}
static private long voltea(long x)
{
long v = 0;
while (v > 0)
{
v = 10 * v + x % 10;
x /= 10;
}
return v;
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
long num=Convert.ToInt64(Console.Read());
长体积=伏特(num);
长和=num+vol;
bool simp=simpares(总和);
如果(simp==true)
控制台。写入(“Si”);
其他的
控制台。写入(“否”);
}
静态私有布尔simpares(长x)
{
布尔s=假;
long[]arreglo=新长[1000];
而(x>0)
{
阿雷格洛[x%10]++;
x/=10;
}
用于(长i=0;长i=0)
{
v=10*v+x%10;
x/=10;
}
返回v;
}
}
}
在我看来,你可能有一个无限循环和一个永远不会进入的循环
// because v = 0, the while will never execute
long v = 0;
while (v > 0)
{
v = 10 * v + x % 10;
x /= 10;
}
我不确定你的代码出了什么问题,但我在想一个更简单的方法是使用字符串,而不是在10之前完成所有的除法和mod
你说的“不回答”是什么意思还不太清楚 加: 在主要功能的末尾。我猜你看不到答案,因为控制台正在靠近你 编辑: 找到它:
for (long i=0 ; i <= arreglo.Length ; i++)
for(long i=0;i)你尝试了什么?你做了哪些努力来隔离问题可能存在的地方?为什么不设置断点并逐步检查代码?@Juan-这是一个真正值得本论坛讨论的问题吗?在调试模式下运行它并找出问题发生的地方。这并不能解决你的问题,但请在if(simp){}
而不是如果(simp==true){}
(冗余)x是一个整数类型,所以它会被截断,最终会达到0。你怎么会这么想呢?@Ben Voigt-老实说,我不知道。再次阅读我的回复时,我感觉到一种非常wtf的感觉。我相信混乱是因为你最初的帖子看起来像是说问题在“simpares”中函数,当你指向“voltea”函数中的一个问题时,while条件中的v应该是x。
for (long i=0 ; i <= arreglo.Length ; i++)
for (long i=0 ; i < arreglo.Length ; i++)