问题及代码:
/*
* Copyright (c) 2015, 烟台大学计算机学院
* All rights reserved.
* 文件名称:Project4.cpp
* 作 者:李楠
* 完成日期:2015年1月23日
* 版 本 号:v1.0
*
* 问题描述:设计函数,可以按指定的方式,输出一个平面点的对称点
下面给出枚举类型定义和main函数(测试函数),请写出output函数的实现。
* 输入描述:略
* 程序输出:略
*/
#include<iostream>
using namespace std;
enum SymmetricStyle {axisx, axisy, point};//分别表示按x轴, y轴, 原点对称三种方式
void output(double,double,SymmetricStyle);
int main()
{
int x,y;
cout<<"输入点的坐标:";
cin>>x>>y;
cout<<"关于x轴的对称点是:";
output(x,y,axisx);
cout<<"关于y轴的对称点是:";
output(x,y,axisy);
cout<<"关于坐标原点的对称点是:";
output(x,y,point);
return 0;
}
void output(double x,double y,SymmetricStyle style)
{
if(style==axisx)
cout<<"("<<x<<","<<-y<<")"<<endl;
if(style==axisy)
cout<<"("<<-x<<","<<y<<")"<<endl;
if(style==point)
cout<<"("<<-x<<","<<-y<<")"<<endl;
}
运行结果:
知识点总结:
因为枚举常量作为常量是有值的,编译按定义时的顺序对它们赋值为:0,1,2,3,4……,所以也可以写成 if(style==0)
自定义函数不用if语句也可以用switch写成:
- void output(double x,double y,SymmetricStyle n)
- {
- switch(n)
- {
- case 0 :
- cout << '(' << x << ',' << -y << ')' << endl ;
- break ; //x轴对称
- case 1 :
- cout << '(' << -x << ',' << y << ')' << endl ;
- break ; //y轴对称
- case 2 :
- cout << '(' << -x << ',' << -y << ')' << endl ;
- break ; //原点对称
- }
- }
学习心得:
要懂得变通~枚举还是挺好玩的~