C语言博客作业--结构体
一丶PTA实验作业
题目1:结构体数组按总分排序
(1).PTA提交列表
(2). 设计思路
定义函数calc
定义整型变量i,j //用于循环
for i=0 to n-1 //求出每个学生分数的总和
for j=0 to 2
执行算法(p+i)->sum=(p+i)->sum+(p+i)->score[j]
end for
end for
定义函数sort
定义整型变量i,j //用于循环
定义结构体变量 max //用于排序时进行交换的结构变量
for i=0 to 4
for j=i to 4
如果((p+i)->sum)<((p+j)->sum) 满足进行交换
max=*(p+i);
*(p+i)=*(p+j);
*(p+j)=max;
(3).代码截图
(4).本题调试过程碰到问题及PTA提交列表情况说明
在进行交换时一开始想定义一个指针进行交换,但是后来发现在定义指针指向指针不怎么会操作,舍友提醒一下明白可以自己定义一个结构体变量进行交换储存
题目2:计算职工工资
(1).PTA提交列表
(2). 设计思路
struct money{
char name[11];
double j;
double l;
double z;
double result;
};//表示工资金额
定义变量 n,i,j; //i,j用于循环 n为工作人员人数
输入n
定义结构提变量 m[n]
for i=0 to n-1
scanf("%s",m[i].name);
scanf("%lf%lf%lf",&m[i].j,&m[i].l,&m[i].z);
执行运算式m[i].result=(m[i].j+m[i].l-m[i].z)*1.0;
end for
for i=0 to n-1
输出姓名 实际工资(m[i].result)
(3).代码截图
(4).本题调试过程碰到问题及PTA提交列表情况说明
输入数据时未考虑得到的工资可能有小数,导致程序答案一直不吻合
题目3:时间换算
(1).PTA提交列表
(2). 设计思路
struct time{
int hour;
int mini;
int second;
};//该结构体用于表示时间的小时,分钟,秒钟
定义结构体变量t,整型变量wait;
执行运算式t.second=t.second+wait;
while
t.second=t.second-60;
t.mini=t.mini+1;
while
t.mini=t.mini-60;
t.hour=t.hour+1;
while
t.hour=t.hour-24;
to hour<24 end while
to mini<60 end
to t.second<60 end
输出小时:分钟:秒钟
(3).代码截图
(4).本题调试过程碰到问题及PTA提交列表情况说明
知道了输出有效数字前要保留两位补充0时可用 %02d
二、截图本周题目集的PTA最后排名
三、阅读代码
strcmp函数
int __cdecl strcmp(const char *src,const char *dst)
{
int ret=0;
while(!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src,++dst;
if(ret<0)
ret=-1;
else if(ret>0)
ret=1;
return(ret);
}
在while循坏判断语句中直接将字符转化为ascii码,巧妙的运用字符所对应的ascii码进行字符串之间的比较。
四、本周学习总结
1.你学会了什么?
-
结构体
struct 结构体类型名{
类型1 成员1;类型2 成员2;
......类型n 成员n;
};
- 简洁紧凑、灵活方便 ,可用于数据的整合使用
2.数据结构丰富 ,型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等都可以包含在结构体内
-
共用体
定义一个共用体类型的一般形式为:
union 共用体类型名
{
类型1 成员1;类型2 成员2;
......类型n 成员n;
};
通过定义多种格式的包用于对未知数据包进行处理 -
枚举特点
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开 -
递归函数原理
递归是程序调用自身的编程技巧
递归满足2个条件:
1)有反复执行的过程(调用自身)
2)有跳出反复执行过程的条件(递归出口)
2.罗列本周一些错题。
该题是结构体与指针的结合,对它们的概念有点混淆了,p=&date,既指针指向date,而date是结构变量,而p不是结构体变量,要想引用a,只有(p).a才是正确的