第十一章:结构体与共用体程序设计(补充)
实验时间:2009年6月1日实验地点:
实验人专业班级:
实验题目:结构体、共用体的设计。
实验目的:通过实验熟悉结构体、共用体与枚举类型的使用。
实验过程:一、课例。
例11.1对结构体变量初始化。
main()
a=;printf("no.:%ldname:%s***:%caddress:%s",}
例11.2对候选人得票的统计程序。设有3个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。
程序如下:#include <>
struct person
leader[3]=;
main()
printf("");
for(i=0;i<3;i++)
printf(“%5s:%d”,leader[i].name, leader[i].count);
例11.3指向结构体变量的指针的应用。
#include <>
main()
struct student stu_1;
struct student * p;
p=&stu_1;
stu_strcpy(stu_"li lin");
stu_'m';
stu_printf("no.:%ldname:%s***:%cscore:%f",stu_
printf("no.:%ldname:%s***:%cscore:%f",p).num,(*p).name,(*p).***, (p).score);
例11.4指向结构体数组的指针的应用。
struct student,10102,”zhang fun”,’m’,19},10104,”wang min”,’f’,20}};
main()
例11.12设有若干个人员的数据,其中有学生和教师。学生的数据中包括:
姓名、号码、性别、职业、班级。教师的数据包括:姓名、号码、性别、职业、职务。
可以看出,学生和教师所包含的数据是不同的。现要求把它们放在同一**中,见图11.25。
struct
person[2];
main()
printf("");
printf("no. name*** job class/position");
for(i=0;i<2;i++)
if(person[i].job=='s')
printf("%6d %-10s %-3c %-3c %-6d", person[i].num,person[i].name,person[i].
***,person[i].job,person[i].
else printf("%6d%-10s %-3c %-3c %-6s", person[i].num, person[i].name,person[i].
***,person[i].job,person[i].
例11.13口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中先后取出3个球,问得到3种不同色的球的可能取法,打印出每种排列的情况。
main()
enum color ;
enum color i,j,k,pri;
int n,loop;
n=0;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=n+1;
printf("%4d",n);
for (loop=1;loop<=3;loop++)
switch (loop)
case 1: pri=i;break;
case 2: pri=j;break;
case 3: pri=k;break;
default:break;
switch (pri)
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("");
printf("total:%5d",n);
关于链表:(了解)
例11.7 建立一个如图11.11所示的简单链表,它由3个学生数据的结点组成。输出各结点中的数据。
#define null 0
struct student
long num;
float score;
struct student *next;
main()
struct student a,b,c,*head,*p;
a. num=99101;
b. num=99103;
c. num=99107;
head=&a;
p=head;
do printf("%ld %5.1f",p->num,p->score);
p=p->next
} while(p!=null);
例11.8写一函数建立一个有3名学生数据的单向动态链表。
#define null 0
#define len sizeof(struct student)
struct student