#include

#include

#include

#include

char prog[80]; //存放所有输入字符

char token[8]; //存放词组

char ch; //单个字符

int syn,p,m,n;//syn:种别编码

double sum;

int count;

int Signal;         //是否带正负号(0不带,1负号)

int xiaoshu;      //是否是小数

double isxiaoshu;       //小数

int zhishu;           //是否是指数

int index;            //指数幂

int fushu;       //是否带负号

double temp;

int temp2;

void scanner();

char *rwtab[6]={“function”,”if”,”then”,”while”,”do”,”endfunc”};

int main()

{

p=0;

count=0;

xiaoshu=0;

index=0;

int b,a;

FILE *fp;

printf(“以文件输入请按1!\n”);

printf(“以键盘输入请按2!\n”);

scanf(“%d”,&a);

if(a==1)

{

if((fp=fopen(“D:\111.txt”,”r”))==NULL)

{

printf(“Failure to open 111.txt!\n”);

exit(0);

}

fscanf(fp,”%s”,prog);

fclose(fp);

}

else if(a==2)

{

printf(“\n Please input string:\n”);

do{

ch=getchar();

prog[p++]=ch;

}while(ch!=””#””);

}

p=0;

do{

scanner();

switch(syn)

{

printf(“以文件输出请按1!\n”);

printf(“以屏幕输出请按2!\n”);

scanf(“%d”,&b);

if(b==1)

{

case 11:  if(xiaoshu==0)

{

fprintf(fp,”%2d,%8d”,syn,(int)sum);

//printf(“(%2d,%8d)\n”,syn,(int)sum);

break;

}

else if(zhishu==1)

{

fprintf(fp,”(%2d,%10.5e)\n”,syn,sum);

//printf(“(%2d,%10.5e)\n”,syn,sum);

zhishu=0;

xiaoshu=0;

break;

}

else if(xiaoshu==1)

{

fprintf(fp,”(%2d,%8.4f)\n”,syn,sum);

//printf(“(%2d,%8.4f)\n”,syn,sum);

xiaoshu=0;

break;

}

case -1:

fprintf(fp,”input error\n”);

printf(“input error\n”);

break;

default:

fprintf(fp,”(%2d,%8s)\n”,syn,token);

//printf(“(%2d,%8s)\n”,syn,token);

}

}while(syn!=0);

return 0;

}

else if(b==2)

{

case 11:  if(xiaoshu==0)

{

printf(“(%2d,%8d)\n”,syn,(int)sum);

break;

}

else if(zhishu==1)

{

printf(“(%2d,%10.4e)\n”,syn,sum);

zhishu=0;

xiaoshu=0;

break;

}

else if(xiaoshu==1)

{

printf(“(%2d,%8.4f)\n”,syn,sum);

xiaoshu=0;

break;

}

case -1:

printf(“input error\n”);

break;

default:

printf(“(%2d,%8s)\n”,syn,token);

}

while(syn!=0);

return 0;

}

void scanner()

{

sum=0;

isxiaoshu=0;

m=0;

for(n=0;n<8;n++)

token[n]=NULL;

ch=prog[p++];

while(ch==”” “”||ch==””\n””||ch==””\t””)

ch=prog[p++];

if(((ch>=””a””)&&(ch<=””z””))||((ch>=””A””)&&(ch<=””Z””)))

{

while(((ch>=””a””)&&(ch<=””z””))||((ch>=””A””)&&(ch<=””Z””))||((ch>=””0″”)&&(ch<=””9″”)))

{

token[m++]=ch;

ch=prog[p++];

}

token[m++]=””\0″”;

p–;

syn=10;

for(n=0;n<6;n++)

if(strcmp(token,rwtab[n])==0)

{

syn=n+1;

break;

}

}

else

if((ch>=””0″”)&&(ch<=””9″”))

{

Num:

if(Signal==1)

{

token[m++]=””-“”;

}

while((ch>=””0″”)&&(ch<=””9″”))

{

sum=sum*10+ch-“”0″”;

ch=prog[p++];

}

if(ch==””.””)

{

xiaoshu=1;

ch=prog[p++];

while((ch>=””0″”)&&(ch<=””9″”))

{                                  //pow(x,y)计算x的y次幂

temp=(ch-“”0″”)*pow(0.1,++count);

isxiaoshu=isxiaoshu+temp;

ch=prog[p++];

}

sum=sum+isxiaoshu;

}

if(ch==””e””||ch==””E””)

{

zhishu=1;

ch=prog[p++];

if(ch==””-“”)

{

fushu=1;

ch=prog[p++];

}

while((ch>=””0″”)&&(ch<=””9″”))

{                               //指数

index=index*10+ch-“”0″”;

ch=prog[p++];

}

if(fushu)

sum=sum*pow(0.1,index);

else

sum=sum*pow(10,index);

}

if(Signal==1)

{

sum=-sum;

Signal=0;

}

p–;

syn=11;

}

else

switch(ch)

{

case “”

m=0;

token[m++]=ch;

ch=prog[p++];

if(ch==””=””)

{

syn=21;

token[m++]=ch;

}

else if(ch==””=””)

{

syn=21;

token[m++]=ch;

}

else

{

syn=20;

p–;

}

break;

case “”>””:

m=0;

token[m++]=ch;

ch=prog[p++];

if(ch==””=””)

{

syn=24;

token[m++]=ch;

}

else

{

syn=23;

p–;

}

break;

case “”=””:

m=0;

token[m++]=ch;

ch=prog[p++];

if(ch==””=””)

{

syn=25;

token[m++]=ch;

}

else

{

syn=18;

p–;

}

break;

case “”+””:

temp2=prog[p];

if((temp2>=””0″”)&&(temp2<=””9″”))

{

Signal=2;

ch=prog[p++];

goto Num;

}

syn=13;

token[m++]=ch;

break;

case “”-“”:

temp2=prog[p];

if((temp2>=””0″”)&&(temp2<=””9″”))

{

Signal=1;

ch=prog[p++];

goto Num;

}

syn=14;

token[m++]=ch;

break;

case “”*””:

syn=15;

token[m++]=ch;

break;

case “”/””:

syn=16;

token[m++]=ch;

break;

case “”;””:

syn=26;

token[m++]=ch;

break;

case “”(“”:

syn=27;

token[m++]=ch;

break;

case “”)””:

syn=28;

token[m++]=ch;

break;

case””#””:

syn=0;

token[m++]=ch;

break;

default:

syn=-1;

}

}

C语言1e12怎么识别,求大神帮助词法分析,当输入第一个1.2e12时可以输出,当时输入第二个1.2e12时就不能输出了,万分感谢,还有不能识别x=7*8+9中的+9,...相关推荐

  1. c语言不能写入文件,求大神看看为什么不能将数据写入文件

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include void baocunXS(struct stu *head); struct stu *creat ...

  2. c语言五子棋判断如何胜利,c语言 五子棋危险判断 求大神解释啊

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码 #include #define right 'r' #define lower 'l' #define lower_right 'i' #defi ...

  3. 五子棋c语言算杀算法,c语言 五子棋危险判断 求大神解释啊

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码 #include #define right 'r' #define lower 'l' #define lower_right 'i' #defi ...

  4. 用C语言判断五子棋,c语言 五子棋危险判断 求大神解释啊

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码 #include #define right 'r' #define lower 'l' #define lower_right 'i' #defi ...

  5. 怎么用c语言表示大整数的四则运算,用c语言编写大整数的四则运算,求大神

    用c语言编写大整数的四则运算,求大神 答案:3  信息版本:手机版 解决时间 2019-10-03 17:13 已解决 2019-10-03 01:32 用c语言编写大整数的四则运算,求大神 最佳答案 ...

  6. 请输入30名同学的c语言成绩,求大神帮忙做这几道结构体的c语言!今天就要交实验报告!急啊急!!!!! (1)一个班级共有30名学...

    问题描述: 求大神帮忙做这几道结构体的c语言!今天就要交实验报告!急啊急!!!!! (1)一个班级共有30名学 求大神帮忙做这几道结构体的c语言!今天就要交实验报告!急啊急!!!!! (1)一个班级共 ...

  7. c语言中len的作用,C语言 int len( )  求大神解释

    C语言 int len( ) 求大神解释 sen3830058 LV12 2013-03-13 #include int len(char s[]){ int n=0; while(s[n]!='\0 ...

  8. 赫夫曼编码c语言 排序部分,c语言构造哈夫曼树输出哈夫曼编码出错 ,跪求大神帮我找错...

    c语言构造哈夫曼树输出哈夫曼编码出错 ,跪求大神帮我找错0 youxun0952016.09.07浏览120次分享举报 #include #include #include typedef struc ...

  9. python12345输出54321_C语言编写程序 :输入一个正整数,将其逆序输出。例如,输入12345,输出54321. 跪求大神用循环语句...

    点击查看C语言编写程序 :输入一个正整数,将其逆序输出.例如,输入12345,输出54321. 跪求大神用循环语句具体信息 答:#include int main() { int num; scanf ...

最新文章

  1. Bert系列(二)——源码解读之模型主体
  2. android 三级界面返回直接到一级界面
  3. 青云八核服务器无限申请教程,零云旗下快速开发框架lyadmin映像使用指南(青云服务器版)...
  4. win7安装virtualbox遇到的问题
  5. HDU 4267 A Simple Problem with Integers
  6. 科大讯飞语音合成api
  7. 笔记-信息系统开发基础-架构设计-软件架构风格
  8. python的float精度_python 中的各种小数点后的精度处理方式
  9. OpenGL 地形LOD的镶嵌细分的用法
  10. 用 Python 分析今年考研形势
  11. (转载)linux中编译安装log4cpp
  12. vue js中解决二进制转图片显示问题
  13. 直接插入排序的python实现
  14. 怎么样把 swf格式 转换为flv格式
  15. (干货,建议收藏)备战2021年软考中级网络工程师-01计算机硬件基础
  16. 计算机桌面备份在哪里,电脑备份文件在哪里
  17. 亚马逊、速卖通、Shopee阿里国际站、mercari、沃尔玛、newegg、美客多等跨境平台卖家如何有效结合测评,补单打破瓶颈
  18. 4-kali修改root密码
  19. APP(IOS)蒲公英上传成功但下载页报错
  20. 基于52840 S340协议栈USB flash U盘实现

热门文章

  1. Java语言的替代品:JVM的新编程语言开源
  2. 2017-08-10 前端日报
  3. 网站优化记录-通过命令预编译Asp.net 网站,成功优化到毫秒级别。
  4. Apache Storm 官方文档 —— 源码组织结构
  5. SQL JOIN --Merge Join
  6. POJ-1789 Truck History 最小生成树
  7. 爬取古剑奇谭三官网的图片
  8. Atitit 发帖机系列(7) 词法分析的方法attilax大总结)
  9. php魔术方法__SET __GET
  10. 从零学React Native之07View