用C语言怎么写个计算器

 我来答
kaladijia
推荐于2017-09-28 · TA获得超过4326个赞
知道小有建树答主
回答量:1737
采纳率:25%
帮助的人:517万
展开全部
一、用户界面是用图形窗口还是命令行窗口。
如果是命令行窗口它的数据输入输出比较简单。
如果是图形窗口则要涉及,图形窗口相同的操作了。这个部分如果你不会,那你需要专门学习一样。

二、支持哪些计算功能。
除了加减乘除外,是否还支持其他高级的计算功能?
加减乘除的计算精度。
32位系统中,如果计算结果为不大于32位二进制的数。(64位系统则为不大于64位数)你可以直接使用C语言的相应的加减乘除表达式完成。
如果是支持超大数的运算,那就需要采取特殊手段了。

比如32位系统中,计算的数超过32位。比如两个128位数相加。
需要将128位拆分成4个32位。将每个32位作为整体。在依照数学的多位数加进行计算。
A1 B1 C1 D1
A2 B2 C2 D2
--------------

D1与D2相加(需要检测是否有进位,也就是计算结构是否有溢出)
C1与C2相加,同样要检测进位,并且要加上D1与D2结果的进位。
B1与B2相加,同样要检测进位,并且要加上C1与C2结果的进位。
B1与B2相加,同上类推。

在实际程序时,可以将用户界面与加减乘除程序分离。即用户界面的代码要与计算程序的代码分在不同的函数中。
又用户界面代码调用计算函数。计算函数将结果返回给用户界面代码。

以命令行界面为例,
用户界面代码,只是等待用户输入,将相应用户信息转换成合适的格式,
然后调用相应计算函数。
计算函数做完计算以后,返回相应数字。
用户界面代码,再将返回的数字转换成适当的格式,显示在窗口上。
危华星暄妍
2020-02-21 · TA获得超过3912个赞
知道大有可为答主
回答量:3151
采纳率:32%
帮助的人:181万
展开全部
思路很简单,根据输入的数据判断,用一个switch,分别处理加减乘除四种情况
可以再完善的,整个人性化的界面,具体代码网上也有,搜搜就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
海金刚俊杰
2019-04-28 · TA获得超过3610个赞
知道大有可为答主
回答量:3049
采纳率:30%
帮助的人:241万
展开全部
如果要控制台的,那非常简单,随便一搜索就能找到海量代码。
如果要有界面的,那恐怕没人写,纯SDK编程很累的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
脑筋急转
2015-08-09 · TA获得超过312个赞
知道小有建树答主
回答量:240
采纳率:100%
帮助的人:109万
展开全部
  #include<stdio.h>
  #include<math.h>
  #include<windows.h>
  #include<conio.h>
  void jisuan()
  {
printf("\t\t\t简单的计算器——2015 -8-9 凌晨 长期熏修 百度知道现场编写\n\n\n\n");
   printf("高次方用 ^ 号 表示 ,时间太晚就没有开方运算 按任意键开始计算\n\n");
   int i=0;
   char c = 'a', c1;
   double a=0, b=0 ,result ;
   system("cls");
   printf("%s\n", __DATE__);
   printf("%s\n", __TIME__);

   printf("\t\t\t请输入你的计算式[ ]");
   for(;i<27;i++)putchar('\b');
   scanf("%lf", &a);
   while( ' '== (c =getchar()) );
   //c = getchar();
   scanf("%lf", &b);
   do c1 = getchar(); while(c1!='\n');
   switch(c){case '+':result = a+b;break;
   case '-':result = a-b;break;
   case '*':result = a*b;break;
   case '/':result = a/b;break;
   case '^':result = pow(a,b);break;
   default:;break;
   }
   printf("\n\n\n\t\t\t\t结果为 =%.4lf \n\n\n",result);
  }
  int main()
  {
       do
   {jisuan();
   printf("按任意键重新运算,esc键退出:");
   }while(getch() != 27 );
   return 0;
  }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式