定义三角形类,完成:为三边置值、取三边的值并输出、求三角形周长、求三角形面积、输出三角形周长和面积。
分析:按照题目要求定义三角形类并依次设置成员函数。
#include <iostream> #include <cmath> using namespace std; class A //定义有关三角形的类 { int x,y,z; public : void in() {cin>>x>>y>>z;} void out() {cout<<"三边分别为:"<<x<<" "<<y<<" "<<z;} int l() {return (x+y+z);} double area() { double d; d=(x+y+z)/2.0; return (sqrt(d*(d-x)*(d-y)*(d-z))); } }; int main() { A a; a.in(); cout<<endl; a.out(); cout<<endl; cout<<"周长为:"<<a.l()<<endl; cout<<"面积为:"<<a.area()<<endl; return 0; }
输出结果
Last login: Sat Mar 5 16:34:02 on ttys001
3 4 5
三边分别为:3 4 5
周长为:12
面积为:6
i@HUAWEI-MateBook-X-Pro ~ %
*************************************
有3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果。
分析:设置结构体数组内存有三个数组元素,结构体包含人名以及得票数,输入人名后与数组中的人名比较,若相同,该成员的票数加一。
#include <iostream> #include <cstring> #include <cstdio> using namespace std; struct Person { char name[20]; int score; } leader[3]={"Li",0,"Zhang",0,"Sun",0}; int main() { int b=1,i=0; char a[20]; cout<<"输入选人次数 "<<endl; cin>>b; cout<<"输入人名 "<<endl; for(int j=0;j<b;j++) { cin>>a; for(i;i<3;i++) { if(strcasecmp(a,leader[i].name)==0) leader[i].score++; } i=0; for(int m=0;m<20;m++) a[m]=='\0'; } for(int i=0;i<3;i++) { cout<<leader[i].name<<" "<<leader[i].score<<endl; } return 0; }
输出结果
Last login: Wed Mar 9 21:52:38 on ttys000
输入选人次数
2
输入人名
Zhang Li
Li 1
Zhang 1
Sun 0
i@HUAWEI-MateBook-X-Pro ~ %
*****************************
有一个学生情况如表所示。编写程序,对该学生情况表按成绩(grade)从低到高进行排序。(要求:用多函数分别实现数据的输入,输出,排序,在主函数中调用这些函数完成操作)
分析:通过比较学生成绩,实现学生排序之间的调换。
#include <iostream> #include <cstdio> using namespace std; struct student { int a; char b[20]; char sex; int age; float grade; }; void in(struct student a[],int b)//数据输入 { for(int i=0;i<b;i++) { cin>>a[i].a>>a[i].b; cin>>a[i].sex>>a[i].age>>a[i].grade; } } void out(struct student a[],int b)//数据输出 { for(int i=0;i<b;i++) { cout<<a[i].a<<" "; cout<<a[i].b; cout<<" "<<a[i].sex<<" "<<a[i].age<<" "<<a[i].grade<<endl; } } void chang(struct student a[],int b,struct student c)//数据排序 { for(int n=0;n<b-1;n++) for(int m=0;m<b-n-1;m++) { if(a[m].grade>a[m+1].grade) { c=a[n]; a[n]=a[n+1]; a[n+1]=c; } } } int main() { int c; struct student stu[20],stu1; cout<<"输入学生人数 "<<endl; cin>>c; cout<<"输入学生信息 "<<endl; in(stu,c); cout<<"成绩排名 "<<endl; chang(stu,c,stu1); out(stu,c); return 0; }
输出结果:
Last login: Wed Mar 9 22:02:48 on ttys000
输入学生人数
3
输入学生信息
101 wang m 18 65.4
102 zhang f 19 54.4
103 zhao m 18 96.4
成绩排名
102 zhang f 19 54.4
101 wang m 18 65.4
103 zhao m 18 96.4
i@HUAWEI-MateBook-X-Pro ~ %
************************************
用类表示X-Y平面直角坐标系上的点,编写程序,顺序读入一个四边形的4个顶点坐标,判别由这些顶点的连线构成的图形是否为正方形、矩形或其它四边形。
#include <iostream> #include <cmath> using namespace std; class Ch {double x,y; public: void in() {cin>>x>>y;} double out1() {return x;} double out2() {return y;} }; double po(Ch a,Ch b) { return sqrt(pow(a.out1()-b.out1(),2)+pow(a.out2()-b.out2(),2)); } int main() { Ch p[4]; for(int i=0;i<4;i++) { cout<<"请输入第"<<i+1<<"个坐标:"; p[i].in(); cout<<endl; } if(fabs(po(p[0],p[1])-po(p[2],p[3]))<=1e-8&&fabs(po(p[0],p[3])-po(p[2],p[1]))<=1e-8&&abs(po(p[0],p[2])-po(p[3],p[1]))<=1e-8) { if(po(p[0],p[1])==po(p[0],p[3])||po(p[0],p[1])==po(p[0],p[2])||po(p[0],p[3])==po(p[0],p[2])) cout<<"四个顶点构成的图形为正方形!"; else cout<<"四个顶点构成的图形为矩形!"; } else cout<<"四个顶点构成的图形为其它四边形!"; return 0; }
运行结果
Last login: Sat Mar 5 17:44:51 on ttys001
请输入第1个坐标:1 1
请输入第2个坐标:0 0
请输入第3个坐标:0 1
请输入第4个坐标:1 0
四个顶点构成的图形为正方形!%
i@HUAWEI-MateBook-X-Pro ~ %
3441

被折叠的 条评论
为什么被折叠?



