您的位置:首页 > 编程语言 > C语言/C++

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错误再与输入结构数组的时候不需要用取地址符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: