CPP2022-13-结构体与枚举(上)

简介: CPP2022-13-结构体与枚举

1. &time.hour,&time.minute,&time.second
2. time.second
3. time.minute++
4. time.hour==24

1. t/3600
2. t/60%60
3. %02d:%02d:%02d

6-1 计算两个复数之积

分数 10

全屏浏览题目

切换布局

作者 张泳

单位 浙大城市学院

本题要求实现一个计算复数之积的简单函数。

函数接口定义:

struct complex multiply(struct complex x, struct complex y);

其中struct complex是复数结构体,其定义如下:

struct complex{ int real; int imag; };

裁判测试程序样例:

#include <stdio.h> struct complex{ int real; int imag; }; struct complex multiply(struct complex x, struct complex y); int main() { struct complex product, x, y; scanf("%d%d%d%d", &x.real, &x.imag, &y.real, &y.imag); product = multiply(x, y); printf("(%d+%di) * (%d+%di) = %d + %di\n", x.real, x.imag, y.real, y.imag, product.real, product.imag); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

3 4 5 6

输出样例:

(3+4i) * (5+6i) = -9 + 38i
1. struct complex multiply(struct complex x, struct complex y)
2. {
3. int real,imag;
4.     real=x.real*y.real-x.imag*y.imag;
5.     imag=x.imag*y.real+x.real*y.imag;
6. struct complex ans={real,imag};
7. return ans;
8. }

6-2 空间两点间的距离

分数 5

全屏浏览题目

切换布局

作者 庄波

单位 滨州学院

已知空间中两点 A(x1,y1,z1) 和 B(x2,y2,z2) 之间的欧氏距离定义为:(x1−x2)2+(y1−y2)2+(z1−z2)2。

本题要求实现一个函数,计算平面上两点之间的欧氏距离,平面上点的坐标通过以下结构给出:

struct point { double x, y, z; };

函数接口定义:

// 计算并返回平面上两点 a 和 b 之间的欧氏距离 double distance(struct point a, struct point b);

裁判测试程序样例:

#include <stdio.h> #include <math.h> struct point { double x, y, z; }; void read_point(struct point *p); double distance(struct point a, struct point b); int main(void) { struct point p1, p2; read_point(&p1); read_point(&p2); printf("%f\n", distance(p1, p2)); return 0; } void read_point(struct point *p) { scanf("%lf %lf %lf", &p->x, &p->y, &p->z); } /* 请在这里填写答案 */

输入样例:

在这里给出一组输入。例如:

0 0 0 3 0 4

输出样例:

在这里给出相应的输出。例如:

5.000000
1. double distance(struct point a, struct point b)
2. {
3. double ans;
4.     ans=sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2)+pow(a.z-b.z,2));
5. return ans;
6. }

7-1 复数运算

分数 5

全屏浏览题目

切换布局

作者 李军

单位 陕西理工大学

复数是由两个实数分别作为实部和虚部构成的一个复合数,从另一个角度来说复数就是由两个实数构成的有序对,在C语言中适合用结构类型来表示复数。现在要求用结构类型

typedef struct { float x; float y; } Comp;

及其变量来表示与存储复数,编写程序实现复数的加减法运算。

输入格式:

在一行输入四个用空格分开的实数a1 b1 a2 b2分别表示复数c1 = a1 + b1ic2 = a2 + b2i

输出格式:

复数的输出应符合数学上关于复数的表示习惯:实部与虚部都为零时只输出一个0.00; 有一个为零时,只输出非零的部分; 虚部为负时,例如3-4i,应输出为3.00-4.00i的形式,不要输出为3.00+-4.00i。实部与虚部均保留2位小数,例如3.00-4.00i

输出在两行进行,第一行输出求和的结果,第二行输出求差的结果。

输入样例:

5.00 4.00 3.00 2.00

输出样例:

1. 8.00+6.00i
2. 2.00+2.00i
1. #include<bits/stdc++.h>
2. using namespace std;
3. struct complex_om
4. {
5. double x;
6. double y;
7. }com[2];
8. int main()
9. {
10. double x1,y1,x2,y2;
11.     cin>>x1>>y1>>x2>>y2;
12.     com[0].x=x1+x2;
13.     com[0].y=y1+y2;
14.     com[1].x=x1-x2;
15.     com[1].y=y1-y2;
16. for(int i=0;i<2;i++)
17.     {
18. if(com[i].x==0&&com[i].y==0)
19.         {
20.             cout<<0.00<<endl;
21.         }
22. else if(com[i].x==0)
23.         {
24.             cout<<fixed<<setprecision(2)<<com[i].y<<"i"<<endl;
25.         }
26. else if(com[i].y==0)
27.         {
28.             cout<<fixed<<setprecision(2)<<com[i].x<<endl;
29.         }
30. else if(com[i].y<0)
31.         {
32.             cout<<fixed<<setprecision(2)<<com[i].x<<fixed<<setprecision(2)<<com[i].y<<"i"<<endl;
33.         }
34. else
35.         {
36.             cout<<fixed<<setprecision(2)<<com[i].x<<"+"<<fixed<<setprecision(2)<<com[i].y<<"i"<<endl;
37.         }
38.     }
39. return 0;
40. }

