第十一章结构体与共用体程序设计 补充

发布 2019-07-24 08:44:00 阅读 4156

第十一章:结构体与共用体程序设计(补充)

实验时间: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