C语言博客作业--结构体
2017-12-24 18:09
471 查看
一、PTA实验作业
题目1:6-1 计算两个复数之积
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(伪代码或流程图)
struct complex{ int real; int imag; };//该结构体表示复数的实部和虚部。 定义一个结构体变量 product表示相乘后的复数 product.real(表示新复数的实部)=一个实部乘上另一个数的实部 - 一个数的虚部*另一个数的虚部 product.imag(新复数的虚部)=(x.real*y.imag)+(x.imag*y.real); 返回 product;
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
这道题的难点在于如何表示新的复数,刚开始的时候想了挺久的,不知道要怎样直接将整个复数表示出来,后来换了一个思路,就是将实部和虚部分别计算。
题目2:7-1 计算职工工资
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路
struct staff{ char name[11]; float jbear; float fdear; float cost; float income; }该结构体分别表示职工的姓名,基本收入,浮动收入,发费,和总收入 定义一个 n 表示查询的员工数 输入 n 定义结构体变量 s for i=0 to i=n-1 输入 对应员工的姓名,基本收入,浮动收入,发费 总收入=基本收入+浮动收入-发费。 end for for i=0 to i=n-1 输出 对应的姓名和总收入 end for
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
本题呢,其实我是一遍就过得,哈哈哈,不懂要说什么,说注意点吧,就主要是对结构体数组的使用,下表注重以下,就没有什么难点。
题目3: 通讯录的录入与显示
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路
struct infor{ int year,month,day; char name[20]; char c; char gd[20],yd[20]; }; 这个结构体是表示出生的时间月份,姓名,性别,固定电话,移动电话。 定义一个n,表示下面将要输入n个人的信息。 定义一个结构体数组 s for i=0 to i=n-1; 输入 姓名,性别,固定电话,移动电话 end for 再定义 y m y表示查询的次数, m表示查询的编号 for i=0 to i=y-1 输入m 如果 m<=n-1&&m>=0 { 输出 姓名,固定电话,移动电话,性别,和出生年月日。 } 否则 输出 Not Found end for
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明
本题 其实我还没有作对,我也不知道哪里出错了,感觉思路都很ok,需要林丽老师帮我解答二、截图本周题目集的PTA最后排名。(
三、阅读代码(2分)
下面代码是要求输入老师和同学的信息,然后整理好,如果输入的是成绩表示输入的是学生,如果输入时学科则表示是老师#include <stdio.h> #include <stdlib.h> #define TOTAL 4 //人员总数 struct{ char name[20]; int num; char sex; char profession; union{ float score; char course[20]; } sc; } bodys[TOTAL]; int main(){ int i; //输入人员信息 for(i=0; i<TOTAL; i++){ printf("Input info: "); scanf("%s %d %c %c", bodys[i].name, &(bodys[i].num), &(bodys[i].sex), &(bodys[i].profession)); if(bodys[i].profession == 's'){ //如果是学生 scanf("%f", &bodys[i].sc.score); }else{ //如果是老师 scanf("%s", bodys[i].sc.course); } fflush(stdin); } //输出人员信息 printf("\nName\t\tNum\tSex\tProfession\tScore / Course\n"); for(i=0; i<TOTAL; i++){ if(bodys[i].profession == 's'){ //如果是学生 printf("%s\t%d\t%c\t%c\t\t%f\n", bodys[i].name, bodys[i].num, bodys[i].sex, bodys[i].profession, bodys[i].sc.score); }else{ //如果是老师 printf("%s\t%d\t%c\t%c\t\t%s\n", bodys[i].name, bodys[i].num, bodys[i].sex, bodys[i].profession, bodys[i].sc.course); } } return 0; }
本题的优点在于,在结构体中利用了一个共同体,这不仅可以节省内存,而且用法很巧妙,
四、本周学习总结(1分)
1.总结本周学习内容。
本周学习了,结构体1:结构体的概念,定义。结构体是一种新的数据构造类型,他能把不同类型数据汇聚成一个整体,使它们相互关联;
2:还有就是结构体数组和结构体指针的使用,
3:还有一个印象深刻的就是递归,说实话递归有点难以理解,总是会给绕进去。好需要好好领会一下
2.罗列本周一些错题。
程序填空题:输入n(3<n<=10)个职工的编号、姓名、基本工资、职务工资,输出其中“基本工资+职务工资”最少和最多的职工姓名。
输入输出示例:
n=5
1,林宏,1800,600
2,李涛,1700,550
3,王钢,2100,750
4,周航,1500,450
5,金明,2300,850
基本工资+职务工资最少的是:周航
基本工资+职务工资最多的是:金明
这题 我的答案的 struct worker s
&num,name,&jbpay,&zwpay;
max=i; min=i;标准答案是struct Worker s[10]
&s[i].num,s[i].name,&s[i].jbpay,&s[i]zwpay
max=i
min=i错误再与输入结构数组的时候不需要用取地址符