yob。

c语言博客作业-结构体

一、PTA实验作业

题目1:按等级统计学生成绩

1. 本题PTA提交列表

2. 设计思路

定义变量 i作循环,count统计不及格人数
  for  i=0  to   n
      if p[i].score在85和100之间   p[i].grade=A
      if p[i].score在84和70之间     p[i].grade=B
      if p[i].score在69和60之间     p[i].grade=C
      if p[i].score小于59                 p[i].grade=D,且count值加一
return  count

3.代码截图

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

  • count未赋初值导致结果错误
  • 未仔细审题,题目要求统计的是不及格的人数

题目2: 计算职工工资

1. 本题PTA提交列表

2. 设计思路(用代码表示扣分)

定义结构体:struct staff{
                      char name[10];
                      float base_wage,floating_wage,outgoing,real_wage;}
定义整型变量 N,i
定义结构体数组 final[1000]
输入N
   for i=0  to N-1
   输入名字
   输入基本工资,流动工资和支出
   final[i].real_wage=final[i].base_wage+final[i].floating_wage-final[i].outgoing
   i++
   for  i=0   to  N
   输出名字和以保留两位小数形式输出工资

3.代码截图

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

  • 最终结果的数组定义时容量不够大,导致部分正确
  • 字符串输入钱的getchar()开始时没有注意使用

题目3:时间换算

1. 本题PTA提交列表

2. 设计思路(用代码表示扣分)

定义结构体struct time{
  int hour,minute,second}和结构体变量:time;
 定义整型变量 n为输入的秒数,sec保存变化了多少分钟,min,hou;
  输入 hour  minute  second
  输入n
  time.second+=n;
  如果:time.second>=60)
             sec=time.second/60
             time.second=time.second%60;
  time.minute+=sec;
  如果:time.minute>=60
             min=time.minute/60;
             time.minute=time.minute%60;}
  time.hour+=min;
如果:time.hour>=24
         time.hour=time.hour-24;
以%02d形式输出小时分钟和秒

3.代码截图

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

  • 输出时的格式错误,只有个位时的数字前面的0不会加,问了同学,只要%02d输出就好

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

三、阅读代码

  • 代码简洁,注释得也比较好,巧妙运用了指针,
  • 时间换算那一题,再引入了一个变量直接算出答案,我的判断了好多次,显得比较麻烦

四、本周学习总结

1.总结本周学习内容

  • 结构体:
struct 结构名{
    类型名 结构成员名1;
    类型名 结构成员名2;
    …
    类型名 结构成员名n;
}变量列表;
  • 结构成员成员运算符的优先级属最高级别,所以一般情况下都是优先执行,即和一般运算符混合运算时,结构成员运算符优先。

  • 只有相同结构类型的变量之间才可以直接赋值。不能在结构体内部直接给成员赋值。

  • 共用体

union 联合名{
    成员声明
    成员声明
    …
}变量列表;
  • 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失去作用。即当给一个成员重复赋值时或对多个成员赋值时,只承认最后一次的赋值。

  • 共用体变量的地址和它的各成员的地址都是同一地址。

  • 不能对共用体变量名赋值,也不能企图引用变量名来得到一个值。

  • 枚举

enum 枚举名{枚举值1,枚举值2,…}变量列表;
  • 编译程序将从0开始逐个给枚举值赋值。如果某个枚举值标识符后面跟有等号和常量表达式,那么编译程序就将该常量表达式的值作为该枚举的值。该枚举值后面的枚举值从这个枚举值开始逐个加1,重新编号。注意:枚举值都不能超过它的基础类型范围,否则会报错。
  • 编译程序将枚举值当作常量。
  • 每个枚举成员的常数值必须在该枚举的基础类型的范围之内。
  • 递归函数原理
  • 两个要点:
  • 1.递归出口:递归结束条件,到何时不再递归调用下去。
  • 2.递归调用式子:递归的表达式

2.罗列本周一些错题

  • :结果应该选d,a是数组名,不能那样用,当时一时疏忽选错吧。。

posted on 2017-12-24 22:56  emmmm。。。  阅读(285)  评论(0编辑  收藏  举报

导航