如何用C语言编写一个程序,输出一个汉字,用方向键控制它在屏幕上的显示位置?编译器要用Visual C++6.0

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用C语言编写一个程序,输出一个汉字,用方向键控制它在屏幕上的显示位置?编译器要用Visual C++6.0相关的知识,希望对你有一定的参考价值。

C语言,别用C++。能把源代码发过来不?

参考技术A #include <stdio.h>
#include <conio.h>
#include <windows.h>
#define MAX_X 78 //汉字占两个位置
#define MAX_Y 23 //avoid
typedef _CONSOLE_CURSOR_INFO CurInfo;
COORD curPos = 0 , 0;
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
CurInfo*initialInfo = NULL, currentInfo;
int hideCursor(int state) //1 hide

if(state == 1)
if(initialInfo == NULL)

initialInfo = (CurInfo *)malloc(sizeof(CurInfo));
GetConsoleCursorInfo(hCon, initialInfo);

currentInfo.dwSize = initialInfo->dwSize;
currentInfo.bVisible = false;
SetConsoleCursorInfo(hCon, ¤tInfo);
else
if(initialInfo != NULL)
SetConsoleCursorInfo(hCon, initialInfo);
free(initialInfo);
initialInfo = NULL;


return 0;

int setCurrentPos(int press)
switch(press)

case 75: //left
curPos.X = curPos.X == 0 ? 0 : curPos.X - 1;break;
case 72: //up
curPos.Y = curPos.Y == 0 ? 0 : curPos.Y - 1;break;
case 77: //right
curPos.X = curPos.X >= MAX_X ? MAX_X : curPos.X + 1;break;
case 80: //down
curPos.Y = curPos.Y >= MAX_Y ? MAX_Y : curPos.Y + 1;break;
default:
return -1;

return 0;

int main()
char *str = "人";
printf(str);
hideCursor(1);
while(1)
int press = getch();
if(press == 224) //方向键第一个值
SetConsoleCursorPosition(hCon, curPos); //FOR CLEAR UP
if(setCurrentPos(getch()) == 0)

printf(" "); // clear up, or use system("cls");
SetConsoleCursorPosition(hCon, curPos);printf(str);

else if(press == 27) //if press esc, exit
hideCursor(0);
break;



return 0;
追问

.obj - 1 error(s), 0 warning(s)
C:\Users ......obj.cpp(21) : error C2065: 'tInfo' : undeclared identifier
这个源码里许多东西我都看不懂,是纯C不?

追答

line 21, SetConsoleCursorInfo(hCon, ¤tInfo);

改成SetConsoleCursorInfo(hCon, & currentInfo); //把 & 和c 之间的空格去掉
是C 但是用到了 windows一些API

& currentInfo 打不出来 ¤tInfo

如何用C语言编写一个程序,输入10个0-9之间的整数,请统计每个数字出现的个数,并输出?

#include<stdio.h>
int num[10],count[10], i=0,temp;
//判断输入的数字是否是0到9之间的数
int input(int num)
if(num>=0&&num<=9)
return 1;
else
return 0;


//初始化计数的数组
void initCount()
int i = 0;
for(i=0;i<10;i++)
count[i]=0;


//统计每个数字出现的次数
void numCount(int num)
int i;
for(i=0;i<10;i++)
if(i==num)
count[i]++;



//输入数字
void runProm()
initCount();
for(;i<10;)
printf("请输入第%d个数:",(i+1));
scanf("%d",&temp);
if(input(temp)==1)
num[i]=temp;
numCount(num[i]);
i++;
else
printf("你输入的数字不在0到9之间,请重新输入!\n\n");
runProm();



void main()
int i;
runProm();
//输出每个数出现了几次
for(i=0;i<10;i++)
printf("%d出现了%d次!\n",i,count[i]);

参考技术A #include<stdio.h>
#include<string.h>
int main()

int cnt[10]=0,temp,state=1;
printf("enter 10 nums between 0 and 10");
for(int i=0;i<10;i++)

scanf("%d",&temp);
if(temp>=10||temp<0) state=0,break;
cnt[temp]+=1;

if(state)
for(int i=0;i<10;i++)

printf("%d:%3d",i,cnt[i]);

else printf("ERROR");
return 0;

以上是关于如何用C语言编写一个程序,输出一个汉字,用方向键控制它在屏幕上的显示位置?编译器要用Visual C++6.0的主要内容,如果未能解决你的问题,请参考以下文章

如何用c读取文件

请问如何用C语言实现汉字,和Unicode编码的转换?

c语言如何随机输出同学名字?

如何用JavaScript编写一个万年历

怎样用C语言编写个爱心图象

如何用jetbrains的Clion编写c语言