如何用C语言实现多个操作数的基本四则运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用C语言实现多个操作数的基本四则运算相关的知识,希望对你有一定的参考价值。

(输入字符串,进行识别,按照先乘除后的加减的运算法则,输出结果)

#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>

void SplitPrem(char *str);
float Combine();

char str[200],str1[200],str2[50][30],operate_c[50],sub_str[30];
int operate_2str[50];
int strnum=0,operatenum=0; /* 子字符串个数,操作符个数 */
int i,j,k,flag;
float f=0.0,str_f[50];

void main()

float temp;

printf("请输入一个字符串表达式:\n");
gets(str);
strcpy(str1,str);
SplitPrem(str1);
temp=Combine();
printf("%s=%g\n",str,temp);

/* 分解为子字符串和操作符 */
void SplitPrem(char *str1)


j=strlen(str1);
sub_str[0]=str1[0];
k=1;
for( i=1; i<j; i++)

if(str1[i]=='*'||str1[i]=='/'||str1[i]=='+'||str1[i]=='-')

sub_str[k]=0;
strcpy(str2[strnum],sub_str);
operate_c[operatenum]=str1[i];
operate_2str[operatenum]=strnum;
strnum++;
operatenum++;
k=0;

else

sub_str[k]=str1[i];
k++;


if(k>0)

sub_str[k]=0;
strcpy(str2[strnum],sub_str);
strnum++;

for( i=0; i<strnum; i++)
str_f[i]=atof(str2[i]); /* 字符串转化为浮点数 */

/*先计算乘除,后计算加减,每计算一次,子字符串和操作符向前移动 */
float Combine()

while(1)

flag=0;
for( i=0; i<operatenum; i++)

if(operate_c[i]=='*'||operate_c[i]=='/')

if(operate_c[i]=='*')

f=str_f[operate_2str[i]]*str_f[operate_2str[i]+1];
str_f[operate_2str[i]]=f;
for( j=i; j<operatenum-1; j++)

operate_c[j]=operate_c[j+1];
operate_2str[j]=operate_2str[j+1]-1;

for( j=operate_2str[i]+1; j<strnum-1; j++)
str_f[j]=str_f[j+1];
operatenum=operatenum-1;
strnum=strnum-1;
flag=1;

else

f=str_f[operate_2str[i]]/str_f[operate_2str[i]+1];
str_f[operate_2str[i]]=f;
for( j=i; j<operatenum-1; j++)

operate_c[j]=operate_c[j+1];
operate_2str[j]=operate_2str[j+1]-1;

for( j=operate_2str[i]+1; j<strnum-1; j++)
str_f[j]=str_f[j+1];
operatenum=operatenum-1;
strnum=strnum-1;
flag=1;



if(flag==0)break;


while(1)

flag=0;
for( i=0; i<operatenum; i++)

if(operate_c[i]=='+'||operate_c[i]=='-')

if(operate_c[i]=='+')

f=str_f[operate_2str[i]]+str_f[operate_2str[i]+1];
str_f[operate_2str[i]]=f;
for( j=i; j<operatenum-1; j++)

operate_c[j]=operate_c[j+1];
operate_2str[j]=operate_2str[j+1]-1;

for( j=operate_2str[i]+1; j<strnum-1; j++)
str_f[j]=str_f[j+1];
operatenum=operatenum-1;
strnum=strnum-1;
flag=1;

else

f=str_f[operate_2str[i]]-str_f[operate_2str[i]+1];
str_f[operate_2str[i]]=f;
for( j=i; j<operatenum-1; j++)

operate_c[j]=operate_c[j+1];
operate_2str[j]=operate_2str[j+1]-1;

for( j=operate_2str[i]+1; j<strnum-1; j++)
str_f[j]=str_f[j+1];
operatenum=operatenum-1;
strnum=strnum-1;
flag=1;



if(flag==0)break;

return f;
参考技术A 以前见过这么一个程序,挺复杂的。

如何用c语言来实现鼠标移动。

比如移动鼠标到(1,1)。代码是什么?

参考技术A #include <stdio.h>
int main (void)

    SetCursorPos(1,1);
    return 0; 

参考技术B 使用mouse_event 这个API 可以模拟鼠标任何操作。 参考技术C http://wenku.baidu.com/view/50560e0216fc700abb68fc68.html呃 参考技术D SetCursorPos看看有没有这个API函数

以上是关于如何用C语言实现多个操作数的基本四则运算的主要内容,如果未能解决你的问题,请参考以下文章

如何用c语言实现真值表

如何用C语言实现对图像的二值化?

如何用c语言来实现鼠标移动。

如何用C语言实现2的n次方

如何用c语言实现多组数据输入,每组数据一行每行数据个数任意

如何用C语言文件操作修改指定文件