其他的运算:
#include <stdio.h>
int add(int x,int y) {return x+y}
int sub(int x,int y) {return x-y}
int mul(int x,int y) {return x*y}
int div(int x,int y) {return x/y}
int (*func[])()={add,sub,mul,div}
int num,curch
char chtbl[]="+-*/()="
char corch[]="+-*/()=0123456789"
int getach() {
int i
while(1) {
curch=getchar()
if(curch==EOF) return -1
for(i=0corch[i]&&curch!=corch[i]i++)
if(i<strlen(corch)) break
}
return curch
}
int getid() {
int i
if(curch>='0'&&curch<='9') {
for(num=0curch>='0'&&curch<='9'getach())num=10*num+curch-'0'
return -1
}
else {
for(i=0chtbl[i]i++) if(chtbl[i]==curch) break
if(i<=5) getach()
return i
}
}
int cal() {
int x1,x2,x3,op1,op2,i
i=getid()
if(i==4)x1=cal() else x1=num
op1=getid()
if(op1>=5) return x1
i=getid()
if(i==4) x2=cal() else x2=num
op2=getid()
while(op2<=4) {
i=getid()
if(i==4) x3=cal() else x3=num
if((op1/2==0)&&(op2/2==1))x2=(*func[op2])(x2,x3)
else {
x1=(*func[op1])(x1,x2)
x2=x3
op1=op2
}
op2=getid()
}
return (*func[op1])(x1,x2)
}
void main(void) {
int value
printf("Please input an expression:\n")
getach()
while(curch!='=') {
value=cal()
printf("The result is:%d\n",value)
printf("Please input an expression:\n")
getach()
}
}
只能 + - * /
属于并行编程的问题,C语言本身并不具备并行计算能力,可以通过系统API调用实现。编写一个调度程序,然后通过这个调度程序调度你的小程序占用某个核心,你的小程序本身不能决定自己占用哪个核心。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)