当前位置:我的异常网» C语言 » C写个四则运算代码,该怎么处理
C写个四则运算代码,该怎么处理
www.myexceptions.net 网友分享于:2013-04-03 浏览:20次
C写个四则运算代码
一个简单的四则运算代码大概需要多少行啊?就是进行+-*/()运算的,我竟然写了将近300行...还不能删除错误输入...
#include
#include
#include
void count(int n,char arr[],int *a)
{
int i=0,j,k=0,m;
while(arr[i])
{
if(arr[i]=='*')
{
a[n-strlen(arr)]=a[n-strlen(arr)]*a[n-strlen(arr)+1];
/*整型数组向前缩进一个*/
for(j=n-strlen(arr)+1;j<4;j++)
a[j]=a[j+1];
n--;/*算式减少一个*/
/*算式向前缩进*/
while(arr[i+k])
{
arr[i+k]=arr[i+k+1];
k++;
}
k=0;
i=0;
continue;
}
if(arr[i]=='/')
{
if(!a[n-strlen(arr)+1]) {printf("INPUT ERROR!");getch();return;}
m=a[n-strlen(arr)]/a[n-strlen(arr)+1];
if(a[n-strlen(arr)]!=m*a[n-strlen(arr)+1]){printf("INPUT
ERROR!");getch();return;}
a[n-strlen(arr)]=m;
for(j=n-strlen(arr)+1;j<4;j++)
a[j]=a[j+1];
n--;
while(arr[i+k])
{
arr[i+k]=arr[i+k+1];
k++;
}
k=0;
i=0;
continue;
}
if(arr[i]=='+')
{
if(arr[i+1]=='*')
{
a[n-strlen(arr)+1]=a[n-strlen(arr)+1]*a[n-strlen(arr)+2];
for(j=n-strlen(arr)+2;j<4;j++)
a[j]=a[j+1];
n--;
while(arr[i+k+1])
{
arr[i+k+1]=arr[i+k+2];
k++;
}
k=0;
i=0;
continue;
}
else if(arr[i+1]=='/')
{
if(!a[n-strlen(arr)+2]) {printf("INPUT ERROR!");getch();return;}
m=a[n-strlen(arr)+1]/a[n-strlen(arr)+2];
if(a[n-strlen(arr)+1]!=m*a[n-strlen(arr)+2]){printf("INPUT
ERROR!");getch();return;}
a[n-strlen(arr)+1]=m;
for(j=n-strlen(arr)+2;j<4;j++)
a[j]=a[j+1];
n--;
while(arr[i+k+1])
{
arr[i+k+1]=arr[i+k+2];
k++;
}
k=0;
i=0;
continue;
}
else
{
a[n-strlen(arr)]=a[n-strlen(arr)]+a[n-strlen(arr)+1];
for(j=n-strlen(arr)+1;j<4;j++)
a[j]=a[j+1];
n--;
while(arr[i+k])
{
arr[i+k]=arr[i+k+1];
k++;
}
k=0;
i=0;
continue;
}
}
if(arr[i]=='-')
{
if(arr[i+1]=='*')
{
a[n-strlen(arr)+1]=a[n-strlen(arr)+1]*a[n-strlen(arr)+2];
for(j=n-strlen(arr)+2;j<4;j++)
a[j]=a[j+1];
n--;
while(arr[i+k+1])
{
arr[i+k+1]=arr[i+k+2];
k++;
}
k=0;
i=0;
continue;
}
else if(arr[i+1]=='/')
{if(!a[n-strlen(arr)+2]) {printf("INPUT ERROR!");getch();return;}
m=a[n-strlen(arr)+1]/a[n-strlen(arr)+2];
if(a[n-strlen(arr)+1]!=m*a[n-strlen(arr)+2]){printf("INPUT
ERROR!");getch();return;}
a[n-strlen(arr)+1]=m;
for(j=n-strlen(arr)+2;j<4;j++)
a[j]=a[j+1];
n--;
while(arr[i+k+1])
{
arr[i+k+1]=arr[i+k+2];
k++;
}
k=0;
i=0;
continue;
}
else
{
a[n-strlen(arr)]=a[n-strlen(arr)]-a[n-strlen(arr)+1];
for(j=n-strlen(arr)+1;j<4;j++)
a[j]=a[j+1];
n--;
while(arr[i+k])
{
arr[i+k]=arr[i+k+1];
k++;
}
k=0;
i=0;
continue;
}
}
i++;
}
}
void main()
{
char arr1[20],arr2[5];
int a[5]={0,0,0,0,0};
char c;
int i=0,l=0,r=0,n=0,j=0,k=0,m=0;
system("CLS");
while(1)
{
c=getch();
if(c=='('||c==')'||(c>='0'&&c<='9')
||c=='+'||c=='-'||c=='*'||c=='/'||c=='\r');
else continue;/*限制只输入指定字符*/
if(i==0)/*第一次输入单列*/
{
if(c=='\r') {printf("ERROR:PLEASE INPUT\n");continue;}
if(c=='+'||c=='-'||c=='*'||c=='/'||c==')') continue;
if(c=='(') l++;
arr1[i++]=c;
printf("%c",c);
}
else {
if(c=='+'||c=='-'||c=='*'||c=='/')/*这些符号前不能为运算符和左括号
*/
if(arr1[i-1]=='+'||arr1[i-1]=='-'||arr1[i-1]=='*'||arr1[i-1]
=='/'||arr1[i-1]=='(') continue;
if(c=='('&&((arr1[i-1]>='0'&arr1[i-1]<='9')||arr1[i-1]==')'))
continue;/*左括号前部为右括号和数字*/
if(c>='0'&&c<='9'&arr1[i-1]==')') continue;/*数字前不为右括号*/
文章评论