谁能帮我解决这个问题,我给分
CSDN怎么不能上传文件啊,我给出地址
(说明绝不是什么病毒)
题目内容全在压缩文件里
我用的是vs2008的,你可以只放入.cs文件到其它版本里面编译 --------------------编程问答-------------------- 要求说出来费不了多少时间吧。
给你个反转数字的方法参考一下:
--------------------编程问答-------------------- 参考一下:
static int getRevserNum(int i)
{
char[] ch = i.ToString().ToCharArray();
Array.Reverse(ch);
return Convert.ToInt32(new String(ch));
}
--------------------编程问答-------------------- 你的错误在判断是否均匀结构的方法上:
class Program
{
static char[] judgeChar = { '5', '6', '7', '8', '9' };
static int notSymmetrical,Times;
static void Main(string[] args)
{
for (int i = 0; i < 15000; i++)
{
Times = 0;
if (!judgeSymmetricalNumber(i.ToString())) notSymmetrical++;
Console.WriteLine(i);
}
Console.WriteLine(notSymmetrical);
Console.ReadLine();
}
//是否符合要求
static bool judgeSymmetricalNumber(string str)
{
if (isSymmetrical(str)) return true;
while(Times < 66)
{
Times++;
string s = GetSum(str,getReveserStr(str));
return judgeSymmetricalNumber(s);
}
return false;
}
//获取翻转字符串
static string getReveserStr(string str)
{
char[] ch = str.ToCharArray();
Array.Reverse(ch);
return new String(ch);
}
//判断是否为对称结构
static bool isSymmetrical(string str)
{
if(str.IndexOfAny(judgeChar) == -1) return true;
else return str.Equals(getReveserStr(str));
}
//字符串相加
static string GetSum(string strNumA, string strNumB)
{
StringBuilder sb = new StringBuilder(30);
int flag = 0;
for (int i = 0; i < strNumB.Length; i++)
{
int temp = strNumA[i] + strNumB[i] - 96;
temp += flag;
flag = (temp > 9 ? 1 : 0);
sb.Append(temp % 10);
}
if (flag == 1) sb.Append(1);
string strs = getReveserStr(sb.ToString());
return strs;
}
}
/// <summary>
/// 此数是不是小于5,如果是小于5肯定是对称
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
bool lessThanFive(string num)
{
chs = ConvertStrToArray(num);
for (int i = 0; i < chs.Length; i++)
{
if (chs[i] >= 5)
return false;
}
return true;
}
包含大于5的数字的时候也可以是对称结构的 如11611
具体参考楼上
补充:.NET技术 , C#