zoukankan      html  css  js  c++  java
  • C博客06-结构体&文件

    1.本章学习总结

    1.1学习内容总结

    1.结构体如何定义?

    一般形式为:

    struct 结构名{
    类型名 结构成员名1;
    类型名 结构成员名2;
    ...
    类型名 结构成员名n;
    };
    
    struct是定义结构类型的关键字,在struct之后,自行命名一个结构体,它必须是一个合法的C标识符。大括号内的内容是结构体所包括的结构成员,也叫结构分量。

    具体案例如课本P219:

    struct student{
    int num;                    //学号
    char name[10];              //姓名
    int computer,english,math;  //三门课程成绩
    double average;             //个人平均成绩
    };
    

    2.结构体成员如何赋值?

    使用结构成员操作符"."可以引用结构成员,格式为:结构变量名.结构成员们
    且在C语言中,对结构变量成员的使用方法与同类型的变量完全相同。即可以如此赋值:

    s1.num=101;
    strcpy(s1.name,"zhang");
    

    2.结构体数组排序做法

    选择排序法(以学生成绩排名为例)

    for(i=0;i<n-1;i++)
    index=i;
    for(j=i+1;j<n;j++)
    if(studenet[j].average>students[index].average)
    index=j;
    temp=students[index];
    students[index]=students[i];
    students[i]==temp;
    }
    

    3.结构体指针怎么用

    1.结构指针的定义和初始化
    如:

    struct student s1={101,"zhang",78,87,85},*p;
    p=&s1;
    

    第一条语句定义了struct student 类型的变量s1并初始化,另外还定义了一个结构指针变量p,第二条语句使结构指针p指向结构变量s1。

    2.结构指针的使用
    具体有两种形式:
    (1)用p访问结构成员
    如:(*p).num=101;
    其中
    p表示的使p指向的结构变量。且(p)中的括号使不可缺少的,因为成员运算符"."的优先级高于""优先级。
    (2)用指向运算符->访问指向的结构成员
    如:````p->num=101;```
    以上两种形式最终得到的效果是一样的。但在使用结构指针访问结构成员时,通常使用指向运算符->。

    4.共用体、枚举类型做法

    1.共用体的一般声明形式如下:

    union 联合名
    {
    成员声明
    成员声明
    ...
    }变量列表;
    

    声明联合变量:

    union 联合名 变量列表:
    

    2.定义枚举类型的一般格式如下:

    enum 枚举名{枚举值1,枚举值2,...}变量列表;
    

    声明一个枚举变量:

    enum 枚举名 变量列表;
    

    5.文件读写

    fp = fopen("  ", "r+");
    	if (fp == NULL)
    	{
    		exit(0)
    	}
    

    1.2本章学习体会

    1.感觉这一章的内容很多,如果没有及时复习巩固就会遗忘。
    2.这两周代码量300+,未达要求。

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

    2.1.文件介绍

    头文件介绍

    idiom.h

    定义两个结构体,一个存储成语和意思,另一个存储用户的账号和密码。
    三个函数:读取成语,登录系统,查找某个成语的意思。

    2.函数实现文件介绍。
    成语游戏.c


    idiom.c


    2.2.运行结果

    1.登录界面

    2.游戏界面

    2.3大作业总结

    1.碰到问题及解决办法


    没有加getchar()之前会连续输入两个请输入要查找的成语,因为回车被get吸收了,后面发现了,加上了getchar()。

    2.小结

    还有很多功能没有完善,不过我认为大作业还是很有意义的,可以综合性地复习所学的知识。

  • 相关阅读:
    bash 教程 shell 基础语法
    使用 Flutter 开发 Windows 桌面应用 [MD]
    小tips:使用babelupgrade从babel6升级babel7
    JS的可选链操作符(?.)与双问号(??),你用到了吗?
    JS处理html的编码(encode)与解码(decode)
    pdf A3 到 A4
    grub4dos 制作U盘启动盘
    amixer的用法
    一个tomcat设置多个端口
    PostgreSQL 配置内存参数
  • 原文地址:https://www.cnblogs.com/yeanxxx/p/12013214.html
Copyright © 2011-2022 走看看