感觉C#防伪码那道编程题蛮有趣的,因此想把它拷过来。
一.实验要求
1)防伪码的组成
防伪码由以下字符组成:
0123456789ABCDEFGJKLMNPQRSTUVWXYZ
(数字1和字母I相近,数字0和O相近,所以去掉字母I和字母O。全部字母大写)
2)在命令行中输入2个参数,分别是:
1.防伪码长度
2.防伪码个数
例如:在命令行中调用程序为:学号:exe 10 10000
指的是防伪码长度为10,生成10000个防伪码。
3)防伪码的生成及注意事项
1.防伪码的长度由命令行参数决定;
2.所生成的防伪码不能重复(按照以上例子,生成了10000个防伪码,这10000个防伪码就肯定不能重复)。
主要代码:
StringBuilder sb = new StringBuilder();
string strTableChar=
"0123456789ABCDEFGHJKLMNPQRSTUVWXYZ";
//选择用HashSet,是因为里面的元素是不可重复的
HashSet<string> set = new HashSet<string>();
Random rd = new Random();
//传入2个参数,分别为防伪码长度width,防伪码个数num
int width = int.Parse(args[0]);
int num = int.Parse(args[1]);
for (; set.Count < num; )
{
for (int i = 0; i < width; i++)
{
sb.Append(strTableChar[rd.Next(0, strTableChar.Length)]);
}
set.Add(sb.ToString());
sb.Remove(0, sb.Length);
}