c语言博客作业-结构体
2017-12-24 22:56
211 查看
一、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是数组名,不能那样用,当时一时疏忽选错吧。。