《C语言及程序设计》实践项目——枚举应用
2015-07-06 10:49
190 查看
返回:贺老师课程教学链接
【项目1-对称点】
设计函数,可以按指定的方式,输出一个平面点的对称点
下面给出枚举类型定义和main函数(测试函数),请写出output函数的实现。
[参考解答]
【项目2-敲了哪一个键?】
在应用中,常需要检测键盘上敲了哪一个键。每个输入的键都对应一个键值(我们熟悉的字母、数字等,键值就是其ASCII码)。在一些游戏、控制程序中,常用到的,诸如上下左右方向键、PgDn和PgUp这样的翻页键,以及ESC退出键等。用getch()捕获键盘输入,若输入的是PgDn(下一页,键值161)、PgUp(上一页,键值153),就给出提示,若是其他键,将输出符号及其对应的键值,直到输入ESC(键值27)后,程序结束。
(1)请运行程序,记录下用于控制光标的八个键(→↑↓←四个方向键,以及Home、End、PgDn、PgUp)的键值。
(2)改造上面的程序,使其在输入控制光标的八个键后,能够提示相关的信息(对应在游戏和控制程序中,用于完成相应的动作,如游戏中,按→,将发动攻击)。要求:在程序中,直接写出ch == 161之类的代码,程序的可读性太差了,请自定义并使用枚举类型,编写出“专业”的程序来。
[参考解答]
【项目1-对称点】
设计函数,可以按指定的方式,输出一个平面点的对称点
下面给出枚举类型定义和main函数(测试函数),请写出output函数的实现。
#include<stdio.h> enum SymmetricStyle {axisx, axisy, point};//分别表示按x轴, y轴, 原点对称三种方式 void output(double,double,enum SymmetricStyle); int main() { double x,y; printf("输入点的坐标:"); scanf("%lf %lf", &x, &y); printf("关于x轴的对称点是:"); output(x,y,axisx); printf("关于y轴的对称点是:"); output(x,y,axisy); printf("关于坐标原点的对称点是:"); output(x,y,point); return 0; }
[参考解答]
【项目2-敲了哪一个键?】
在应用中,常需要检测键盘上敲了哪一个键。每个输入的键都对应一个键值(我们熟悉的字母、数字等,键值就是其ASCII码)。在一些游戏、控制程序中,常用到的,诸如上下左右方向键、PgDn和PgUp这样的翻页键,以及ESC退出键等。用getch()捕获键盘输入,若输入的是PgDn(下一页,键值161)、PgUp(上一页,键值153),就给出提示,若是其他键,将输出符号及其对应的键值,直到输入ESC(键值27)后,程序结束。
#include <stdio.h> #include <conio.h> int main() { int ch; do{ ch=getch(); //从键盘读入 //若关于键盘管理的知识积累不够,请暂时不必搞懂这个if语句中的处理 if ( ch == 0xe0 ) { ch=getch(); ch+=80; } //从下面开始读懂程序 if ( ch == 161 ) printf("PageDown\n"); else if ( ch == 153 ) printf("PageUp\n"); else printf("ch=%c keyValue=%d\n", ch, ch); } while (ch != 27 ); //ESC 退出 return 0; }
(1)请运行程序,记录下用于控制光标的八个键(→↑↓←四个方向键,以及Home、End、PgDn、PgUp)的键值。
(2)改造上面的程序,使其在输入控制光标的八个键后,能够提示相关的信息(对应在游戏和控制程序中,用于完成相应的动作,如游戏中,按→,将发动攻击)。要求:在程序中,直接写出ch == 161之类的代码,程序的可读性太差了,请自定义并使用枚举类型,编写出“专业”的程序来。
[参考解答]
相关文章推荐
- VC++2008中快速运用OpenCV打开图像文档
- VC++:结合设备安装类GUID和设备接口类GUID获取设备VIDPID
- 重新认识C语言
- 重新认识C语言
- C++实现循环队列之顺序存储
- QTC++ widget中使用QML编写的UI界面
- C++重载operator = 和初始化 =
- C++编译问题-检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式
- VS2008切换环境(c#,c++,other)
- 【C++】栈空栈满异常处理
- chapter16test2
- C++拷贝构造函数详解
- ubuntu下用Eclipse完成C语言编程练习
- C++的深拷贝与浅拷贝
- 跳跃表(Skip List)的实现及测试 C++实现
- chapter16test1
- C++中关于输入输出流中c_str
- 黑马程序员——C语言之选择排序、折半查找法与二维数组
- C++ Virtual详解
- 最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)