求高手帮帮忙写个控制台程序,要求能在VC++6.0上运行
当我按键盘上的上下左右键是分别是在屏幕上输出1,2,3,4.急!!!!!!!写的快的好的另外加分...
当我按键盘上的上下左右键是分别是在屏幕上输出1,2,3,4.
急!!!!!!!写的快的好的另外加分 展开
急!!!!!!!写的快的好的另外加分 展开
2个回答
展开全部
要求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时,就是按下了方向键的标志。然后读取下一字节缓冲区来判断具体是哪个方向
展开全部
按大写的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;
}
按上下左右箭头键输出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字节 字符值。 否则 有些操作系统下 数值 不正确(会自动添高位值)。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询