题目 作业1:抽奖
题目为:
产生40个330200开头、出生年份为2000-2010的身份证号。如果出现重复身份证号,则丢弃,重新生成
口从生成的身份证中抽取1个一等奖,2个二等奖,4个三等奖
口 按年龄从大到小输出身份信息,每项信息用逗号分开,每个人信息占一行,信息项如下:
身份证号
美国点日期色内名个
出生日期:样式为“2023-03-15”
年龄:样式为“10岁”
性别
奖项:样式为“一等奖”
代码如下:

// See https://aka.ms/new-console-template for more information
//身份证411425200201260056 总共有330200-2000-0126-xxxx
using System;
using System.Reflection.Emit;
using System.Text;
using static System.Net.Mime.MediaTypeNames;
struct people
{
public int year;
public int month;
public int day;
public int four_wei;//最后四位
public string win;//奖项 1(1) 2(2) 3(4)
public string sex;//看第17位,也就是倒数第二位,奇数为难,偶数为女
};
class program
{
//生成2000-2010年份
public static int generateYear()
{
StringBuilder bu = new StringBuilder();
Random rd = new Random();
int year = rd.Next(2000,2010);
bu.Append(year);
return int.Parse(bu.ToString());
}
//生成2位随机数 表示出生月
public static int generateTwo_month()
{
Random rad = new Random();
int value = rad.Next(1, 12);
return value;
}
//生成2位随机数 表示出生日
public static int generateTwo_day(int year,int month)
{
//依据年与月来决定上限下限
int limit_day = DateTime.DaysInMonth(year,month);
Random rad = new Random();
int value = rad.Next(1, limit_day);
return value;
}
//生成2位随机数 表示出生月
public static int generateFour()
{
Random rad = new Random();
int value = rad.Next(0,9999);
return value;
}
static void Main(string[] args)
{
//随机生成7个数(1-40),
//
int[] win_sum=new int[7];
for(int i=0;i<7;i++)
{
Random rad = new Random();
int value = rad.Next(1, 40);
//检查?
win_sum[i] = value;
for(int j=0;j<i;j++)
{
if(win_sum[i] == win_sum[j])
{
value = rad.Next(1, 40);
win_sum[i] = value;
}
}
// Console.WriteLine(win_sum[i]);
}
people[] peo = new people[40];
//初始化
for (int i = 0; i <40; i++)
{
peo[i].year= generateYear();
peo[i].month= generateTwo_month();
peo[i].day = generateTwo_day(peo[i].year, peo[i].month);
peo[i].four_wei = generateFour();
//检查性别 取第2位
if(((peo[i].four_wei / 10) % 10)%2==0)
{
peo[i].sex = "女";
}
else
{
peo[i].sex = "男";
}
//奖项分配
int k;
for (k=0;k<7;k++)
{
if (win_sum[k]==i+1)
{
//分配奖项
if(k==0)
{
peo[i].win = "一等奖";
break;
}
if(k>=1&& k<=2)
{
peo[i].win = "二等奖";
break;
}
if(k>=3&& k<7)
{
peo[i].win = "三等奖";
break;
}
}
}
if(k>=7)
{
peo[i].win = "没有奖";
}
Console.WriteLine("身份证号:330200"+peo[i].year+peo[i].month + peo[i].day+ peo[i].four_wei + " 出生日期:"+peo[i].year+"-" + peo[i].month+"-" + peo[i].day +"年龄"+(2023 - peo[i].year) +"性别:"+peo[i].sex+"奖项:" + peo[i].win) ;
}
//查重?如果完全一样则将该peole重新赋值
int reduce_people = 0;
//重新生成
}
}

运行示例:


