C语言博客作业—结构体
2017-12-24 22:32
429 查看
一、PTA实验作业
题目1:结构体数组按总分排序
1. 本题PTA提交列表
2. 设计思路
void calc //函数calc求出p指针所指的结构体数组中 n 名学生各自的总分 { 定义循环变量i; for i=0 to i<n 总分sum=三门课之和; end for } void sort // 函数sort对p指针所指的结构体数组的学生数据按总分降序排序 { 定义循环变量i,j; 定义结构变量max,temp; for i=0 to i<n-1 先把最大组设为第i组; for j=i+1 to j<5 如果第j组的总分大于最大组的总分 利用temp交换,保留总分最大的组; end for 第i组换为最大组; end for }
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
一开始不知道作为中间交换的temp也要设成结构变量,提示编译错误后,试着换一个定义,然后就好啦。改正了一些编译错误后,一开始输出一直都是最大的那个五号,是排序法掌握的不够熟练,导致找到最大值后就结束程序了;改正后,输出结果如下:最后一个比较出现错误,可能是循环条件有问题;但是调试不出什么,后来想起来上一次自己犯的错误,转换的时候没有加上大括号!!!一步一步执行所以调试不容易发现这个地方有错,,,
题目2:计算职工工资
1. 本题PTA提交列表
2. 设计思路
struct { char name[20]; float jbgz; float fdgz; float zc; }fact[10000];//该结构体表示职员的信息,包括姓名、基本工资、浮动工资和支出 主函数 { 定义循环变量 i;职员人数N; 输入N; for i=0 to i<N 输入职员信息:姓名、基本工资、浮动工资和支出 ; end for for i=0 to i<N 输出职员的姓名,实发工资( 基本工资加浮动工资减支出 ); end for
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
由于没有给出职员的人数,所以一开始只给了十个但是显示段错误,我以为是名字的长度不够,但是并不是;看了同学的代码以后发现可能是职员人数的问题,可以先输入N再定义结构体,试了一下确实可以,但是我觉得先定义结构体代码看起来会比较整洁,所以试了一百个,还是不够,我就直接改成了一万个就可以了。题目3:通讯录的录入与显示
1. 本题PTA提交列表
2. 设计思路
struct person { int number; char name[100]; char birth[100]; char gender; char line[100]; char phone[100]; }p[100];//该结构体表示联系人的编号、姓名、出生日期、性别、固定电话号码、移动电话号码 主函数 { 定义输入联系人的人数为N,查询的人数为K,num,循环变量i,j,flag; 输入N; for i=0 to i<N 编号=i,输入 联系人的编号、姓名、出生日期、性别、固定电话号码、移动电话号码; end for 输入K; 定义数组a[K]; for i=0 to i<K 输入a[i]; for i=0 to i<K flag=0; for j=0 to j<N if(找到编号) 输出联系人的姓名、 固定电话号码、移动电话号码、性别、出生日期,flag=1; end for if(flag等于0) 输出"Not Found" end for }
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
输入实例一开始总是输出p[0]和p[1],通过调试发现输出里面一开始输出p[i],后来改成嵌套循环后应该输出的是p[j],所以导致答案错误;改正后输出正确,但是不能输出没有找到的情况,猜测是flag出现问题;判断一次找到后flag的值就变成1了,这个样子没有办法每次都判断是否找到,所以把flag=0放到外层循环就可以进行正确判断了;
二、截图本周题目集的PTA最后排名。
三、阅读代码
1. 输入10个同学的姓名、数学成绩、英语成绩和物理成绩,确定总分最高的同学,并打印其姓名及其三门课程的成绩。
做了本周作业不会觉得这道题很麻烦,但是该示例的解题过程引入了结构体指针(定义的变量名有点长),这是我写作业的时候没有用到的(因为不太熟悉所以不敢用)。
2.结构体嵌套示例:
本来想用一个嵌套结构体写一道作业,但是没有写出来,所以看了看这段代码,稍微理解了一点嵌套。
四、本周学习总结
1.自己总结本周学习内容。
结构体(数据结构丰富 ,型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等都可以包含在结构体内)
结构体 struct 结构体类型名 { 类型1 成员1; 类型2 成员2; ...... 类型n 成员n; }变量列表; //如果要声明变量结构,可以在结构定义时,在结束的分号之前加上这些变量的名字,也可以在定义结构之后使用struct 结构名 变量列表;语句声明结构变量。 //只有相同结构类型的变量之间才可以直接整体赋值!(不能在结构体内部直接给成员赋值) //嵌套定义的结构变量中,每个成员按从左到右,从外到内的方式引用。
共用体
union 共用体名{ 成员列表 }变量列表; //值为最后一次存放的成员的值 //长度等于最长成员的长度
递归
递归出口递归式子