linux如何用c语言四则运算,C写个四则运算代码,该怎么处理

这篇博客分享了一段使用C语言编写的四则运算代码,该代码能够处理加减乘除及括号运算。然而,代码较为冗长且无法处理错误输入。博主在代码中详细解释了每个运算符的处理逻辑,并提供了示例输入和错误处理情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当前位置:我的异常网» 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;/*数字前不为右括号*/

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值