#include<stdio.h>
#include<string.h>
int main()
{
char str[50]; // 用于存放要判断的无符号数
int i,zf;
char ch1,ch2;
int error_index;
int point_amount;
char c='y';
while (c=='y'||c=='Y') //是否继续判断
{
printf("Please Input Number:");
scanf("%s",str);
strcat(str,"$");
int i=0;
int zf=0; //初始时令zf=0,使得如果输入全不符合时退出
int point_amount=0;
while(str[i]!='$') /*条件:输入不为结束符时执行判断*/
{
ch1=str[i];
ch2=str[i+1];
if(ch1>='0' && ch1<='9')
{
if((ch2>='0' && ch2<='9') || ch2=='.' || ch2=='e'||ch2=='$') /*如果是数字,则判断下一个字符是否是"0-9",".","E"."$"*/
zf=1; /*输入为正确标志*/
else
{
zf=0; /*输入为错误标志*/
error_index=i+2;
break;
}
}
else if(ch1=='.') /*如果上面条件不符合,判断是否是小数点*/
{
if(point_amount<1)
{
point_amount++; //计算小数点的个数
if(ch2>='0'&&ch2<='9') /*判断小数点后是否是"0-9",或为"$"*,否则出错?*/
zf=1;
else
{
zf=0;
error_index=i+2;
break;
}
}
else
{
zf=0;
error_index=i+1;
break;
}
}
else if(ch1=='e') /*判断是否是指数标志*/
{
if(i==0)
{
zf=0;
error_index=i+1;
break;
}
if(ch2>='0' && ch2<='9'||ch2=='+'||ch2=='-') /*判断指数标志后是否是"0-9",或是"+,-","$",否则出错*/
zf=1;
else if(ch2=='$')
{
zf=0;
error_index=i+1;
break;
}
else
{
zf=0;
error_index=i+2;
break;
}
}
else if(ch1=='+' || ch1=='-') /*如果以上不符,判断是否是"+,-,"*/
{
if(i==0)
{
zf=0;
error_index=i+1;
break;
}
if(ch2>='0' && ch2<='9' || ch2=='$') /*"+,-"后只能为"0-9",否则出错*/
zf=1;
else
{
zf=0;
error_index=i+2;
break;
}
}
else
{
zf=0;
error_index=i+1;
break;
}
i++; /* i加1,判断下一个字符*/
}
if(zf==0)
printf("Input number are error at %d!\n",error_index);
else
printf("Input number are right!\n"); /*输入字符串为无符号数*/
printf("Do you want to input again ?(Y or N)\n");
scanf("%s",&c);
}
return 0;
}
DFA.zip_无符号数的DFA
版权申诉
71 浏览量
2022-09-24
07:44:38
上传
评论
收藏 93KB ZIP 举报
邓凌佳
- 粉丝: 65
- 资源: 1万+
最新资源
- Flume进阶-自定义拦截器jar包
- Dubins曲线算法讲解和在运动规划中的使用.pdf
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.dta
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.xlsx
- Reeds+Shepp曲线算法讲解和实现.pdf
- 毕业设计基于SpringBoot+MyBatisPlus+MySQL+Vue的外卖配送信息系统源代码+数据库
- 词向量(Word Embeddings)是自然语言处理(NLP)领域的一种重要技术.txt
- Surfer,线性函数
- MyBatis 的动态 SQL 是其核心特性之一.txt
- 时代的sdddsddsddsd
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