C语言博客作业--结构体
2017-12-24 22:02
405 查看
一、PTA实验作业
题目1:6-1 计算两个复数之积
1. 本题PTA提交列表
2. 设计思路
struct complex multiply(struct complex x, struct complex y){ struct complex product;用于存放结果 执行运算 product.real=x.real*y.real-x.imag*y.imag; product.imag=x.imag*y.real+x.real*y.imag;以得出结果的实部和虚部 返回product
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
题目2:7-1 计算职工工资
1. 本题PTA提交列表
2. 设计思路
struct man{ char name[10]; float j,f,z;//分别为 基本工资 浮动工资 支出 实发工资 float s; };//该结构体表示人员,基本工资,浮动工资,支出,实发工资 输入N表示N个人 for i=0 to i=n-1{ 输入名字 基本工资 浮动工资 支出 op[i].s执行运算op[i].j+op[i].f-op[i].z } for i=0 to i=n-1{ 输出名字和实发工资 }
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
man op[]一开始写的100000无法运行,改小后可以运行;起初 基本工资 浮动工资 支出都定义为了int型,答案错误;输出的时候也没有循环多次输出。题目3:7-5 有理数比较
1. 本题PTA提交列表
2. 设计思路
struct fraction{ int m,n;//m为分母,n为分子 }; //该结构体表示分母和分子 struct fraction a,b;定义两个数 double x;//用于计算两分数相减 char ch;//用于输出符号 输入ab两个数的分母和分子 x执行运算a.n*1.0/a.m-b.n*1.0/b.m; if x>0 则a>b if x<0 则a<b if x==0 则a=b 输出
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
x=a.n1.0/a.m-b.n1.0/b.m;起初没有*1.0结果一直输出“=”二、截图本周题目集的PTA最后排名。
三、阅读代码
某习题struct country { int num; char name[10]; }x[5]={1,"China",2,"USA",3,"France",4, "England",5, "Spanish"}; struct country *p; p=x+2; printf("%d,%c",p->num,(*p).name[2]);
p是指向结构体的指针,p = x + 2 就相当于:p = x[0 + 2] = x[2];p->num中->是指针访问它的变量的运算符,(*p)就是相当于把p指向的内存取出里面的数据,“.”运算符访问它的变量name数组,x[2].name为"France",第一个F下标是0,那么下标为2的字母是a
某习题
把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
四、本周学习总结
1.总结本周学习内容
1.结构体struct 结构体名
{
成员表列
} 变量表列;
例:
struct data{ int a; char b; double c; } s1;
2.共用体
union 共用体名
{
成员表列
} 变量表列;
列:
union data { int i; char ch; float f; } a, b, c;
3.结构体与共用体
结构体:结构体和数组一样都是构造型数据类型,和数组不同的是,结构体可以处理不同类型的数据。
共用体:共用体是一种多变量共享存储空间的构造类型,它允许几种不同的变量共用同一存储空间。
4.函数的嵌套调用,在主函数main()中调用函数cal()
2.罗列本周一些错题。
答案d是错误的,因为调用函数中的实在参数为一个是整型变量n,一个是指针变量a[9]的地址,即为指针变量。因为函数的实在参数与形式参数应该类型相同,个数相同。而答案d中的两个参数均为整型变量,所以d是错误答案。答案a中的m为整型变量,x是一个数组类型的变量,而数组名代表数组的首地址,所以与形式参数类型相同。答案b与答案a原因相同。而答案c中的变量p为整型变量,变量s为指针类型的变量。
变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。