void change(char data *pr,char data *pt);
//c主程序声明
void main(void)
{
char data *a,*b,x,y; //定义使用变量
//设定串口的数据传输为1200bps 晶振为1600MHZ
#ifndef MONITOR51
SCON=0x50; //SCON:8位异步通讯模式
TMOD|=0x20; //TMOD:定时器1为模式2,8-bit自动装载方式
TH1=221; //TH1:1200bps的装载值@16MHZ
TR1=1; //TR1:timer1运行
TI=1; //T1:设置为1,以发送第一个字节
#endif
printf("please input the number x,y\n");
//puts(&x);
//puts(&y);
scanf("%d%d\n",&x,&y);
//printf("please input the number y\n");
//scanf("%d",&y);
if(x
{
*a=x;
*b=y;
change(a,b);
}
printf("max=%d\nmin=%d\n",*a,*b);
printf("max=%d\nmin=%d\n",x,y);
while(1)
{;}
}
//数据交换函数声明
void change( char data *pr,char data *pt)
{
char data temp;
temp=*pr;
*pr=*pt;
*pt=temp;
return;
}
程序指针问题
在程序运行后,在输入数据后,程序不能正确的计算。
在输入数据11<空格>12<回车>后程序不能运行,在回车,还是不能运行,等输入其他字符后"1"程序运行,但是运行结果不是
想要得到的,帮忙解决问题,谢谢
主要问题是数据类型和指针运用不对,试试下面的代码应该可以实现你的目的
void main(void)
{
char data x,y; //定义使用变量
//设定串口的数据传输为1200bps 晶振为16MHZ
#ifndef MONITOR51
SCON=0x50; //SCON:8位异步通讯模式
TMOD|=0x20; //TMOD:定时器1为模式2,8-bit自动装载方式
TH1=221; //TH1:1200bps的装载值@16MHZ
TR1=1; //TR1:timer1运行
TI=1; //T1:设置为1,以发送第一个字节
#endif
printf("please input the number x,y\n");
//puts(&x);
//puts(&y);
scanf("%bd%bd",&x,&y);
//printf("please input the number y\n");
printf("x=%bd\ny=%bd\n",x,y);
if(x
{
change(&x,&y);
}
// printf("max=%d\nmin=%d\n",*a,*b);
printf("max=%bd\nmin=%bd\n",x,y);
while(1)
{;}
}
//数据交换函数声明
void change( char data *pr,char data *pt)
{
char data temp;
temp=*pr;
*pr=*pt;
*pt=temp;
return;
}
KEIL里扩展出了
b,h,l来对输入字节宽的设置:
b八位
h十六位
l三十二位
LZ少的是这个