7-2 结构体应用:计算总分及最高分

分数 10

全屏浏览题目

切换布局

作者 ww

单位 中国计量大学现代科技学院

本题目要求先输入正整数N,然后输入N个类型为结构体stud的数组元素,计算每个学生的总分,输出每个学生的学号、姓名、三门课的成绩及总分;计算全部成绩的平均分并输出;输出总分最高同学的各项信息。

struct stud {

int num; //学号

char name[10]; //姓名

int score[3]; //3门课成绩

int sum; //总分

};

输入格式:

先输入不超过10的一个正整数N,然后每行输入一个学生的信息(学号、姓名、三门课成绩)。学号在整数范围内,姓名长度小于10个字符。

输出格式:

首先输出每个学生的信息(包括学号、姓名、三门课成绩、总分),数据项之间空1格,每人一行;再输出全部成绩的平均分;最后输出总分最高(假设没有相同总分)同学的学号、姓名、三门课成绩及总分,数据项之间空1格。

输入样例:

在这里给出一组输入。例如:

1. 4
2. 1  张三  81  85  82
3. 2  李四  82  78  74
4. 3  王五  85  74  90
5. 4  赵六  77  85  79

输出样例:

在这里给出相应的输出。例如:

1. 1 张三 81 85 82 248
2. 2 李四 82 78 74 234
3. 3 王五 85 74 90 249
4. 4 赵六 77 85 79 241
5. 总平均分=81.000000
6. 3 王五 85 74 90 249
1. #include<bits/stdc++.h>
2. using namespace std;
3. struct student
4. {
5. int num;
6.     string name;
7. int score[3];
8. int sum;
9. };
10. int main()
11. {
12. int sum_all=0;
13. int n,max=-1;
14.     cin>>n;
15. struct student information[100];
16. for(int i=0;i<n;i++)
17.     {
18.         cin>>information[i].num>>information[i].name>>information[i].score[0]>>information[i].score[1]>>information[i].score[2];
19.         information[i].sum=information[i].score[0]+information[i].score[1]+information[i].score[2];
20.     }
21. for(int i=0;i<n;i++)
22.     {
23.         cout<<information[i].num<<" "<<information[i].name<<" "<<information[i].score[0]<<" "<<information[i].score[1]<<" "<<information[i].score[2]<<" "<<information[i].sum<<endl;
24.     }
25. for(int i=0;i<n;i++)
26.     {
27.         sum_all=sum_all+information[i].sum;
28. if(information[max].sum<information[i].sum)
29.         {
30.             max=i;
31.         }
32.     }
33. double avg;
34.     avg=(double)sum_all/(3*n);
35.     cout<<"总平均分="<<fixed<<setprecision(6)<<avg<<endl;
36.     cout<<information[max].num<<" "<<information[max].name<<" "<<information[max].score[0]<<" "<<information[max].score[1]<<" "<<information[max].score[2]<<" "<<information[max].sum;
37. }
相关文章
|
6月前
|
编译器 C++
CPP的常量引用
CPP的常量引用
52 0
|
机器学习/深度学习 存储
CPP2022-13-结构体与枚举(下)
CPP2022-13-结构体与枚举(下)
256 0
|
6月前
|
存储 程序员 C++
定义和使用结构体变量
定义和使用结构体变量
54 1
|
6月前
|
存储 C语言
定义结构体类型变量
定义结构体类型变量
38 0
|
6月前
|
程序员 C语言
结构体类型变量的定义
结构体类型变量的定义
38 0
|
6月前
#define定义常量和宏
#define定义常量和宏
41 0
|
6月前
|
存储 C++
[C++] 结构体Struct类型和变量定义
[C++] 结构体Struct类型和变量定义
116 0
|
编译器
#define 定义常量和宏
工作机理:直接替换,以下列代码为例编译器直接将用到max的地方替换为100
65 0
|
存储 C#
C#基础⑥.1——枚举、结构体
枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。也就是一些固定范围的值。
|
存储 C#
C#基础Ⅵ❶-枚举、结构体
C#基础Ⅵ❶-枚举、结构体