#include<iostream>
#include<cstring>
using namespace std;
bool isDigit(char c){
if(c>='0'&&c<='9')
return true;
else
return false;
}
bool isDot(char c){
if(c=='.')
return true;
else
return false;
}
bool isE(char c){
if(c=='E'||c=='e')
return true;
else
return false;
}
bool isSymbol(char c){
if(c=='-'||c=='+')
return true;
else
return false;
}
void fail(){
cout<<"No"<<endl;
}
void right(){
cout<<"right"<<endl;
}
void judge(){
int i = 0;
string s;
cout<<"请输入字符串:";
cin>>s;
int state = 1;
while(true){
switch(state){
case 1:if(isDigit(s[i])){
state = 2;
i++;
break;
} else {
fail();
return; //不符合,结束
}
case 2:if(i == s.size()){
right();
return;
} else {
if(isDot(s[i]))
state = 3;
else if(isE(s[i]))
state = 5;
else if(isDigit(s[i]))
state = 2;
else{
fail();
return;
}
i++;
break;
}
case 3:if(i == s.size()){
fail();
return;
} else {
if(isDigit(s[i]))
state = 4;
else{
fail();
return;
}
i++;
break;
}
case 4:if(i == s.size()){
right();
return;
} else {
if(isDigit(s[i]))
state = 4;
else if(isE(s[i]))
state = 5;
else{
fail();
return;
}
i++;
break;
}
case 5:if(i == s.size()){
fail();
return;
} else {
if(isSymbol(s[i]))
state = 6;
else if(isDigit(s[i]))
state = 7;
else{
fail();
return;
}
i++;
break;
}
case 6:if(i == s.size()){
fail();
return;
} else {
if(isDigit(s[i]))
state = 7;
else{
fail();
return;
}
i++;
break;
}
case 7:if(i == s.size()){
right();
return;
} else {
if(isDigit(s[i]))
state = 7;
else{
fail();
return;
}
i++;
break;
}
}
}
}
int main(){
while(1){
judge();
}
return 0;
}
C++无符号数识别
最新推荐文章于 2024-05-20 20:16:00 发布