用C语言编写一个简单的加减乘除计算器,要求如图

保留两位小数,直接输出答案,运行结果上不要保留过程... 保留两位小数,直接输出答案,运行结果上不要保留过程 展开
 我来答
冯小气气
2019-03-28 · 知道合伙人IT服务行家
冯小气气
知道合伙人IT服务行家
采纳数:98 获赞数:239
八年编程经验,公司核心技术人员。

向TA提问 私信TA
展开全部
#include <stdlib.h>
#include <string.h>
int Calculate(char* input, float *ret)
{
int returnRet = 0;
float num1, num2, symbol;
int len = strlen(input);
char* num1Str = (char*)malloc(sizeof(char) * len);
char* num2Str = (char*)malloc(sizeof(char) * len);
memset(num1Str, 0, len);
memset(num2Str, 0, len);
int getSymbol = 0;
for (int i = 0, j = 0; i < len; i++)
{
if (input[i] == '+' || input[i] == '-' || input[i] == '*' || input[i] == '/')
{
symbol = input[i];
getSymbol = 1;
continue;
}
if (getSymbol == 0)
num1Str[i] = input[i];
else
num2Str[j++] = input[i];
}
num1 = atof(num1Str);
num2 = atof(num2Str);
if(symbol == '+')
*ret = num1 + num2;
else if(symbol == '-')
*ret = num1 - num2;
else if(symbol == '*')
*ret = num1 * num2;
if(symbol == '/')
{
if(num2 != 0)
*ret = num1 / num2;
else
returnRet = 1;//data error
}
free(num2Str);
free(num1Str);
return returnRet;
}

int main(void)
{
float ret;
char input[100];
memset(input, 0, sizeof(input));
scanf("%s",input);
if(Calculate(input,&ret) == 0)
printf("%.2f",ret);
else
printf("data erro");
return 0;
}
cdyzxy
2019-03-28 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3209万
展开全部

#include<stdio.h>
void main() { float a,b,c; char d,e;
  scanf("%f%c%f",&a,&d,&b); e=1;
  switch ( d ) {
    case '+': c=a+b; break;
    case '-': c=a-b; break;
    case '*': c=a*b; break;
    case '/': if ( b==0 ) e=0; else c=a/b; break;
    default: e=0; break;
  }
  if ( e ) printf("%.2f\n",c); else printf("data erro\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
4747哦
2019-07-07 · TA获得超过675个赞
知道小有建树答主
回答量:365
采纳率:73%
帮助的人:66.7万
展开全部
#include<stdio.h>
main()
{
double a,b,w,x,y,z;
char ch;
while(scanf("%lf %c %lf",&a,&ch,&b)!=1)
{
if(ch=='*')
{w=a*b;printf("%lf*%lf=%.2lf\n",a,b,w);}
if(ch=='/')
{
if(b==0)printf("输入有误\n");
else {x=a/b;printf("%lf/%lf=%.2lf\n",a,b,x);}
}
if(ch=='+')
{y=a+b;printf("%lf+%lf=%.2lf\n",a,b,y);}
if(ch=='-')
{z=a-b;printf("%lf-%lf=%.2lf\n",a,b,z);}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式