用C语言怎么写个计算器
4个回答
展开全部
一、用户界面是用图形窗口还是命令行窗口。
如果是命令行窗口它的数据输入输出比较简单。
如果是图形窗口则要涉及,图形窗口相同的操作了。这个部分如果你不会,那你需要专门学习一样。
二、支持哪些计算功能。
除了加减乘除外,是否还支持其他高级的计算功能?
加减乘除的计算精度。
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相加,同上类推。
在实际程序时,可以将用户界面与加减乘除程序分离。即用户界面的代码要与计算程序的代码分在不同的函数中。
又用户界面代码调用计算函数。计算函数将结果返回给用户界面代码。
以命令行界面为例,
用户界面代码,只是等待用户输入,将相应用户信息转换成合适的格式,
然后调用相应计算函数。
计算函数做完计算以后,返回相应数字。
用户界面代码,再将返回的数字转换成适当的格式,显示在窗口上。
如果是命令行窗口它的数据输入输出比较简单。
如果是图形窗口则要涉及,图形窗口相同的操作了。这个部分如果你不会,那你需要专门学习一样。
二、支持哪些计算功能。
除了加减乘除外,是否还支持其他高级的计算功能?
加减乘除的计算精度。
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相加,同上类推。
在实际程序时,可以将用户界面与加减乘除程序分离。即用户界面的代码要与计算程序的代码分在不同的函数中。
又用户界面代码调用计算函数。计算函数将结果返回给用户界面代码。
以命令行界面为例,
用户界面代码,只是等待用户输入,将相应用户信息转换成合适的格式,
然后调用相应计算函数。
计算函数做完计算以后,返回相应数字。
用户界面代码,再将返回的数字转换成适当的格式,显示在窗口上。
展开全部
思路很简单,根据输入的数据判断,用一个switch,分别处理加减乘除四种情况
可以再完善的,整个人性化的界面,具体代码网上也有,搜搜就行了
可以再完善的,整个人性化的界面,具体代码网上也有,搜搜就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果要控制台的,那非常简单,随便一搜索就能找到海量代码。
如果要有界面的,那恐怕没人写,纯SDK编程很累的。
如果要有界面的,那恐怕没人写,纯SDK编程很累的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询