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

一、PTA实验作业

题目1:6-1 计算两个复数之积

1. 本题PTA提交列表

1232103-20171224192400771-54576427.png

2. 设计思路

struct complex{
    int real;
    int imag;
};//该结构体表示复数的实部和虚部
struct complex multiply(struct complex x, struct complex y)//定义函数计算复数间的乘法
定义struct complex变量result表示函数的返回值
result.real=x.real*y.real-x.imag*y.imag计算result的实部
result.imag=x.real*y.imag+x.imag*y.real计算result的虚部
返回result

3.代码截图

1232103-20171224195042303-89830332.png

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

原本想直接return表达式但没办法同时返回虚部和实部,于是设置stuct complex变量result并返回

题目2:7-1 计算职工工资

1. 本题PTA提交列表

1232103-20171224195811396-810792002.png

2. 设计思路

struct staff{
    char n[10];
    float j_money;
    float f_money;
    float z_money;
    float s_money;
};//该结构体表示员工姓名,基本工资,浮动工资,支出和实发工资
定义struct staff 变量p[999]存放员工信息,定义变量N表示输入员工信息的个数,变量i表示循环次数
输入N
for i=0 to i=N-1
输入 员工的姓名,基本工资,浮动工资,支出
end for
for i=0 to i=N-1
计算员工实发工资=基本工资+浮动工资-支出
end for
for i=0 to i=N-1
输出员工姓名 实发工资
end for

3.代码截图

1232103-20171224200431834-156329483.png

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

一开始设置变量p数组长度为50但是提示不够大,于是设为999

题目3:7-2 时间换算

1. 本题PTA提交列表

1232103-20171224202518818-1150611868.png

2. 设计思路

struct time{
    int h;
    int m;
    int s;
}; //该结构体表示时间的小时,分钟,秒
设置struct time 变量p
设置变量n,k,l表示n秒后经过几分钟,几小时
输入起始时间
输入n秒
IF 起始秒+n秒<60 则秒=起始秒+n
否则  k=(起始秒+n秒)/60 , 秒=(起始秒+n秒)%60    //表示超过几分钟
IF 起始分钟+k<60 则分钟=起始分钟+k
否则 l=(起始分钟+k)/60 ,分钟=(起始分钟+k)%60
IF 起始小时+l<24 则小时=起始小时+l
否则 小时=(起始小时+l)%24
end IF
输出新的时间

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

不是很理解这道题和结构体之间的关系

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

1232103-20180106110004956-313072613.png

三、阅读代码

1-如果一个数组中的所有元素保存的都是指针,那么我们就称它为指针数组。

1232103-20171224205419303-159152094.png

arr 是一个指针数组,它包含了 3 个元素,每个元素都是一个指针。parr 是指向数组 arr 的指针。启示了我们数组里也可以存放地址,然后设置成指针数组,但parr的定义形式应该理解为int (parr),括号中的表示 parr 是一个指针,括号外面的int 表示 parr 指向的数据的类型。arr 第一个元素的类型为 int ,所以在定义 parr 时要加两个

2-输入一个结构体类型变量的成员,并输出。

1232103-20171224220205834-1368812938.png

程序使用了嵌套结构简洁地表示出学生信息,用student->的方式指向比(*student).省略两个字符更加简洁。通过C提供的函数malloc()来为指针分配安全的地址。函数sizeof()返回值是计算给定数据类型所占内存的字节数。

四、本周学习总结

1.总结本周学习内容。

  • 结构体、共用体、枚举这种构造数据类型特点。

    结构体和数组一样都是构造型数据类型,和数组不同的是,结构体可以处理不同类型的数据。共用体是一种多变量共享存储空间的构造类型,它允许几种不同的变量共用同一存储空间。

    共用体和结构体的区别:

       1.结构体每一位成员都用来表示一种具体事务的属性,共用体成员可以表示多种属性(同一存储空间可以存储不同类型的数据)。
       2.结构体总空间大小,等于各成员总长度,共用体空间等于最大成员占据的空间。
       3.共用体不能赋初值。
       4.共用体变量中的值是最后一次存放的成员的值如 
        a.i = 1; 
        a.ch = 'a'; 
        a.f = 1.5; 
       完成以上三个赋值语句后共用体边量的值是 1.5而 a.i=1 和 a.ch='a'已无意义
       共用体变量不能初始化例
       union data 
      { 
       int i; 
       char ch; 
       float f; 
       }a={1,'a', 1.5}  错误!!!

    共用体的定义形式

    union 共用体名
    成员列表
    变量列表
  • 递归函数原理

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

     
        递归通常用来解决结构自相似的问题。所谓结构自相似,是指构成原问题的子问题与原问题在结构上相似,可以用类似的方法解决。具体地,整个问题的解决,可以分为两部分:第一部分是一些特殊情况,有直接的解法;第二部分与原问题相似,但比原问题的规模小。实际上,递归是把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的问题,直至每个小问题都可以直接解决。因此,递归有两个基本要素:
     
        (1)边界条件:确定递归到何时终止,也称为递归出口。
     
        (2)递归模式:大问题是如何分解为小问题的,也称为递归体。递归函数只有具备了这两个要素,才能在有限次计算后得出结果
     
    在递归函数中,调用函数和被调用函数是同一个函数,需要注意的是递归函数的调用层次,如果把调用递归函数的主函数称为第0层,进入函数后,首次递归调用自身称为第1层调用;从第i层递归调用自身称为第i+1层。反之,退出第i+1层调用应该返回第i层。
     
     
    递归函数的内部执行过程
     
        一个递归函数的调用过程类似于多个函数的嵌套的调用,只不过调用函数和被调用函数是同一个函数。为了保证递归函数的正确执行,系统需设立一个工作栈。具体地说,递归调用的内部执行过程如下:
     
        (1)运动开始时,首先为递归调用建立一个工作栈,其结构包括值参、局部变量和返回地址;
     
        (2)每次执行递归调用之前,把递归函数的值参和局部变量的当前值以及调用后的返回地址压栈;
     
        (3)每次递归调用结束后,将栈顶元素出栈,使相应的值参和局部变量恢复为调用前的值,然后转向返回地址指定的位置继续执行。

2.罗列本周一些错题。

1232103-20171224222226506-175850003.png
1232103-20171224222233975-1679640595.png
1232103-20171224222248256-1449886435.png

转载于:https://www.cnblogs.com/LHLH/p/8099155.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值