C语言第十次博客作业--结构体
2017-12-24 12:08
281 查看
一、PTA实验作业(5分)
题目1:6-3 结构体数组中查找指定编号人员
1. 本题PTA提交列表(要提交列表,不是结果)
![](https://images2017.cnblogs.com/blog/1232087/201712/1232087-20171221150806787-931023280.png)
2. 设计思路
struct student { char num[10]; int year,month,day ; };该结构体表示人员的编号,出生年月日。 定义一个环境变量 for i=0 to i<8 若找到指定编号,则return *(std+i)
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
![](https://images2017.cnblogs.com/blog/1232087/201712/1232087-20171221151033162-873773880.png)
4.本题调试过程碰到问题及PTA提交列表情况说明。
一开始用flag来作为返回判断,不知道为什么答案错误。不用flag直接返回则正确。题目2:7-1 计算职工工资
1. 本题PTA提交列表(要提交列表,不是结果)
![](https://images2017.cnblogs.com/blog/1232087/201712/1232087-20171221151311037-1017514338.png)
2. 设计思路
struct money{ char num[9]; float jimoney; float fumoney; float zhimoney; float sum; };该结构体表示给定N个职员的信息,包括姓名、基本工资、浮动工资和支出。 定义环境变量i,整数n 输入n 定义结构体mon for i=0 to i<n 输入名字,基本工资,浮动工资,支出。 求实发工资mon[i].sum=mon[i].jimoney+mon[i].fumoney-mon[i].zhimoney end for i=0 to i<n 输出名字,实发工资(保留两位小数) end。
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
![](https://images2017.cnblogs.com/blog/1232087/201712/1232087-20171221151331115-813637344.png)
4.本题调试过程碰到问题及PTA提交列表情况说明。
定义工资时用了整型导致一直答案错误。题目3:7-6 通讯录的录入与显示
1. 本题PTA提交列表(要提交列表,不是结果)
![](https://images2017.cnblogs.com/blog/1232087/201712/1232087-20171221152120303-400391691.png)
2. 设计思路
struct man{ char name[11]; char birth[11]; char sex; char tel[17]; char mobile[17]; }mans[11];该结构体表示朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 定义环境变量i,k,整型数n,m 输入n。 for i=0 to i<n 输入朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 end 输入k。 定义一个数组find[k] for i=0 to i<k 输入要查询的记录编号 end for i=0 to i<k 若(find[i] >= 0 && find[i] < n) m=find[i] 输出mans[m].name, mans[m].tel, mans[m].mobile, mans[m].sex, mans[m].birth 否则输出not found。 end
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
![](https://images2017.cnblogs.com/blog/1232087/201712/1232087-20171221152151521-1183778038.png)
4.本题调试过程碰到问题及PTA提交列表情况说明。
无。二、截图本周题目集的PTA最后排名。
![](https://images2017.cnblogs.com/blog/1232087/201712/1232087-20171221152259834-1658093478.png)
三、阅读代码
代码一线性表用顺序实现
#include <stdio.h> #define N 10 typedef struct sqlist { int data ; int last; }LIST; int Total(List list) { int sum=0; for(int i=0;i<=list.last;i++) if(list.data[i]%2) sum+=list.data[i]; return sum; } void Show(LIST list) { int i; for(i=0;i<=list.last;i++) printf("%3d", list.data[i]); printf("\n"); } int main() { LIST list; int i,sum; for(i=0;i<=5;i++) list.data[i]=i; list.last=5; Show(list); sum=Total(list); printf("sum=%3d\n",sum); return 0; }
本题使用结构体定义,并且用了两个功能不同的函数,使主函数变得简洁,整体代码可读性更强。
代码二
猜数
```c
include
include
void creat(int secretp){
srand(time(NULL));
secretp = rand() % 100 + 1;
}
void guess(int secret)
{
int cnt = 0, a;
while(1)
{
printf("please input a num:");
scanf("%d", &a);
cnt++;
if(a == secret)
{
printf("cnt = %d\n", cnt);
break;
}
else if(a > secret)
printf("input a small one\n");
else
printf("input a big one\n");
}
}
int main(void)
{
int secret;
creat(&secret);
guess(secret);
return 0;
}
```
本题用了time.h的库函数,用在creat的函数里用srand(time(NULL))产生随机数,而guess函数则用来猜数,函数的使用使得整体代码可读性高,简洁,功能明显。
四、本周学习总结
1.总结本周学习内容。
1.1 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合。1.2定义一个结构的一般形式为:
struct 结构名
{
成员表列
};
使用时可以在上面分号前面加变量,也可以在函数内在定义。
1.3union共用体和结构体非常相似,二者最大的区别就是所占用的内存,一个是分量内存之和,另外一个是等于最大的分量的内存
1.4枚举类型enum 类型名{常量1,常量2....常量n} 变量名
枚举元素不是变量,而是常数,因此枚举元素又称为枚举常量。因为是常量,所以不能对枚举元素进行赋值。
1.5递归(recursion)就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法。
递归的关键在于归纳出递归式子,确定出口,写程序时只要给出运算规律,对于具体过程不要深究。
2.罗列本周一些错题。
![](https://images2017.cnblogs.com/blog/1232087/201712/1232087-20171221153120959-1688545777.png)
![](https://images2017.cnblogs.com/blog/1232087/201712/1232087-20171221152918115-1318454160.png)
对结构体的基本使用和概念不够娴熟和其他知识混淆。