简单多位数四则运算表达式的输入输出
使用C语言编写程序实现输入一个包含小数点的多位数四则运算表达式并输出其计算结果。需要通过函数调用将多位操作数分离出来,并将运算符保存为字符数组。最终计算结果保存在全局变量temp中并输出。程序代码如下:
include
include
double temp;
int Getvalue(char caclStr[], int i) {//分离并返回多位数操作数
double value = 0.0;
int dotFlag = 0;
for(int j = i; caclStr[j]!='+' && caclStr[j]!='-' && caclStr[j]!='*' && caclStr[j]!= '/' && caclStr[j]!= '\0';j++) {
if(caclStr[j] == '.') {
dotFlag = 1;
continue;
}
if(dotFlag == 0) value = value * 10 + caclStr[j] - '0';
else {
value += (caclStr[j] - '0') / (10.0 * dotFlag);
dotFlag *= 10;
}
}
return value;
}
int main(){
char caclStr[100]={'\0'};
double caclValues[50]={0.0};
char caclOperates[50]={'\0'};
printf("请输入一个包含小数点的多位数四则运算表达式:\n");
gets(caclStr);
int index = 0;
int i = 0;
while(caclStr[i]!='\0') {
caclValues[index] = Getvalue(caclStr, i);
i += (int) log10(caclValues[index]) + 1;
if(caclStr[i] == '+' || caclStr[i] == '-' || caclStr[i] == '' || caclStr[i] == '/') {
caclOperates[index] = caclStr[i];
index++;
i++;
}
}
caclValues[index] = Getvalue(caclStr, i);
for(int j=0; j<=index; j++) {
if(caclOperates[j] == '+' && j == 0) temp = caclValues[j] + caclValues[j+1];
if(caclOperates[j] == '-') {
if(j == 0) temp = caclValues[j] - caclValues[j+1];
else temp = temp - caclValues[j+1];
}
if(caclOperates[j] == '' && j == 0) temp = caclValues[j] * caclValues[j+1];
if(caclOperates[j] == '/') {
if(j == 0) temp = caclValues[j] / caclValues[j+1];
else temp = temp / caclValues[j+1];
}
}
printf("结果是:%f", temp);
}