输入18位身份证号码, 提示号码是否是有效的,如果无效则建议一个有效身份证。
注: 前17位必须正确才能建议一个准确的ID 号。
static void Main(string[] args) { bool isValid = true; string Id = "171126199702163111"; char[] cId = Id.ToCharArray(); if (cId.Length != 18) return; int sum = 0; int iter=18; for (int i = 0; i < cId.Length-1; i++) { int c = Int32.Parse(cId[i].ToString()); int weight=Int32.Parse (Math.Pow(2, iter - 1).ToString ()) % 11; sum += c * weight; iter--; } sum %= 11; int output = Int32.Parse(sum.ToString ()); char validate = GetVerifyCode(output); if (validate == cId[cId.Length - 1]) { isValid = true; } else isValid = false; StringBuilder recommendId = new StringBuilder(); if (!isValid) { for (int i = 0; i < cId.Length - 1; i++) { recommendId.Append(cId[i]); } recommendId.Append(validate); } else { recommendId.Append("your input is valid"); } Console.WriteLine(isValid.ToString ()); Console.WriteLine("recommend {0}",recommendId .ToString ()); } static char GetVerifyCode(int output) { switch (output) { case 0: return '1'; case 1: return '0'; case 2: return 'X'; case 3: return '9'; case 4: return '8'; case 5: return '7'; case 6: return '6'; case 7: return '5'; case 8: return '4'; case 9: return '3'; case 10: return '2'; default : return 'X'; } }