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

一、PTA实验作业

本周要求挑一道函数题,2道编程题写设计思路、调试过程。本次设计思路用伪代码描述。

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

1. 本题PTA提交列表

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

3.代码截图

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

  • 这题没有很大的问题,两数交换的时候把 i 写成 j ,感觉排序法还是有一点不太熟悉,检查后改正了。

题目2:时间换算

1. 本题PTA提交列表

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

3.代码截图

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

开始是一个一个数地计算,十分麻烦!算不出答案,后来就想到小时分钟秒分开计算就可以了,只是输入的时候忘记加上冒号了,加上就正确了。现在想想,设计思路是挺简单的啊,当时怎么就想多了呢。

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

1. 本题PTA提交列表

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

3.代码截图

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

  • 没注意看是15位数字,可能有加号,范围不够大
  • 出生日期用整数类型就部分正确,换成字符型就对了。可是整数类型的输出答案也是对的啊,不是很懂。

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

三、阅读代码

将句中所有单词的顺序颠倒输出


在每次最后面一个单词输出后,将最后一个单词的第一个字符设为0,那么倒二个单词就成了最后一个单词,再循环前面的步骤。并且使用count来控制是否输出空格。将“每次的最后一个单词的第一个字符设为0 ” 这种做法,就避免了输出过的单词重复输出的情况,做法巧妙。

要求输入老师和同学的信息,如果输入的是成绩表示输入的是学生信息,如果输入时学科则表示是老师信息



本题结构体使用了共同体类型,更加节省空间,也巧妙地将学生和老师共同信息和不同信息表现出来,打下面代码的过程中思路会比较清晰,不容易混淆。

四、本周学习总结

1.总结本周学习内容。

结构体

  • 结构体和数组一样都是构造型数据类型,和数组不同的是,结构体可以处理不同类型的数据。如下定义一个学生信息的结构体:

    struct student{
               int number;
               char sex[3];
               char name[10];
               srtuct birthday birth;//birthday 是结构体类型的数据,这里没有写出来
               char dep[20];
    

···
}这个结构体有三种类型的数据,可以看出结构体里还可以有结构体类型、共用体的类型的数据。

共用体

  • 共用体是一种多变量共享存储空间的构造类型,它允许几种不同的变量共用同一存储空间。共用体和结构体的区别:1.结构体每一位成员都用来表示一种具体事务的属性,共用体成员可以表示多种属性(同一存储空间可以存储不同类型的数据)。
    2.结构体总空间大小,等于各成员总长度,共用体空间等于最大成员占据的空间。
    3.共用体不能赋初值。

枚举类型

  • 枚举类型是指变量的值可以全部列出,定义一个枚举变量后,变量的值确定在定义之中。它和结构体、共用体的区别在于,枚举元素是常量,只能在定义阶段赋值。枚举是比较特别的类型
    结构体、共用体、枚举这种构造数据类型特点。

递归函数原理

  • 递归(recursion)就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法。

    递归通常用来解决结构自相似的问题。所谓结构自相似,是指构成原问题的子问题与原问题在结构上相似,可以用类似的方法解决。具体地,整个问题的解决,可以分为两部分:第一部分是一些特殊情况,有直接的解法;第二部分与原问题相似,但比原问题的规模小。实际上,递归是把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的问题,直至每个小问题都可以直接解决。因此,递归有两个基本要素:

    (1)边界条件:确定递归到何时终止,也称为递归出口。

    (2)递归模式:大问题是如何分解为小问题的,也称为递归体。递归函数只有具备了这两个要素,才能在有限次计算后得出结果

    在递归函数中,调用函数和被调用函数是同一个函数,需要注意的是递归函数的调用层次,如果把调用递归函数的主函数称为第0层,进入函数后,首次递归调用自身称为第1层调用;从第i层递归调用自身称为第i+1层。反之,退          出第i+1层调用应该返回第i层。
    
  • 递归函数的内部执行过程

    一个递归函数的调用过程类似于多个函数的嵌套的调用,只不过调用函数和被调用函数是同一个函数。为了保证递归函数的正确执行,系统需设立一个工作栈。具体地说,递归调用的内部执行过程如下:

    (1)运动开始时,首先为递归调用建立一个工作栈,其结构包括值参、局部变量和返回地址;

    (2)每次执行递归调用之前,把递归函数的值参和局部变量的当前值以及调用后的返回地址压栈;

    (3)每次递归调用结束后,将栈顶元素出栈,使相应的值参和局部变量恢复为调用前的值,然后转向返回地址指定的位置继续执行。

2.罗列本周一些错题。

posted on 2017-12-24 22:56  黑白熊熊  阅读(661)  评论(2编辑  收藏  举报

导航