• 结构体


    1.本章学习总结(2分)

    1.1 学习内容总结

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

    1.1.1.1

    • 结构体类型定义:
    一般形式为:
    struct 结构名{
       类型名 结构成员名1;
       类型名 结构成员名2;
        ···
       类型名 结构成员名n;
    };
    
    定义实例:
    struct student{
      int num;
      char name[10];
      int computer,english,math;
      double average;
    };
    

    (定义了一个结构体用来储存学生信息,结构成员包括学生的学号num,姓名name[10],三科成绩computer,English,math,三科成绩平均值)

    • 结构体变量定义:
      法一:单独定义
    struct student s1;
    

    (定义了结构变量s1,代表某位学生)
    法二:混合定义

    struct student{
      int num;
      char name[10];
      int computer,english,math;
      double average;
    }s1,s2;
    

    同时定义了结构类型struct student和结构变量s1,s2)
    法三:无类型名定义

    struct {
       类型名 结构成员名1;
       类型名 结构成员名2;
        ···
       类型名 结构成员名n;
    }结构变量名表;
    

    (此法与混合定义相同点是同时定义结构类型和结构变量,但由于无结构名便无法再定义这个类型的其他变量,除非把定义过程再写一遍
    1.1.1.2赋值

    struct student s1={101,"张三",78,87,85};
    

    (将大括号内的数据项按顺序对应赋值给结构变量内的各个成员,要求类型一致

    1.1.2结构体数组排序

    • 选择排序法
    对于学生成绩排序:
    (已知存在结构体数组students[50]代表50个学生,结构成员average代表个人成绩平均值)
    for(i=0;i<49;i++)
    {
       index=1;
       for (j=i+1;j<50;j++)
       {
           if(students[j].average>students[index].average)
           {
               index=j;
           }
       }
       temp=students[index];  //交换数组元素
       students[index]=students[i];
       students[i]=temp;
    }
    

    1.1.3结构体指针

    1.1.3.1通过指针访问成员

    • 用*p访问结构成员
    (*p).num=101;
    

    ((p)的括号不可少,由于成员运算符**“.”的优先级高于“”**,若无括号,则p.num等价于(p.num),含义出差)

    • 指向运算符->访问指针指向的结构成员
    p->num=101;
    

    1.1.4共用体、枚举类型做法

    1.1.5文件读写,文件中数据如何读进结构体数组

    1.2 本章学习体会

    1.2.1描述学习感受,也可以在这里提出你不理解地方、对教师教学建议等等。

    1.2.2计算这两周代码量,是否达到目标。

    2.综合作业--“我爱成语”(8分)

    本次作业要编写一个成语游戏。用户登录后,系统随机出若干个成语,如果答对则得分。用户得分写入成绩文件。系统能对用户成绩排名
    主要功能:
    登陆。需要输入正确用户名和 密码,才能登陆系统。错误提示错误的信息。
    成语游戏。从成语文件中随机抽一个成语,随机展示2个汉字,用户猜剩余汉字。如果答对,则得分。错误,给相应信息。
    排名。系统跟用户得分排名。
    退出
    要求:
    本次作业必须建工程实现C的多文件。其中结构体定义、函数定义等都要封装在自定义头文件中。一个模块对应一个.h文件和.c文件。数据定义和数据实现分离。
    用户登录、排名信息的数据请封装结构体实现。
    涉及3个数据文件:user.txt、ranking.txt、idiom.txt
    尽量减少全局变量使用,数据传递通过地址、参数等传递。学会利用函数形参、返回值实现独立功能。
    菜单界面友好,任何一步都能随时推出,程序也 不会崩溃。程序界面要有清屏。
    尽量写一个函数调试一个函数,保证函数能读写文件数据再做下面内容。
    数据说明:
    user.txt :用户名、密码
    ranking.txt:用户名,答题总分数、最后答题时间。注意:答题分数是每次分数的积累,如答对一题5分,下一次同一个用户名再玩,这里数据能累加或更新。
    idiom.txt:成语、成语解释。注意:给大家数据还包含数字,建议对数据预处理下,把数据改造成规范格式。成语:成语解释。出现其他如【】、数字等都过滤掉。数据统一格式才好读写。
    扩展功能
    本题可以做一个成语字典,用户输入成语,可以查询相应成语解释。这个查询可以是模糊查询,就是用户只输入一个汉字也可以查询所有相关的成语内容。
    游戏玩法可以多样,比如也可以做成语接龙,你写一个成语,根据最后一个汉字,系统能接龙下一个成语。如果是人机互玩,不是接龙规则,可提示

    2.1文件介绍

    头文件介绍
    头文件1.h
    介绍头文件有哪些结构体及函数声明,他们的功能是什么?可以列表格,更清晰直观
    头文件代码截图
    头文件2.h
    介绍头文件有哪些结构体及函数声明,他们的功能是什么?可以列表格,更清晰直观
    头文件代码截图
    头文件3.h
    介绍头文件有哪些结构体及函数声明,他们的功能是什么?可以列表格,更清晰直观
    头文件代码截图

    2.2函数实现文件介绍。

    文件1:main.c
    介绍文件功能及设计思路。
    主要代码截图
    文件2:Login.c
    介绍主要函数代码及功能。
    主要代码截图
    文件3:idiom.c
    介绍主要函数代码及功能。
    主要代码截图
    等等其他文件

    2.3运行结果

    1.登录界面
    2.游戏界面
    3.排名界面

    2.4大作业总结

    1.碰到问题及解决办法
    可以列表展示。
    2.小结
    大作业代码提交
    请把写好的大作业代码,全部复制在一个word文档中。(记住,要复制过去,不能截图,截图则本次作业0分),文档保存好请提交课堂派的作业中。我们会用课堂派对你写的代码进行查重,发现抄袭者,将公布名单,请务必要独立完成。

  • 相关阅读:
    全局变量引用与声明
    Oracle基础~dg原理
    Oracle基础~dg管理
    Oracle基础~rman克隆
    oracle基础~rman恢复篇
    oracle基础~linux整体性能优化
    oracle基础~报错汇总与解决办法
    oracle基础~用户和权限
    oracle基础~rac-asm
    oracle基础~awr报告
  • 原文地址:https://www.cnblogs.com/243050cz/p/12008415.html
Copyright © 2020-2023  润新知