大家好,我是一童,今天分享的是共用体 (老师学生);枚举(取小球);
1.共用体
定义:不同的变量共享同一段内存(共享成员);
形式:
union 共用体名
{
成员列表
}变量列表;
源码:
#include <stdio.h>//共用体之学生老师
#include <string.h>
#define N 10
#define M 2//人数
union Cate//共用体
{
int clas;
char position[N];
}category;
struct person/*学生:姓名,号码,性别,职业,班级;老师:姓名,号码,性别,职业,职务*/
{
char name[N];
char sex[N];
char job[N];
long phone;
union Cate category;
}P[2];//有两个元素老师,学生
void main()
{
int i;
for(i=0;i<M;i++)
{
printf("请输入人物信息 NO.%d:\n",i+1);
printf("名字:\n");
scanf("%s",&P[i].name);
printf("电话:\n");
scanf("%ld",&P[i].phone);
printf("性别: \n");
scanf("%s",&P[i].sex);
printf("职业:\n");
scanf("%s",&P[i].job);
if(strcmp(P[i].job,"student")==0)
{
printf("班级:\n");
scanf("%d",&P[i].category.clas);
}
else if(strcmp(P[i].job,"teacher")==0)
{
printf("职务:\n");
scanf("%s",&P[i].category.position);
}
else
printf("输入错误!!\n");
puts("\n");
}
printf("\n");
printf("\t姓名\t号码\t性别\t职业\t班级或职务\n");
for(i=0;i<M;i++)
{
if(strcmp(P[i].job,"student")==0)
printf("\t%s\t%ld\t%s\t%s\t%d\n",P[i].name,P[i].phone,P[i].sex,P[i].job,P[i].category.clas);
else
printf("\t%s\t%ld\t%s\t%s\t%s\n",P[i].name,P[i].phone,P[i].sex,P[i].job,P[i].category.position);
}
}
截图:
2.枚举类型
定义:把可能的值一一列举出来,变量的值只限于列举出来的值范围;
类型:enum[枚举名]{枚举元素类型};
源码:
#include <stdio.h.>//口袋有红黄蓝白黑5种颜色球若干,每次取3个(取完放回),共有多少种取法
void main()
{
enum Color{red,yellow,blue,white,black};
int i,j,k,p;
int n=0,loop;
printf("取法:\n");
for(i=red;i<=black;i++)
for(j=red;j<=black;j++)
if(i!=j)
{
for(k=red;k<=black;k++)
if(k!=i&&k!=j)
{
n++;
printf("%-4d",n);
for(loop=0;loop<3;loop++)
{
switch(loop)
{
case 0:p=i;break;
case 1:p=j;break;
case 2:p=k;break;
default:break;
}
switch(p)
{
case red:printf("%-10s","red");break;
case yellow:printf("%-10s","yellow");break;
case blue:printf("%-10s","blue");break;
case white:printf("%-10s","white");break;
case black:printf("%-10s","black");break;
default:break;
}
}
printf("\n");
}
}
printf("\n\n共有%d种取法!!\n",n);
}
截图:
若有疑问,欢迎留言!!;