C语言程序问题,编译成功可却不能运行,这是为什么

C语言程序问题,编译成功可却不能运行,这是为什么,第1张

这是一个不能再正常的问题了。就像,我拿起了菜刀,为什么切不好迹兄土豆丝一样。

只有熟练的掌握了土豆丝的切法,方可随心的切出土豆丝来。

只有熟练掌握了C语言编写某类问题代码的技能,誉岩也才能编写出解决这类问题的程序来。

编译成功只能说没有语法错误,就像会用刀姿虚袭切,不会切到手,并不意味着就能切出粗细均匀的土豆丝来,也就是并不一定能够实现功能。

具体为什么,还需要具体问题具体分析了

你是不是运行了几次了啊,如孝芦果你已经运行了当前程序,在没有关镇慎纳闭你所编写的当前程序的进程的情况下是没法再编译运行的,方法是打开进程管理器结束进程,要是你自己都不清楚自御没己的程序进程名,那就只能注销计算机再启动了。

希望对你有用!

你这样的书写方式太乱了。你要把你的计算器模块化。

1.键盘输入。不知道你的这个是不是4*4矩阵键盘,键盘输入应该作为一笑兄渗个单独的模块。

void _delayKey(unsigned int i) {while(i--)}

unsigned char catchKey(){

unsigned char cord_h,cord_l//行列值中间变量

KEYPORT=0x0f //低位线输出尘神全为1 ,高位线为0

cord_h=KEYPORT&0x0f//读入低位线值

if(cord_h!=0x0f){ //低位线值变化,有按键输入

KEYPORT=0xf0 //低位线输出全为0 ,高位线为1

cord_l=KEYPORT&0xf0 //读入高位线值

if(cord_l==0xf0){ //无法捕捉了提前释放了

return 0xff

}

_delayKey(200)

do{

KEYPORT=0x0f

}while(KEYPORT!=0x0f)//捕捉释放

return cord_h+cord_l//键盘最后组合码值

}

return 0xff//返回无键盘输入值

}

比如我写碰脊的这个键盘扫描函数。(开始学习单片机的时候写的,应该还可以继续完善。)

通过获取catchKey()的返回值就可以确定是否有键盘输入,输入的是什么键。

键盘输入的值要自己根据单片机连接自己找到。

我的键值是

#define NOPRESS 0xff //无按下

#define KEY0 0xee //0

#define KEY1 0xde //1

#define KEY2 0xbe //2

#define KEY3 0x7e //3

#define KEY4 0xed //4

#define KEY5 0xdd //5

#define KEY6 0xbd //6

#define KEY7 0x7d //7

#define KEY8 0xeb //8

#define KEY9 0xdb //9

#define KEYA 0xbb //a

#define KEYB 0x7b //b

#define KEYC 0xe7 //c

#define KEYD 0xd7 //d

#define KEYE 0xb7 //e

#define KEYF 0x77 //f

按键的排列顺序

0 1 2 3

4 5 6 7

8 9 a b

c d e f

这是我键盘的排列。4*4矩阵键盘。

2.计算程序。

//按键定义

#define NUM1 KEY0

#define NUM2 KEY1

#define NUM3 KEY2

#define NUM4 KEY4

#define NUM5 KEY5

#define NUM6 KEY6

#define NUM7 KEY8

#define NUM8 KEY9

#define NUM9 KEYA

#define NUM0 KEYC

#define JIA KEY3 //+

#define JIAN KEY7 //-

#define SHENG KEYB //*

#define CHU KEYF // /

#define CLEAN KEYD //C

#define DENG KEYE //==

/*---------------------------------------------

根据键值返回数字

---------------------------------------------*/

unsigned char getValue(unsigned char key){

switch(key){

case NUM0:

return 0

case NUM1:

return 1

case NUM2:

return 2

case NUM3:

return 3

case NUM4:

return 4

case NUM5:

return 5

case NUM6:

return 6

case NUM7:

return 7

case NUM8:

return 8

case NUM9:

return 9

default:

PrintInt(key)

return 10

}

}

void main(){

int QianNum = 0x00 //前

unsigned char oper = 0xff//空

int HouNum = 0x00 //后

unsigned char state = 0//输入状态 0为正在输入前一个数。1,为字符,2为第二个数

int resoult = 0unsigned char key,value,num=0

//初始化显示。InitDisplay()

PrintInt(0)

while(1){

Display()//不断刷新。

key = catchKey()

switch(key){

case NOPRESS:

break

case CLEAN:

QianNum = 0

oper = 0xff

HouNum = 0

state = 0

//ChangePosition(0,0)

PrintInt(0)

break

case DENG:

switch(oper){

case JIA:

resoult = QianNum+HouNum

break

case JIAN:

resoult = QianNum-HouNum

break

case SHENG:

resoult = QianNum*HouNum

break

case CHU:

resoult = QianNum/HouNum

break

}

PrintInt(resoult)//显示结果

//把结果保存为第一个数。

QianNum = resoult

HouNum = 0

oper = 0xff

state = 1//要输入字符。

break

case JIA:

oper = JIA

state = 2

break

case JIAN:

oper = JIAN

state = 2

break

case SHENG:

oper = SHENG

state = 2

break

case CHU:

oper = CHU

state = 2

break

default:

value = getValue(key)//获得键的值

switch(state){

case 0:

QianNum = QianNum*10+(int)value

PrintInt(QianNum)

break

case 1:

QianNum = 0

oper = 0xff

HouNum = 0

state = 0

QianNum = (int)value

PrintInt(QianNum)

break

case 2:

HouNum = HouNum*10+(int)value

PrintInt(HouNum)

break

default:

break

}

break

}

}

}

PrintInt是打印整数的函数。就是显示这个整数。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12360156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存