題目 作業(yè)1:抽獎
題目為:
產(chǎn)生40個330200開頭、出生年份為2000-2010的身份證號。如果出現(xiàn)重復身份證號,則丟棄,重新生成
口從生成的身份證中抽取1個一等獎,2個二等獎,4個三等獎
口 按年齡從大到小輸出身份信息,每項信息用逗號分開,每個人信息占一行,信息項如下:
身份證號
美國點日期色內(nèi)名個
出生日期:樣式為“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位,也就是倒數(shù)第二位,奇數(shù)為難,偶數(shù)為女
};
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位隨機數(shù)? 表示出生月
? ? public static int generateTwo_month()
? ? {
? ? ? ? Random rad = new Random();
? ? ? ? int value = rad.Next(1, 12);
? ? ? ? return value;
? ? }
? ? //生成2位隨機數(shù)? 表示出生日
? ? public static int generateTwo_day(int year,int month)
? ? {
? ? ? ? //依據(jù)年與月來決定上限下限
? ? ? ??
? ? ? ? int limit_day = DateTime.DaysInMonth(year,month);
? ? ? ? Random rad = new Random();
? ? ? ? int value = rad.Next(1, limit_day);
? ? ? ? return value;
? ? }
? ? //生成2位隨機數(shù)? 表示出生月
? ? public static int generateFour()
? ? {
? ? ? ? Random rad = new Random();
? ? ? ? int value = rad.Next(0,9999);
? ? ? ? return value;
? ? }
? ? static void Main(string[] args)
? ? {
? ? ? ? //隨機生成7個數(shù)(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;
? ? ? ? //重新生成
? ? }
}

運行示例:
