首页 > 代码库 > c语言加法和乘法的有序混合运算语法
c语言加法和乘法的有序混合运算语法
#include<stdio.h> #include<string.h> #include<stdlib.h> #define Max 1000 int j=1; long g=0; char nchar[Max]={""}; int k=0; char ch=NULL; char m[30]={""}; int sym=-1; int error=0; main() { char cha; printf("请输入一串字符串:"); while((cha=getchar())!=‘$‘) { nchar[g]=cha; g++; } scanner(); E(); if(sym==0&&error==0) { printf("success\n"); } else { printf("fail\n"); } } void E() { T(); E1(); } void E1() { if(sym==13) { scanner(); T(); E1(); } else { if(sym!=0&&sym!=28) { printf("error\n"); error++; } } } void T() { F(); T1(); } T1() { if(sym==15) { scanner(); F(); T1(); } else { if(sym!=28&&sym!=0&&sym!=13) { printf("error\n"); error++; } } } void F() { if(sym==27) { scanner(); E(); if(sym==28) { scanner(); } else { printf("error\n"); error++; } } else if(sym==10||sym==11) { scanner(); } else { printf("error\n"); error++; } } int scanner() { int i; char a[2]={""}; char word[][15]={"begin","do","end","if","then","while"}; int wsym[6]={1,2,3,4,5,6}; int ssym[9]={25,26,27,28,0,13,14,15,16}; char b[9]={‘=‘,‘;‘,‘(‘,‘)‘,‘#‘,‘+‘,‘-‘,‘*‘,‘/‘}; if(j==1&&k<g) { ch=nchar[k]; j++; k++; } while(ch==‘ ‘||ch==10||ch==9||ch==13) { if(k==g) { return 0; } ch=nchar[k]; k++; } if(ch>=‘a‘&&ch<=‘z‘) { while((ch>=‘a‘&&ch<=‘z‘)||(ch>=‘0‘&&ch<=‘9‘)||ch==‘_‘) { a[0]=ch; strcat(m,a); printf("%s",m); if(k==g) { break; } ch=nchar[k]; k++; } for(i=0;i<6;i++) { if(strcmp(m,&word[i][0])==0) break; } if(i<6) { sym=wsym[i]; printf("保留字%s 种别码%d\n",m,wsym[i]); } else { sym=10; printf("标识符%s 种别码10\n",m); } if(k==g) return 0; strcpy(m,""); return 1; } else if(ch>=‘0‘&&ch<=‘9‘) { while(ch>=‘0‘&&ch<=‘9‘) { a[0]=ch; strcat(m,a); if(k==g) { break; } ch=nchar[k]; k++; } sym=11; printf("常数%s 种别码11\n",m); if(k==g) return 0; strcpy(m,""); return 1; } else if(ch==‘:‘) { a[0]=ch; strcat(m,a); if(k==g) { sym=17; printf("运算符%s 种别码17\n",m); return 0; } ch=nchar[k]; k++; if(ch==‘=‘) { a[0]=ch; strcat(m,a); sym=18; printf("运算符%s 种别码18\n",m); if(k==g) { return 0; } ch=nchar[k]; k++; } strcpy(m,""); return 1; } else if(ch==‘<‘) { a[0]=ch; strcat(m,a); if(k<g) { ch=nchar[k]; k++; } if(ch==‘=‘) { a[0]=ch; strcat(m,a); sym=21; printf("运算符%s 种别码21\n",m); if(k==g) { return 0; } ch=nchar[k]; k++; } else if(ch==‘>‘) { a[0]=ch; strcat(m,a); sym=22; printf("运算符%s 种别码22\n",m); if(k==g) { return 0; } ch=nchar[k]; k++; } else { printf("运算符%s 种别码22\n",m); } if(k==g) { return 0; } strcpy(m,""); return 1; } else if(ch==‘>‘) { a[0]=ch; strcat(m,a); if(k<g) { ch=nchar[k]; k++; } if(ch==‘=‘) { a[0]=ch; strcat(m,a); sym=24; printf("运算符%s 种别码24\n",m); if(k==g) { return 0; } ch=nchar[k]; k++; } else { sym=23; printf("运算符%s 种别码23\n",m); } if(k==g) { return 0; } strcpy(m,""); return 1; } else { for(i=0;i<9;i++) { if(ch==b[i]) break; } if(i<9) { sym=ssym[i]; a[0]=ch; strcat(m,a); sym=ssym[i]; printf("%s 种别码为:%d\n",m,ssym[i]); } else { a[0]=ch; strcat(m,a); sym=-1; printf("错误!%s不存在种别码\n",m); } if(k<g) { ch=nchar[k]; k++; } else { return 0; } strcpy(m,""); return 1; } }
c语言加法和乘法的有序混合运算语法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。