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

    1.本章学习总结

    1.1 学习内容总结

    • 结构体的定义和赋值
      • 定义:结构体的定义必须要有定义结构类型的关键字struct,在struct之后,自行命名一个合法的C标识符作为结构名,struct与结构名两者合起来共同组成结构类型名。在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型。
      • 赋值:使用结构成员操作符“.”来引用结构成员,从而对结构成员赋值。对于具有相同类型的两个结构变量,允许将一个结构变量的值直接赋给另一个结构变量,这是结构中唯一的整体操作方式。
    • 结构体数组排序做法:
     for (i = 0; i < n - 1; i++)
    {
    	index = i;
    	for (j = i + 1; j < n; j++)
    		if (students[j].average > students[index].average)
    			index = j;
    	temp = students[index];
    	students[index] = students[i];
    	students[i] = temp;
    }
    
    • 结构体指针用法:
    (1)用*p访问结构成员
    如:
    (*p).num=101;
    注意,(*p)中的括号是不可少的,因为成员运算符"."的优先级高于"*",若没有括号,则*p.num等价于*(p.num),含义发生了变化,从而会产生错误。
    (2)用指向运算符->访问指针指向的结构成员
    如:
    p->num=101;
    
    • 共用体、枚举类型做法:
      • 共用体:
      union 联合名
      {
        成员声明 
        成员声明
        ...
      } 变量列表;
      
      • 枚举:
      enum 枚举名{枚举值1,枚举值2,...} 变量列表;
      
    • 文件读写,文件中数据如何读进结构体数组:
    fp=fopen("c:\student.txt","r");
    while(!feof(fp))
    { 
       fscanf(fp,"%[^,],%[^,],%[^,],%d,%s",&student[i].no,&student[i].name,&student[i].sex,&student[i].age,&student[i].major);
       i++;	
    }     
    

    1.2 本章学习体会

    • 本章的内容较为复杂,学习难度较大,对于知识点的掌握还不够熟练,需要多练多复习。
    • 代码量大概700行左右

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

    2.1 文件介绍

    1.头文件介绍

    idiom.h
    • 在该头文件中分别有两个结构体跟五个函数声明
      • 结构体USER:用于存储用户账号和密码
      • 结构体IDIOM:用于存储成语本身及其释义
      • 函数Register:用户登录界面
      • 函数CheckUser:用于检查用户输入的账号密码是否正确
      • 函数Game:进入游戏界面
      • 函数GetIdiom:从文件中获取成语及其释义,并将其存储在结构体数组中
      • 函数Question:用于出题

    2.函数实现文件介绍

    文件1:idiomMain.cpp
    • 在主函数中,打开文件,关闭文件,并调用登录界面的函数及游戏界面的函数
    文件2:register.cpp
    • 用户在函数Register中输入账号密码,并有该函数调用Check函数检查是否有误
    文件3:check.cpp
    • 检查用户输入的账户密码是否正确
    文件4:idiom.cpp
    • 该文件中包含3个主要函数
      • Game函数:用于决定用户是否要退出游戏
      • GetIdiom函数:将文件中的成语存储到结构体数组中,并计算成语的数量
      • Question函数:用于随机生成一种题型并输出,同时检查用户输入的成语是否正确

    2.2 运行结果

    1.登录界面

    2.游戏界面

    3.排名界面

    没做出来....

    2.3 大作业总结

    1.碰到的问题及解决方法

    Q1:一开始我在游戏界面时,无法选择是否要继续游戏
    A1:经调试发现,我的scanf会将回车吸收,作为choice的值,故我再scanf前加了一个getchar,然后运行顺利
    Q2:我在运行游戏的时候,成语总是出错,会有“?”出现
    A2:后我发现是我在输出时,成语的下标写错了,比如成语的第一个字对应的下标应为0和1,我却写成了1和2,经改正后,运行顺利

    2.小结

    在本次作业中,我意识到了自己还有很多的不足,以后要多打代码,加以改正。


  • 相关阅读:
    如何发现需求
    测试linux和window下 jdk最大能使用多大内存
    java获取汉字的拼音 简单版
    oracle一条sql执行导入sql文件
    oracle使用闪回功能恢复删除的表数据
    linux环境变量配置
    有两张表;使用SQL查询,查询所有的客户订单日期最新的前五条订单记录。 糖不苦
    jQuery作业 点击出弹框 糖不苦
    #{}和${}的区别是什么? 糖不苦
    在html页面中如何使用jQuery? 糖不苦
  • 原文地址:https://www.cnblogs.com/w60-06/p/12007032.html
Copyright © 2011-2022 走看看