二维数组转化为一维指针来使用本实例用到了随机数,链表生成,遍历,有待扩展
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 #include<math.h> 5 //定义个结构体Emp用来存放员工信息 6 typedef struct Emp 7 { 8 int eno; 9 char *ename; 10 int dno; 11 Emp *next; 12 13 }emp,*pemp; 14 //定义个结构体Emp用来存放部门信息 15 typedef struct Dept 16 { 17 int dno; 18 char *dname; 19 Dept *next; 20 }dept,*pdept; 21 /** 22 Description: 每次调用,随机产生人名所在数组的地址,用来初始化员工信息 , 23 24 Arguments: 25 26 Returns:返回数组下标地址 27 28 */ 29 char * rand_ename(char ename[12][15],int rand_num) 30 { 31 32 return (ename[0]+rand_num*15); 33 } 34 /** 35 Description: 用来随机产生0-11之间的随机数 36 37 Arguments: 38 39 Returns: 0-11之间的随机数 40 41 */ 42 int rand_num() 43 { 44 return (rand()%12)*15; 45 } 46 /** 47 Description: 用来产生0-2之间的随机数 ,用来标记部门号 使用的时候再加上11, 48 也就是部门号最终为11,12,13 49 50 Arguments: 51 52 Returns:0-2之间的随机数 53 54 */ 55 int rand_dno() 56 { 57 58 return rand()%8; 59 } 60 /** 61 Description: 初始化emp,随机产生一个emp表 62 63 Arguments: 64 65 Returns:返回pemp类型一个头指针 66 67 */ 68 pemp init_emp(char ename[][15]) 69 { 70 int num_people=10; 71 int i; 72 pemp emp_head=(pemp)malloc(sizeof(pemp)+20); 73 //申请空间失败自动退出 74 if(emp_head==NULL) 75 { 76 exit(1); 77 } 78 pemp tem=emp_head; 79 //srand放到for循环起不到效果,for循环所用时间非常短,随机数来不及产生 80 srand((unsigned)time(0)); 81 for(i=0;i<num_people ;i++ ) 82 { 83 pemp new_emp=(pemp)malloc(sizeof(pemp)+5); 84 tem->next=new_emp; 85 new_emp->eno=i+1; 86 new_emp->ename=ename[0]+rand_num(); 87 new_emp->dno=rand_dno(); 88 tem=new_emp; 89 } 90 tem->next=NULL; 91 return emp_head; 92 } 93 /** 94 Description: 初始化部门信息 95 96 Arguments: 97 98 Returns:返回pdept类型的一个头指针 99 100 */ 101 pdept init_dept(char dpartname[][15]) 102 { 103 pdept dept_head=(pdept)malloc(sizeof(pdept)); 104 if(dept_head==NULL) 105 { 106 exit(1); 107 } 108 int i; 109 pdept tem=dept_head; 110 for(i=0;i<8;i++) 111 { 112 pdept new_dept=(pdept)malloc(sizeof(pdept)); 113 tem->next=new_dept; 114 new_dept->dno=i+11; 115 new_dept->dname=(dpartname[0]+i*15); 116 tem=new_dept; 117 } 118 tem->next=NULL; 119 return dept_head; 120 } 121 int main() 122 { int i; 123 //数组用来初始化信息所用 124 char ename[12][15]={ 125 "范冰冰","贾玲","刘亦菲","凤姐","baby","曹敏","张馨予","林志玲" 126 ,"蒋勤勤","张静初","奶茶妹","搞基" 127 }; 128 char dpartname[8][15]={ 129 "蔡兴家","张家晨","崔熊华","王强","吴未","王寅","杜桂宇","彭清泉" 130 }; 131 pemp head=(pemp)malloc(sizeof(pemp)); 132 if(head==NULL) 133 { 134 exit(1); 135 } 136 head=init_emp(ename); 137 pemp temp ; 138 temp=head->next; 139 140 while(temp->next!=NULL) 141 { 142 printf("%d\t",temp->eno); 143 printf("%s\t",temp->ename); 144 printf("%s\t",dpartname[temp->dno]); 145 printf("\n"); 146 temp=temp->next; 147 } 148 printf("\n"); 149 return 0; 150 151 }
这个程序运行结果实际上是为随即产生的女明星匹配一个男神!程序可扩展空间很大!
时间: 2024-10-06 02:11:33