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

    1.本章学习总结

    1.1 学习内容总结

    • 结构体定义及成员赋值:
    struct student {int x, int y};
    struct student s1={3,5};
    s1.x=4;
    s1.y=8;
    
    • 结构体数组排序做法:
    void sort(struct student* p, int n)
    {
        int i, j;
        struct student temp;
        for(i=0;i<n-1;i++)
        {
            for (j = 0; j < n - 1 - i; j++)
            {
    	    if (p[j].sum < p[j + 1].sum)
    	    {
    		temp = p[j];
    		p[j] = p[j + 1];
    		p[j + 1] = temp;
    	    }
            }
        }
    }
    
    • 结构体指针用法:
    用*p访问结构成员
    (*p).num=101;
    用指向运算符->访问指针指向的结构成员
    p->num=100;
    结构体指针作为函数参数
    int score (struct student *p,int n);
    pos=score (students ,n);
    
    • 共用体、枚举类型做法:
    共用体
    union Data{
    int i;
    char ch;
    float f;
    }a={1, 'a', 1.5};//错误
    union Data a = {16};//正确
    union Data a = {.ch = ‘j’};//正确
    
    枚举类型
    enum Weekday{sun, mon, tue, wed, thu, fri, sat} workday, weak_end;
    
    • 文件读写,文件中数据读进结构体数组:
    文件读写
    fp=fopen("abc.txt"."r");
    fp=fopen("abc.txt"."w");
    
    文件中数据读进结构体数组
    while(!feof(fp))  
    {
        fscanf(fp, "%[^,],%[^,],%[^,],%d, %s", &student[i].no, &student[i].name, &student[i]. sex, &student[i].age, &student[i].major);
    }
    

    1.2 本章学习体会

    • 这两章的内容比较综合,基本上用到了前几章的所有知识,对前几章内容有一定的复习作用。综合也意味着难度更大,对之前学习过的内容的掌握,在一定程度上影响这两章的学习,然而这部分内容确实比较抽象,理解起来不那么容易,运用起来也不容易掌握。
    • 这两周代码量:870行

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

    2.1.文件介绍

    1.头文件介绍

    idiom.h

    • 结构体IDI用来存成语及意思。
    • 函数menu()展示菜单。
    • 函数getIdiom()查看成语和意思。
    • 函数findIdiom()查找成语及意思。
    • 函数addIdiom()添加成语及意思。

    login.h

    • LOGIN结构体存用户名和密码。
    • 函数checkUserValid()验证登录。
    • 函数Login()输入用户名和密码并给出提示。

    game.h

    • idiomGame()出题函数。

    2.函数实现文件介绍。

    文件1:main.c

    • 打开和关闭文件,以及各函数之间的调用。

    文件2:Login.c

    • 输入用户名和密码,验证两者是否正确。

    文件3:idiom.c

    • 进行成语的查看、查找和增加。

    文件4:menu.c

    • 菜单展示,返回选择数。

    文件5:game.c

    • 实现成语随机挖空出题。

    2.2.运行结果

    1.登录界面

    2.游戏界面

    2.3大作业总结

    1.碰到问题及解决办法

    Q:如何实现成语随机挖空?
    A:用随机偶数代表随机某个字。

    Q:成语随机挖空可能两次会随机到同一个字。
    A:记录上次随机的数,对比解决。

    Q:如何比对答案是否正确?
    A:成语挖空前先记录下成语,记录下两个字的先后顺序。

    Q:增加成语后,立即查看成语会出现乱码。
    A:未找到原因。

    Q:主菜单输入字符会死循环,未解决。
    A:scanf("%d",&a)只能接收数字,输入字符则被放置在缓冲区,未解决。

  • 相关阅读:
    关于Slowloris HTTP DoS
    [转]更新SDK失败后,出现无法找到SDK location的解决方法
    [吐槽文]一篇课设小结
    无聊时候打打字之百度地图 【更新中】
    git初学 多多指教
    无聊的时候打打字之寒假项目小记录
    机会来了,创业你准备好了吗?
    技术高速发展,IT人员路在何方?
    开发Web应用程序常用优化性能的技巧
    DataTable中存在空值 输出到EXCEL时格式变乱的解决方法【附代码】
  • 原文地址:https://www.cnblogs.com/c4412/p/12004792.html
Copyright © 2011-2022 走看看