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是数组名,不能那样用,当时一时疏忽选错吧。。