如何用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语言实现多个操作数的基本四则运算的主要内容,如果未能解决你的问题,请参考以下文章