第12章实验 结构体和共用体
- 题目9.3:
设某大学有下列登记表,采用最佳方式对它进行类型定义。姓名 性别 出生日期 职业状况年 月 日 所在学校 职称 职务
1、解题思路:
定义结构体日期,定义整形变量年月日。定义结构体变量工作,字符型变量大学,职务,职称。定义结构体变量学生,字符型变量姓名,性别等,别名STUDENT stu1以王刚类似输出。
2、源代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct date
{
int year;
int month;
int day;
}DATE;
typedef struct carrer
{
char college[10];
char rank[10];
char post[10];
}CARRER;
typedef struct student
{
char studentName[10];
char studentSex[10];
DATE birthday;
CARRER state;
}STUDENT;
int main()
{
STUDENT stu1={"王刚","M",{1991,5,19},{"Ningxia","montio","manage"}};
STUDENT stu2;
stu2=stu1;
printf("stu2: %8s%3si%6d/ %02d/ %02d%10s%10s%10s",stu2.studentName,stu2.studentSex,stu2.birthday.year,stu2.birthday.month,stu2.birthday.day,stu2.state.college,stu2.state.rank,stu2.state.post);
return 0;
}
3、程序运行效果截图:
- 题目2:
请定义一个时钟结构体类型,它包含’’时 分 秒’’3个成员,然后请将第7章习题7.2中用全局变量编写的时钟模拟显示程序改成用结构体指针变量参数重新编写该程序。
- 解题思路:
定义结构变量时间,定义整形变量小时,分钟,秒。指针pt指向时间,以别名TIME d调用d地址,时间初始化为0。
- 源代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct time
{
int hour;
int minute;
int second;
}TIME;
void func(TIME *pt)
{
pt->second++;
if(pt->second==60)
{
pt->second=0;
pt->minute++;
}
if(pt->minute==60)
{
pt->minute=0;
pt->hour++;
}
if(pt->hour==24)
{
pt->hour=0;
}
}
void display(TIME *pt)
{
printf("%2d:%2d:%2d \n",pt->hour,pt->minute,pt->second);
}
void deplay()
{
int t;
for(t=0;t<100000000;t++);
}
int main()
{
int i;
TIME d;
d.hour=0;
d.minute=0;
d.second=0;
for(i=0;i<100000000;i++)
{
func(&d);
display(&d);
deplay();
}
return 0;
}
3、程序运行效果截图:
- 题目3:
请重新编写的程序习题12.2,将其中的函数update
()改用整数和求余运算来实现时钟的更新。
- 解题思路:
将条件时间==0,==24,以求余,整除的形式表示,
second % 60==0 ,minute / 60==1,hour % 24 ==0。
2、源代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct time
{
int hour;
int minute;
int second;
}TIME;
void func(TIME *pt)
{
pt->second++;
if(pt->second % 60==0)
{
pt->second=0;
pt->minute++;
}
if(pt->minute / 60==1)
{
pt->minute=0;
pt->hour++;
}
if(pt->hour % 24 ==0)
{
pt->hour=0;
}
}
void display(TIME *pt)
{
printf("%2d:%2d:%2d \n",pt->hour,pt->minute,pt->second);
}
void deplay()
{
int t;
for(t=0;t<100000000;t++);
}
int main()
{
int i;
TIME d;
d.hour=0;
d.minute=0;
d.second=0;
for(i=0;i<100000000;i++)
{
func(&d);
display(&d);
deplay();
}
return 0;
}
3、程序运行效果截图:
- MOOC网课程测试结果:
1、测试1: