1.本章学习总结

1.1 学习内容总结

结构体如何定义、成员如何赋值

1.结构体的一般形式为:

     struct  结构体名
{
数据类型   成员名1;
数据类型   成员名2;

数据类型   成员名n;
}; 2.结构体的定义及赋值 ·1先定义结构体类型再定义变量名,这是C语言中定义结构体类型变量最常见的方式。
struct 结构体名
{
成员列表;
};
struct 结构体名 变量名;
·2在定义类型的同时定义变量。
这种形式的定义的一般形式为:
struct 结构体名
{
成员列表;
}变量名;
·3直接定义结构类型变量
其一般形式为:
struct //没有结构体名
{
成员列表;
}变量名;

结构体数组排序做法

1. 先定义结构体类型,再定义结构体变量。

struct student{

    char no[20];       //学号

    char name[20];    //姓名

     char sex[5];    //性别

    int age;          //年龄

};
struct student stu1,stu2; //此时stu1,stu2为student结构体变量 2. 定义结构体类型的同时定义结构体变量。 struct student{ char no[20]; //学号 char name[20]; //姓名 char sex[5]; //性别 int age; //年龄 } stu1,stu2;
此时还可以继续定义student结构体变量,如:
struct student stu3; 3、不指定类型名而直接定义结构体变量 struct{ char no[20]; //学号 char name[20]; //姓名 char sex[5]; //性别 int age; //年龄 } stu1,stu2;
·一般不使用这种方法,因为直接定义结构体变量stu1、stu2之后,就不能再继续定
义该类型的变量。 4、用typedef定义结构体变量
typedef struct stdudent
{ char name[20]; int age; }student_t; 定义了这个之后,下面有2中方法可以定义结构体变量
第一种: struct student student_1;
//定义了一个student_1的结构体变量
第二种:student_t student_1
//定义了一个student_1的结构体变量

结构体指针怎么用

 结构体指针:
分为“指向结构体变量的指针”和“指向结构体数组的指针” 1.首先定义一个结构体,给它取名: typedef struct node{ struct node * next;//指向下一节点 }pnode;//指针名 2.定义结构体指针与指针变量,给出几种不同的定义方式 struct node *a,b; pnode *c,d; linklist p; 这里的a即指向结构体node的指针,b为结构体变量。两者之间关系为: a=&b; 其他定义方式之间关系为: c=&d;
c=&b;
d=b;
p=a;
p=c;
p=&b;
p=&d 像这之中c和p也是指向结构体node的指针。 3.结构体成员的访问: 指针可以用 "->" 来访问成员变量,结构体对象用 "." 来访问,指针也可以用 "." 来访问, (1)结构体对象访问成员变量时: b.data=2; (2)指针的访问成员变量方式: a->data=2; (*a).data=2; 4.函数传递结构体指针和变量的方法 因为指针指向结构体的首地址,设函数为: int sum(struct node *a,struct node *p); 传递时: 指针为:sum(a,c); 结构体变量为:sum(&b,&d);

共用体、枚举类型做法

·共用体
使用同一段内存单元存放不同类型的变量,或者说使几个不同的变量共享同一段内
存的结构,称为“共用体”类型的结构,声明与定义如下:
union Data{
int n;
char ch;
double f;
};
union Data a, b, c;
(1)其使用和结构体相似,但是初始赋值只能赋一个变量的值;
(2)结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间
没有影响;
(3)共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
(4)结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在
缝隙),共用体占用的内存等于最长的成员占用的内存。
·枚举类型
所谓“枚举”就是把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。
枚举类型的定义形式为:
enum typeName{ valueName1, valueName2, valueName3, ...... }; 例如,列出一个星期有几天: enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun }; ·可以看到,我们仅仅给出了名字,却没有给出名字对应的值,这是因为枚举值默认
从 0 开始,往后逐个加 1(递增);也就是说,week 中的 Mon、Tues … Sun
对应的值分别为 0、1 … 6。
我们也可以给每个名字都指定一个值: enum week{ Mon = 1, Tues = 2, Wed = 3, Thurs = 4, Fri = 5,
Sat = 6, Sun = 7 }; 更为简单的方法是只给第一个名字指定值: enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun }; 这样枚举值就从 1 开始递增,跟上面的写法是等效的。
枚举是一种类型,通过它可以定义枚举变量: enum week a, b, c; 也可以在定义枚举类型的同时定义变量: enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } a, b, c; 有了枚举变量,就可以把列表中的值赋给它: enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun };
enum week a = Mon, b = Wed, c = Sat; 或者: enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } a = Mon,
b = Wed, c = Sat; 需要注意的是:
(1) 枚举列表中的 Mon、Tues、Wed 这些标识符的作用范围是全局的(严格来说是
main() 函数内部),不能再定义与它们名字相同的变量。
(2) Mon、Tues、Wed 等都是常量,不能对它们赋值,只能将它们的值赋给其他的
变量。
(3)枚举和宏其实非常类似:宏在预处理阶段将名字替换成对应的值,枚举在编译阶
段将名字替换成对应的值。我们可以将枚举理解为编译阶段的宏。
(4)这意味着,Mon、Tues、Wed 等都不是变量,它们不占用数据区(常量区、全局
数据区、栈区和堆区)的内存,而是直接被编译到命令里面,放到代码区,所以不
能用&取得它们的地址。

1.2 本章学习体会

 ·结构体的知识,上课的时候听不懂,还是在练习了几道pta题目才有点了解,尤其是对结构体数组的应用,
·定义结构体后,如何把数据存入结构体数组中.
·文件这一节,我刚开始学习的时候不知道它有什么作用,感觉他好像没什么用处,学习的时候也觉得看上
去好像非常简单,就是开文件,对文件进行操作,关文件这几个步骤。实际上运用起来感觉很麻烦。
·这次的大作业,也是问了好几个同学,关于文件这方面的知识,还有参考书本上的东西,才完成的。我问
了他们一些文件的知识,以及参考了他们在构建这个大作业的思路。

2.综合作业--“我爱成语”

(1) 首先,定义头文件,主要通过封装不同的函数来实现不同的函数功能

主函数

 主函数中首先通过IdiomRead函数进行函数的判断,用来判断输入的用户和密码是否是
正确的,判断后将进入成语系统,然后再进行调用界面函数和读取函数。





 函数(IdiomPut)通过fgetc函数读取成语数据,通过函数的传参过程将个GetRead中
的数据传到本函数中,进一步来判断并将所读取的数据传入到接下来的出题函数中,









 出题函数IdiomGet用随机数的生成来进行随机的生成题目,即随机的从成语库中挑选出成语,并随机
的用下划线进行替换,随机的题目进行作答,如果输入的是正确的就输出正确,如果输入错误,则进
行提醒并给出正确的成语,最后还有判断是否有退出,当输入“我要继续时就会从头开始”,当输入“我
要退出时”会调用函数NextOne()进行进一步的判断,确认退出,通过函数NextOne()的返回值进行判断





我的输入与调试结果

C语言博客06-结构体的更多相关文章

  1. C语言博客作业-结构体

    一.PTA实验作业 6-2 按等级统计学生成绩 1. 本题PTA提交列表 2. 设计思路 定义i,count存放不及格人数 for i=0 to n-1{ 判断 score的值的范围 if 100&g ...

  2. C语言博客作业--结构体,文件

    1.本章学习总结(2分) 1.1 学习内容总结 (1)结构体如何定义.成员如何赋值 结构体的一般形式为:      struct  结构体名     {      数据类型 成员名1:      数据 ...

  3. C语言博客作业—结构体

    一.PTA实验作业 题目1:结构体数组按总分排序 1. 本题PTA提交列表 2. 设计思路 void calc //函数calc求出p指针所指的结构体数组中 n 名学生各自的总分 { 定义循环变量i: ...

  4. c语言博客作业--结构体&文件

    1.本章学习总结 1.1思维导图 1.2.本章学习体会 本章学到了结构体如何构建,用typedef进行重定义结构体,结构指针,访问结构体的方式等. 文件:文件的读取,文件读写的几个函数,基本了解了文本 ...

  5. C语言第十次博客作业--结构体

    一.PTA实验作业 题目1: 结构体数组按总分排序 1. 本题PTA提交列表 2. 设计思路 求出每名学生的总分 定义i,j循环变量 for i=0 to n for j=0 to 3 p[i].su ...

  6. C语言博客作业06——结构体&文件

    C语言博客作业06--结构体&文件 1.本章学习总结 1.1思维导图 1.2.本章学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.结构体的本身并不难,但以结构体为基础的链表还是让我 ...

  7. C语言博客作业6---结构体&文件

    C语言博客作业6---结构体&文件 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容.如下图所示: 1.2.学习体会 描述本周学习感受,也可以在这里提出你不理解地方.对 ...

  8. C语言|博客作业10

    问题 回答 C语言 博客作业10 这个作业要求在哪里 作业要求 我在这个课程的目标是 熟练循环语句的用法 这个作业在哪个具体方面帮助我实现目标 pta作业 参考文献 <C语言程序设计> 1 ...

  9. OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)

    OpenGL ES着色器语言之语句和结构体(官方文档第六章) OpenGL ES着色器语言的程序块基本构成如下: 语句和声明 函数定义 选择(if-else) 迭代(for, while, do-wh ...

随机推荐

  1. 关于django数据库迁移 以及显示未检测到更改的问题

    No changes detected 显示这样的原因 数据库迁移代码步骤: 今天在所有数据库的时候对数据库进行了删除,重新迁移数据库映射,但是却发现终端给出了这样的信息. '>>> ...

  2. Sonatype安装

    https://www.cnblogs.com/wotoufahaiduo/p/11223834.html Sonatype Nexus Repository Manage admin ccf0cab ...

  3. JS基础理论相关知识

    1.XHTML和HTML有什么区别 HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言最主要的不同:XHTML 元素必须被正确地嵌套.XHTML 元素必须被关闭.标签名必须用 ...

  4. mysql DML 数据插入,删除,更新,回退

    mysql插入,删除,更新地址:https://wenku.baidu.com/view/194645eef121dd36a32d82b1.html http://www.cnblogs.com/st ...

  5. Hive Lateral View

    一.简介 1.Lateral View 用于和UDTF函数[explode,split]结合来使用. 2.首先通过UDTF函数将数据拆分成多行,再将多行结果组合成一个支持别名的虚拟表. 3.主要解决在 ...

  6. 深入理解JVM-hotspot虚拟机对象探秘

    1.背景与大纲 在我们了解了java虚拟机的运行时数据区后,我们大概知道了虚拟机内存的概况,但是我们还是不清楚具体怎么存放的访问的: 接下来,我们将深入探讨HotSport虚拟机在java堆中对象的分 ...

  7. day 06 预科

    目录 if判断 if判断习题 for循环 for循环习题 微信机器人 if判断 # 一条狗朝你过来了,你会干吗? 判断: 如果狗是大长腿牵来的狗--->打招呼:如果是条疯狗,跑. # if:如果 ...

  8. NULLIF(EXPR1,EXPR2)

    --NULLIF(EXPR1,EXPR2):给定两个参数EXPR1和EXPR2,如果两个参数相等,则返回NULL:否则就返回第一个参数.

  9. Python入门篇-数据结构树(tree)的遍历

    Python入门篇-数据结构树(tree)的遍历 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.遍历 迭代所有元素一遍. 二.树的遍历 对树中所有元素不重复地访问一遍,也称作扫 ...

  10. PC软件/web网站/小程序/手机APP产品如何增加个人收款接口

    接入前准备 通过 XorPay 注册个人收款接口,原理是帮助你签约支付宝和微信(不需要营业执照)支持个人支付宝和个人微信支付接口,大概几分钟可以开通,开通后即可永久使用 PC 网站接入 效果:用户点击 ...