C语言第十次博客作业--结构体
一、PTA实验作业(5分)
题目1:6-3 结构体数组中查找指定编号人员
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路
struct student
{ char num[10];
int year,month,day ;
};该结构体表示人员的编号,出生年月日。
定义一个环境变量
for i=0 to i<8
若找到指定编号,则return *(std+i)
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 一开始用flag来作为返回判断,不知道为什么答案错误。不用flag直接返回则正确。
题目2:7-1 计算职工工资
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路
struct money{
char num[9];
float jimoney;
float fumoney;
float zhimoney;
float sum;
};该结构体表示给定N个职员的信息,包括姓名、基本工资、浮动工资和支出。
定义环境变量i,整数n
输入n
定义结构体mon[n]
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.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 定义工资时用了整型导致一直答案错误。
题目3:7-6 通讯录的录入与显示
1. 本题PTA提交列表(要提交列表,不是结果)
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.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 无。
二、截图本周题目集的PTA最后排名。
三、阅读代码
代码一
线性表用顺序实现
#include <stdio.h>
#define N 10
typedef struct sqlist
{
int data[N];
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;
}
- 本题使用结构体定义,并且用了两个功能不同的函数,使主函数变得简洁,整体代码可读性更强。
代码二
猜数
#include <stdio.h>
#include <time.h>
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.罗列本周一些错题。
- 对结构体的基本使用和概念不够娴熟和其他知识混淆。