判断一个整数是否是对称数
源作者:追风 人气:2048
昨天到一家公司笔试,做了一道判断一个整数是否是对称数的题.要求用Pascal语言,回来后我也用C#来实现.算法如下,期望对初学C#的朋友有点帮助.这里我用了两种算法实现.
算法一,先取首个与末个数字比较,再取第二个与倒数第二个字符比较,以此类推...在每一次比较中若不相等则返回一个为false的bool值,即这个数不是对称数.具体程序如此而已下:
using System;
namespace ConsoleApplication3
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
public static void Main()
{
int a = 36455463;
bool flag;
flag = Symmetry(a);
if (flag)
Console.WriteLine(a + "是对称数!");
else
Console.WriteLine(a + "不是对称数!");
}
public static bool Symmetry(int Val)
{
string s;
s = Val.ToString();
char x, y;
bool flag = true; //如果Val是对称数flag为真,否则为假
for (int i = 0; i < s.Length / 2; i++)
{
x = s[i];
y = s[s.Length - 1 - i];
if (x != y)
{
flag = false; //不是对称数
}
}
return flag;
}
}
}
算法二,先定义一个字符串,按倒序的方式读入这个整数依次用连接字符串的文法赋给这个串.最后比较两个字符串是否相等.若不相等则返回一个为false的bool值,即这个数不是对称数.具体程序如此而已下:
using System;
namespace ConsoleApplication3
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
public static void Main()
{
int a = 36455463;
bool flag;
flag = Symmetry(a);
if (flag)
Console.WriteLine(a + "是对称数!");
else
Console.WriteLine(a + "不是对称数!");
}
public static bool Symmetry(int Val)
{
string s, x = "";
s = Val.ToString();
bool flag = true; //如果Val是对称数flag为真,否则为假
for (int i = s.Length - 1; i >= 0; i--)
{
x = x + s[i];
}
Console.WriteLine(s + " " + x);
if (s.Trim() != x.Trim())
{
flag = false; //不是对称数
}
return flag;
}
}
}