1.本章学习总结
1.1 学习内容总结
-
结构体如何定义、成员如何赋值
结构体的定义以及赋值:
结构体的一般形式:
struct 结构体名
{
数据类型 成员名1;
数据类型 成员名2;
:
数据类型 成员名n;
};
1.先定义结构体类型再定义变量名:
struct 结构体名
{
成员列表;
};
struct 结构体名 变量名;
2.在定义类型的同时定义变量。
这种形式的定义的一般形式为:
struct 结构体名
{
成员列表;
}变量名;
3.直接定义结构类型变量
其一般形式为:
struct //没有结构体名
{
成员列表;
}变量名; -
结构体数组排序做法
按照结构体数组的某一项排序,那么一个结构体包含的其他元素仍保持不变。也就是说只能选择其中一项作为指标进行排序,相应的其他值对应不变化。
-
结构体指针怎么用
结构指针指向结构变量;
struct student s1;
p=&s1;
1.用p访问结构成员:
eg:
(p).num=101;
*p是p指向的结构变量
2.用指向运算符——>访问指针指向的结构成员:
p->num=101;
以上用法和s1.num=101;是等价的。 -
共用体、枚举类型做法
共用体类型数据的特点:
1.同一个内存段可以用来存放几种不同类型的成员,但是在每一瞬间只能存放其中的一种,而不是同时存放几种。换句话说,每一瞬间只有一个成员起作用,其他的成员不起作用,即不是同时都在存在和起作用。
2.共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失去作用。
3.共用体变量的地址和它的各成员的地址都是同一地址。
4.不能对共用体变量名赋值,也不能企图引用变量名来得到一个值。
5.共用体类型可以出现在结构体类型的定义中,也可以定义共用体数组。反之,结构体也可以出现在共用体类型的定义中,数组也可以作为共用体的成员。
对共用体的成员的引用与结构体成员的引用相同。但由于共用体各成员共用同一段内存空间,使用时,根据需要使用其中的某一个成员。
枚举:
枚举将同一类型的数据统一存入一个指针数组中,每个数组成员都有自己的值并且相互之间可以进行比较;
- 文件读写,文件中数据如何读进结构体数组
文件读写:fopen函数和fclose函数,要注意打开失败的情况;
读进结构体:
eg:
while(!feof(fp))
{
fscanf(fp,"%d%s%d",&student[i].num,student[i].name,&student[i].score);
i++;
}
1.2 本章学习体会
关于共用体的用法我还是不太懂,还有就是感觉好像课程走的很紧,应对考试也焦头烂额,害,难受啊老铁
周代码量:
第一周 | 第二周 |
---|---|
235 | 225 |
2.综合作业--“我爱成语”
2.1.文件介绍
头文件介绍
头文件1.h
结构体:
成语信息:成语数组和成语含义系统;
用户信息:用户姓名,做对的题目数,用户分数
函数:
读取文件和写入文件的函数;
int readIdiom(Idiom idiom[], FILE * fp);
int readUser(User user[], FILE * fp);
void writeUserRank(FILE * fp, User user[], int user_count);
void writeUser(FILE * fp, User user[], int user_count);
程序通用的函数;
void userSort(User user[], int user_count);
关于菜单的函数;
int loginMenu(User user[], int user_count);
int gameMenu(Idiom idiom[], int idiom_count, int * score);
void rankMenu(User user[], int user_count);
- 头文件代码截图:
2.函数实现文件介绍。
文件1:main.c
main函数:
进行文件的读取和退出;
登陆页面和结束页面,清屏;
定义用户数量和成语数量;
对其他函数的调用;
- 主要代码截图:
文件2:Login.c
登录界面,判断用户是否正确;
int loginMenu(User user[], int user_count);
答题界面提醒;
int gameMenu(Idiom idiom[], int idiom_count, int * score);
排行榜输出;
void rankMenu(User user[], int user_count);
- 主要代码截图:
文件3:idiom.c
文件的读写,数据读取
int readIdiom(Idiom idiom[], FILE * fp);//向文件读取数据,如果读取到文件末尾,返回非0
int readUser(User user[], FILE * fp);用户信息读取
void writeUserRank(FILE * fp, User user[], int user_count);//向文件写入数据
void writeUser(FILE * fp, User user[], int user_count);写入用户信息
- 主要代码截图:
2.2.运行结果
1.登录界面
2.游戏界面
3.排名界面
2.3大作业总结
找不到文件 | 没将成语文件拖入文件夹 |
---|---|
调试不通过 | SDL检查没关 |
输出成语含义错误 | 自定义的文件我还没改 |