该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
char mes,i=0;
int real,zero=0;
int number; //number储存实际输入数值
int change(int);
int pow(int,int);
void setup(){
Serial.begin(9600);
}
void loop(){
while(Serial.available()>0){
mes=Serial.read();
//该部分代码用于记录末尾0的个数,然后最后添上
if(mes=='0') zero++;
else if(mes!='\r') zero=0;
//若需修改结束标志,可以更改'\r'
if(mes=='\r') {
i=0;
number=change(real);
for(;zero>0;zero--) number=number*10; //该循环用于将末尾丢失的0添上
Serial.println(real);
Serial.println(number); //number中储存实际输入数值,real是反过来的数值可以无视
real=0;
break;
}
real+=(mes-'0')*pow(10,i);
i++;
}
}
int pow(int n,int x){ //自制简易乘方函数,返回n^x。也可以试试调用math.h中的pow()
int val=1;
for(;x>0;x--) val=val*n;
return val;
}
int change(int a){ //读到的数值首末倒过来
int p,real;
int i=0,n=0;
for(p=a;p!=0;n++) p=p/10; //n记录数值的位数
for(;a!=0;i++){
p=a%10; //取余,一次取出个位
real+=p*pow(10,n-i-1);
a=a/10;
}
return real;
}