c语言乘法结合顺序,c语言加法和乘法的有序混合运算语法

#include

#include

#include

#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

{

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

{

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

{

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

{

ch=nchar[k];

k++;

}

else

{

return 0;

}

strcpy(m,"");

return 1;

}

}

20180111094410395141.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值