程序计数器的位数怎么算,计数器的使用

#include stdio.h

#include string.h

intadd(intx,int y ) )。

{

返回(xy );

}

intsub(intx,int y ) )。

{

返回(x-y );

}

intmul(intx,int y ) )。

{

返回(x * y );

}

intDivi(intx,int y ) )。

{

返回(x/y );

}

int(*func ) ) (int x,int y ) ) add,sub,mul,divi} );

int num; //参数字符串转换的数值

int curch; //当前字符

char chtbl[]=’ -*/()=’; //

charcorch[]=’-*/(=0123456789 ‘ ); //

输入(void ) )。

{

unsigned int i;

为wile (真)

{

curch=getchar (; //获取一个输入字符

if(curch==eof ) ) ) ) ) ) )。

返回- 1;

判断curch是否属于corch数组的内容

for(I=0; corch[i] curch!=corch[i]; I;

if(Istrlen(corch ) )

黑; //出口: curch属于corch序列的内容

}

return curch; //

}

获取intgetid(void ) chtbl数组中的curch的下标值,或表示输入时的数据返回值-1

{

int i;

if(curch=’0’curch=’9′ ) (如果curch属于0-9,则转换为数字(可以有多位) )。

{

for(num=0; curch=’0′ curch=’9’; getach () )//结束时再一次获取cur ch (getach ) )

{

num=num*10 curch-‘0’;

}

返回- 1; //表示输入的是数据,不是运算符

}

else//curch不属于0-9

{

for(I=0; chtbl[i]; I(//curch为-*/) )=; 如果有,就跳出去

{

if(chtbl(I )==curch ) ) ) ) ) ) ) ) )。

黑;

}

if(I=5) curch为-*/)时,取得下一个字符

getach (; curch为=时,跳过:公式结束,进入计算

return i; //表示输入了运算符

}

}

/*

总结:输入数据字符串后,将该字符串转换为对应的数值,获取非数值字符并保存在curch中;

输入- * /()将返回chtbl数组的下标,并检索下一个字符。

如果输入=,则会直接返回chtbl数组中下标的值。

*/

//公式可以分为一个或多个计算单位;

//多个单元:分别计算后合并为一个计算单元;

intcal(void )//eg :1 2=; 一(二)三; 1*2=

{

int x1; //x1=1; 1; 1

int x2; //x2=2; (二)三; 2

int x3; //

int op1; //op1:计算单元的第一个运算符

int op2; //op2:计算单元的第二个运算符

int i; //I :1,2 (-1;

i=getid (; 获取chtbl数组中curch的下标值或不属于该数组(-1 ) )。

if(I==4) curch为“”的情况下,继续取得数据

x1=cal (;

else

x1=num;

op1=getid (;

if(op1=5) curch为“=”时,表示输入结束,进入计算

return x1;

i=getid (;

if(I==4) )。

x2=cal (;

else

x2=num;

op2=getid (;

while(OP2=0OP25 )//op2: – * /() ) ) ) ) ) )。

{

i=getid (;

if(I==4) )。

x3=cal (;

else

x3=num;

//op1: *

if () op2/2==1) ) op2/2==1) )//op2: -/)

x2=func[op2](x2,x3 );

else

{

x1=func[op1](x1,x2 );

x2=x3;

op1=op2;

}

op2=getid (;

}

return(func[op1] ) x1,x2 );

}

void main () )

{

int value;

printf (pleaseinputanexpression : (n ); //输入式:1 2=

getach (;

wile(curch!=’=’ )如果curch不是“=”

{

value=cal (;

printf(theresultis:%d\n ),value );

printf (pleaseinputanexpression : (n );

getach (; //重新输入表达式

}

}

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注