求高手帮帮忙写个控制台程序,要求能在VC++6.0上运行

当我按键盘上的上下左右键是分别是在屏幕上输出1,2,3,4.急!!!!!!!写的快的好的另外加分... 当我按键盘上的上下左右键是分别是在屏幕上输出1,2,3,4.

急!!!!!!!写的快的好的另外加分
展开
 我来答
yuantailing
2013-08-08 · TA获得超过2545个赞
知道小有建树答主
回答量:1167
采纳率:92%
帮助的人:663万
展开全部

要求Windows环境,既然你都说了VC++6.0那么当然没问题。

#include <stdio.h>
#include <conio.h>
int main()
{
while (1){
if (kbhit()){
unsigned char ch = getch();
if (ch == 224){
unsigned char t = getch();
switch(t){
case 72: putchar('1'); break;
case 75: putchar('3'); break;
case 77: putchar('4'); break;
case 80: putchar('2'); break;
}
}
}
}
return 0;
}
更多追问追答
追问
if (ch == 224)是什么意思
追答
按方向键,键盘缓冲区会有两个字符。当检测到第一个字符是224时,就是按下了方向键的标志。然后读取下一字节缓冲区来判断具体是哪个方向
金色潜鸟
2013-08-08 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5737万
展开全部
按大写的C退出。
按上下左右箭头键输出1234。
按其它键无反应。

#include <stdio.h>
#include <conio.h>
main(){
int c1,c2;
printf("Enter C key to quit\n");
while (1){
c1 = getch();
if ( (0xff & c1)=='C') return 0;
if ( (0xff & c1) == 0xe0){
c2 = getch();
switch (0xff & c2){
case 0x48: printf("1");break;
case 0x50: printf("2");break;
case 0x4b: printf("3");break;
case 0x4d: printf("4");break;
default:break;
};
}
}
return 0;
}
追问
0xff & c1、0xff & c2是什么
追答
取1字节 字符值。 否则 有些操作系统下 数值 不正确(会自动添高位值)。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式