zoukankan      html  css  js  c++  java
  • C语言博客作业--结构体

    一、PTA实验作业(5分)

    题目1: 结构体数组按总分排序

    1. 本题PTA提交列表(要提交列表,不是结果)

    2. 设计思路(伪代码或流程图)

    void calc(struct student *p,int n);  累加总分函数
    定义变量i作为循环变量
     for i=0 to n-1
    p[i].sum=0; 将数组都赋予初值0
    for j=0 to 2
    	p[i].sum= p[i].sum+ p[i].score[j]; 将3个学科的分数加到总分上
    end for
    
    void sort(struct student *p,int n); 按总分从大到小排名
    定义一个结构变量struct student	m;
    定义i,j作为循环变量
    for i=0 to n-1         用选择排序法,找最大值先排列
    for j = i+1  to n-1 
    遍历sum数组找出最大分p[i].sum<p[j].sum 如果找到就将两变量的所有内容互换
    end for
    
    

    3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

    4.本题调试过程碰到问题及PTA提交列表情况说明。

    • 由于没有将同属于一个步骤的内容用括号括起来导致出错

    题目2:时间换算

    1. 本题PTA提交列表(要提交列表,不是结果)

    2. 设计思路(伪代码或流程图)

    struct time {
    	int hour;
    	int min;
    	int sec;
    }; //该结构体表示时间的小时,分钟,秒
    定义结构数组存放数据 struct time t[200]; 定义较大以免超范围
    定义两个字符变量来输入两个:号char ch,op;
    输入数据后进行判断 小时,分钟及秒加上n秒后有没有大于等于60 有就用时间进位
    还有最后判断小时是否为24,是则归为0;
    最后输出
    

    3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

    4.本题调试过程碰到问题及PTA提交列表情况说明。

    • 由于没有加上:号的输入,而直接输入数字,导致答案错误

    题目3:通讯录的录入与显示

    1. 本题PTA提交列表(要提交列表,不是结果)

    2. 设计思路(伪代码或流程图)

    struct address{
    	char name[100];
    	char birthday[100];
    	char sex[100];
    	char number[100];
    	char teleph[100];
    };  //定义结构储存姓名,生日,性别,号码 ,固话 
    定义结构数组 struct address p[1000];
    for i=0 to n-1
    进行通讯录的录入
    end for
    输入要查找的个数 k
    for i=0 to k-1 
    输入要查找的编号x 判断x是否在范围内
    是则输出下标为x的结构数组所有内容
    否则输出  no found
    

    3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

    4.本题调试过程碰到问题及PTA提交列表情况说明。

    最后判断x是否属于范围内少了x>=0这个范围导致部分正确

    二、截图本周题目集的PTA最后排名。(2分)

    三、阅读代码(2分)

    冒泡法用指针来实现,不用返回值,直接对数组内的值进行交换

    可以用递归的方法进行数字的逆序输出

    四、本周学习总结

    1.总结本周学习内容。

      1. 结构体:
     - 结构体的定义:
    struct student  //结构体类型的说明与定义分开。 声明
    {
    int age;   /*年龄*/
    float score;  /*分数*/
    char sex;     /*性别*/
    };
    
     - 结构类型变量的储存布局按其类型定义中成员的先后顺序排列,先定义的排在前面。
     - 结构数组的元素成员引用通过' . ' 号来指定 ,还可以用   -> 号来访问指针指向的结构成员 如p ->num = 333(p为地址)
     - 在用指针访问结构成员时(*p).num = 333 中()是不可少的。
    
    • 2.共用体
     - 1.同一个内存段可以用来存放几种不同类型的成员,但是在每一瞬间只能存放其中的一种,而不是同时存放几种。换句话说,每一瞬间只有一个成员起作用,其他的成员不起作用,即不是同时都在存在和起作用。
    
     - 2.共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失去作用。
    
     - 3.共用体变量的地址和它的各成员的地址都是同一地址。
    
     - 4.不能对共用体变量名赋值,也不能企图引用变量名来得到一个值。
    
     - 5.共用体类型可以出现在结构体类型的定义中,也可以定义共用体数组。反之,结构体也可以出现在共用体类型的定义中,数组也可以作为共用体的成员。
     - 它的定义格式为:
            union 共用体名{
                成员列表
                };
        共用体有时也被称为联合或者联合体,这也是 Union 这个单词的本意。
    结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内    存,修改一个成员会影响其余所有成员。
    
        结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。
    
        共用体也是一种自定义类型,可以通过它来创建变量,例如:
            union data{
                int n;
                char ch;
                double f;
            };
                union data a, b, c;
    上面是先定义共用体,再创建变量,也可以在定义共用体的同时创建变量:
            union data{
            int n;
            char ch;
            double f;
            } a, b, c;
        如果不再定义新的变量,也可以将共用体的名字省略:
        union{
            int n;
            char ch;
            double f;
        } a, b, c;
    
    
    • 3枚举.
    枚举类型的定义形式为:
        enum typeName{ valueName1, valueName2, valueName3, ...... };
        enum是一个新的关键字,专门用来定义枚举类型,这也是它在C语言中的唯一用途;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
    

    2.罗列本周一些错题。


    以为当n为负数的时候再进行递归就会发生错误导致选了d,后来老师上课讲解了才知道

    没有理解透彻递归,导致错误

    先进行除10 在进行递归,最后输出的是n%10 的值使这递归不能逆序输出,而还是输出7534

  • 相关阅读:
    设计模式天天练。
    系统资料库msdb置疑或者不可用的解决方法
    依赖注入IOC
    重载、重写、隐藏的区别
    ASP.NET中的HttpWorkerRequest对像及其应用
    ASP.NET的错误处理机制
    Web.Config
    asp.net 2.0页面生命周期
    FileUpLoad控件上传大容量文件
    大文件上传
  • 原文地址:https://www.cnblogs.com/FOXES/p/8099042.html
Copyright © 2011-2022 走看看