码迷,mamicode.com
首页 > 编程语言 > 详细

C语言博客作业--结构体

时间:2017-12-24 22:55:52      阅读:411      评论:0      收藏:0      [点我收藏+]

标签:不同类   共用体   类型   思路   .com   end   赋值   调试   错误   

一、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

C语言博客作业--结构体

标签:不同类   共用体   类型   思路   .com   end   赋值   调试   错误   

原文地址:http://www.cnblogs.com/FOXES/p/8099042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!