精华内容
下载资源
问答
  • C语言计算器

    2014-06-25 21:09:56
    C语言计算器
  • c语言计算器

    千次阅读 多人点赞 2018-11-22 22:03:32
    c语言计算器两种方法 //一般做法 #include<stdio.h> #include<windows.h> //#include<assert.h> void menu() { printf("**************************\n"); ...

    c语言计算器两种方法

    //一般做法
    #include<stdio.h>
    #include<windows.h>
    //#include<assert.h>
    void menu()
    {
    	printf("**************************\n");
    	printf("****欢迎来到计算器页面****\n");
    	printf("**** 1.add    2.mul  *****\n");
    	printf("*****3.sub    4.div1 *****\n");
    	printf("*****0.exit          *****\n");
    	printf("**************************\n");
    }
    
    int add(int x, int y)
    {
    	return x + y;
    }
    
    int mul(int x, int y)
    {
    	return x * y;
    }
    
    int sub(int x, int y)
    {
    	return x - y;
    }
    
    int div1(int x, int y)
    {
    	return x / y;
    }
    
    int main()
    {
    	int n = 1;
    	menu();
    	while (n)
    	{
    		printf("请输入选项:\n");
    		scanf("%d", &n);
    		int x = 0, y = 0;
    		/*printf("请输入两个整数!\n");
    		scanf("%d%d", &x, &y);*/    
            //若将两个数字输入放在此处会出现输入错误时不能退出系统,而是显示“输入两个整数”的提示
    		switch (n)
    		{
    		case 1:
    			printf("请输入两个整数!\n");
    			scanf("%d%d", &x, &y);
    			printf("%d\n", add(x, y));
    			break;
    		case 2:
    			printf("请输入两个整数!\n");
    			scanf("%d%d", &x, &y);
    			printf("%d\n", mul(x, y));
    			break;
    		case 3:
    			printf("请输入两个整数!\n");
    			scanf("%d%d", &x, &y);
    			printf("%d\n", sub(x, y));
    			break;
    		case 4:
    			printf("请输入两个整数!\n");
    			scanf("%d%d", &x, &y);
    			printf("%d\n", div1(x, y));
    			break;
    		case 0:
    			printf("退出计算器!\n");
    			break;
    		default:
    			printf("输入错误,请重新输入!\n");
    		}
    	}
    }


    //使用函数指针数组解决计算器问题
    
    #include<stdio.h>
    #include<windows.h>
    //#include<assert.h>
    
    void menu()
    {
    	printf("**************************\n");
    	printf("****欢迎来到计算器页面****\n");
    	printf("**** 1.add    2.mul  *****\n");
    	printf("*****3.sub    4.div1 *****\n");
    	printf("*****0.exit          *****\n");
    	printf("**************************\n");
    }
    
    int add(int x, int y)
    {
    	return x + y;
    }
    
    int mul(int x, int y)
    {
    	return x * y;
    }
    
    int sub(int x, int y)
    {
    	return x - y;
    }
    
    int div1(int x, int y)
    {
    	return x / y;
    }
    
    int main()
    {
    	int n = 1;
    	menu();
    	while (n)
    	{
    		printf("请输入选项:\n");
    		scanf("%d", &n);
    		int(*arr[5])() = { 0,add,mul,sub,div1 };//转移表
            //定义一个函数指针数组,存放函数地址
    		if (n >= 0 && n < 5)
    		{
    			int x = 0, y = 0;
    			printf("请输入两个整数:>\n");
    			scanf("%d%d", &x, &y);
    			printf("%d\n", (*arr[n])(x,y));//输出结果
    		}
    		else
    		{
    			printf("输入有误,请重新输入!\n");
    			scanf("%d", &n);
    		}
    	}
    	system("pause");
    	return 0;
    }
    两种方法相比,第一种相似代码较多,比较冗余;第二种代码简洁直观,程序效率高。
    展开全文
  • C语言 计算器

    2017-10-12 17:44:30
    计算器c源代码,非常好的源代码,可已参考 这是一个用c语言实现的完成计算器功能的程序,主要包括加、减、乘、除。
  • C语言计算器
  • C语言计算器代码

    2015-10-24 11:46:48
    C语言计算器代码,包含全部代码,可是实现多位数的加减乘除
  • c语言计算器程序设计包含加减乘除简单的函数运算c语言计算器程序设计包含加减乘除简单的函数运算人气:258 ℃时间:2020-03-28 13:19:41优质解答实用计算器之程序设计[摘 要]多用计算器的构思及设计代码[关键词]多用...

    c语言计算器程序设计包含加减乘除简单的函数运算

    c语言计算器程序设计包含加减乘除简单的函数运算

    人气:258 ℃时间:2020-03-28 13:19:41

    优质解答

    实用计算器之程序设计

    [摘 要]多用计算器的构思及设计代码

    [关键词]多用计算器;设计

    数值计算可以说是日常最频繁的工作了,WIN98提供了“计算器”软件供用户使用,该软件可以处理一般的一步四则运算,例如:3+2、5/3等等,但在日常中用户经常遇到多步四则运算问题,例如:3+4*5-4/2,45*34/2+18*7等等,那么该个计算器就无法胜任了,作者制作了一个实用的计算器,该计算器新增不少功能:(程序界面如图)

    1.可以实现连续的四则运算

    2.可以实现输入式子的显示

    3.可以方便计算个人所得税

    4.鼠标、键盘均可输入数据

    5.操作界面友好

    6.击键可发声

    构建该个计算器所需研究及解决的核心问题有如下几个:1、连乘求值?2、字符显示 3、键盘输入?4、击键发声?5、个人所得税法规,为了使大家对程序有更一步认识,现将代码提供给读者参考:

    *定义数组及窗体变量

    Dim number2(0 To 50) As Double

    Dim number(0 To 50) As Double

    Dim z As Integer

    Dim k As Integer, r As Integer

    Dim j As Integer

    Dim str As String

    *调用名为“playsound”的API函数

    Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

    Private Const SND_FILENAME = &H20000?

    Private Const SND_ASYNC = &H1?

    Private Const SND_SYNC = &H0

    *判断通用过程

    Sub pianduan(p As String)

    r = 0

    Dim i As Integer, l As Integer, h As Integer

    h = 0

    i = 1

    If InStr(Trim$(p), "*")0 Then

    k = k + 1

    End If

    If InStr(Trim$(p), "/")0 Then

    r = r + 1

    End If

    End Sub

    *连乘通用过程(略)

    *各按钮事件过程

    Private sub Command1_Click(Index As Integer)

    PlaySound App.Path & "\start.wav", 0, SND_SYNC

    Text1.Text = Text1.Text + Command1(Index).Caption

    Text2.Text = Text2.Text + Command1(Index).Caption

    Text1.SetFocus

    End Sub

    rivate sub Command10_Click()

    PlaySound App.Path & "\start.wav", 0, SND_SYNC

    str = Text3.Text

    End Sub

    Private sub Command11_Click()

    PlaySound App.Path & "\start.wav", 0, SND_SYNC

    Text3.Text = str

    End Sub

    rivate sub Command2_Click()

    PlaySound App.Path & "\start.wav", 0, SND_SYNC

    Dim totle As Double

    Dim n As Integer

    Call pianduan(Text1.Text)

    If k >= 1 Or r >= 1 Then

    Call liancheng(totle)

    number2(z) = totle

    If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then

    number2(z) = -totle

    End If

    k = 0: r = 0

    Else

    number2(z) = Val(Text1.Text)

    End If

    Text1.Text = ""

    Text2.Text = Text2 + "+"

    z = z + 1

    Text1.SetFocus

    End Sub

    rivate sub Command3_Click()

    PlaySound App.Path & "\start.wav", 0, SND_SYNC

    Dim totle As Double

    Dim n As Integer

    Call pianduan(Text1.Text)

    If k >= 1 Or r >= 1 Then

    Call liancheng(totle)

    number2(z) = totle

    If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then

    number2(z) = -totle

    End If

    k = 0: r = 0

    Else

    number2(z) = Val(Text1.Text)

    End If

    Text1.Text = ""

    Text2.Text = Text2 + "-"

    Text1.Text = Text1.Text & "-"

    z = z + 1

    Text1.SetFocus

    End Sub

    Private sub Command4_Click()

    PlaySound App.Path & "\start.wav", 0, SND_SYNC

    Text2.Text = Text2.Text + "*"

    Text1.Text = Text1.Text + "*"

    Text1.SetFocus

    End Sub

    rivate sub Command5_Click()

    PlaySound App.Path & "\start.wav", 0, SND_SYNC

    Text2.Text = Text2 + "/"

    Text1.Text = Text1 + "/"

    Text1.SetFocus

    End Sub

    Private sub Command6_Click()

    PlaySound App.Path & "\sound.wav", 0, SND_SYNC

    Dim totle As Double

    Dim n As Integer

    Call pianduan(Text1.Text)

    If k >= 1 Or r >= 1 Then

    Call liancheng(totle)

    number2(z) = totle

    If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then

    number2(z) = -totle

    End If

    k = 0: r = 0

    Else

    number2(z) = Val(Text1.Text)

    End If

    Text1.Text = ""

    z = z + 1

    Dim dengyu As Double

    Dim v As Integer

    For v = 0 To 50

    dengyu = dengyu + number2(v)

    Next v

    If dengyu < 0 Then

    Text3.ForeColor = &HFF&

    Else

    Text3.ForeColor = &HFF0000

    End If

    Text3.Text = dengyu

    Text1.SetFocus

    If Len(Text3.Text) >= 14 Then

    calcresult.Show

    End If

    End Sub

    rivate sub Command7_Click()

    PlaySound App.Path & "\start.wav", 0, SND_SYNC

    z = 0: k = 0: r = 0: j = 0

    Dim i As Integer

    For i = 0 To 50

    number(i) = 0

    number2(i) = 0

    Next i

    Text1.Text = ""

    Text2.Text = ""

    Text3.Text = ""

    Text1.SetFocus

    End Sub

    rivate sub Command8_Click()

    PlaySound App.Path & "\start.wav", 0, SND_SYNC

    If Val(Text3.Text) = 0 Then

    MsgBox "除数不能为0!"

    Exit Sub

    End If

    Text3.Text = 1 / Val(Text3.Text)

    End Sub

    Private sub Command9_Click()

    PlaySound App.Path & "\start.wav", 0, SND_SYNC

    Text3.ForeColor = &HFF0000

    Text3.Text = Val(Text3.Text) * Val(Text3.Text)

    End Sub

    rivate sub muninternet_Click()

    Dim i

    i = Shell("C:\Program Files\InternetExplorer\iexplore.exe", vbMaximizedFocus)

    End Sub

    rivate sub munmp3_Click()

    Dim i

    i = Shell("C:\Program Files\Windows Media Player\mplayer2", vbNormalNoFocus)

    End Sub

    Private sub munsm_Click()

    Dialog.Show

    End Sub

    rivate sub muntax_Click()

    tax.Show

    End Sub

    rivate sub munver_Click()

    ver.Show

    End Sub

    rivate sub notepad_Click()

    Dim i

    i = Shell("c:\windows\notepad", vbNormalFocus)

    End Sub

    Private sub Text1_KeyPress(KeyAscii As Integer)

    PlaySound App.Path & "\start.wav", 0, SND_SYNC

    Dim num As Integer

    num = Val(KeyAscii)

    If num > 47 And num < 58 Then

    Text1.Text = Text1.Text + CStr(num - 48)

    Text2.Text = Text2.Text + CStr(num - 48)

    End If

    If num = 46 Then

    Text1.Text = Text1.Text + "."

    Text2.Text = Text2.Text + "."

    End If

    If KeyAscii = 43 Then

    Dim totle As Double

    Dim n As Integer

    Call pianduan(Text1.Text)

    If k >= 1 Or r >= 1 Then

    Call liancheng(totle)

    number2(z) = totle

    If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then

    number2(z) = -totle

    End If

    k = 0: r = 0

    Else

    number2(z) = Val(Text1.Text)

    End If

    Text1.Text = ""

    Text2.Text = Text2 + "+"

    z = z + 1

    End If

    If KeyAscii = 45 Then

    Call pianduan(Text1.Text)

    If k >= 1 Or r >= 1 Then

    Call liancheng(totle)

    number2(z) = totle

    If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then

    number2(z) = -totle

    End If

    k = 0: r = 0

    Else

    number2(z) = Val(Text1.Text)

    End If

    Text1.Text = ""

    Text2.Text = Text2 + "-"

    Text1.Text = Text1.Text & "-"

    z = z + 1

    End If

    If KeyAscii = 42 Then

    Text2.Text = Text2.Text + "*"

    Text1.Text = Text1.Text + "*"

    End If

    If KeyAscii = 47 Then

    Text2.Text = Text2.Text + "/"

    Text1.Text = Text1.Text + "/"

    End If

    If KeyAscii = vbKeyReturn Then

    PlaySound App.Path & "\sound.wav", 0, SND_SYNC

    Call pianduan(Text1.Text)

    If k >= 1 Or r >= 1 Then

    Call liancheng(totle)

    number2(z) = totle

    If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then

    number2(z) = -totle

    End If

    k = 0: r = 0

    Else

    number2(z) = Val(Text1.Text)

    End If

    Text1.Text = ""

    z = z + 1

    Dim dengyu As Double

    Dim v As Integer

    For v = 0 To 50

    dengyu = dengyu + number2(v)

    Next v

    If dengyu < 0 Then

    Text3.ForeColor = &HFF&

    Else

    Text3.ForeColor = &HFF0000

    End If

    Text3.Text = dengyu

    End If

    If KeyAscii = vbKeyEscape Then

    z = 0: k = 0: r = 0: j = 0

    Dim i As Integer

    For i = 0 To 50

    number(i) = 0

    number2(i) = 0

    Next i

    Text1.Text = ""

    Text2.Text = ""

    Text3.Text = ""

    Text1.SetFocus

    End If

    If Len(Text3.Text) >= 14 Then

    calcresult.Show

    End If

    End Sub

    rivate sub Text3_Change()

    tax2.Text1 = Text3.Text

    End Sub

    我来回答

    类似推荐

    展开全文
  • c语言计算器代码程序设计报告《C语言课程设计》报告 设计题目:简单计算器设计 学院名称:电子与信息工程学院专业:计算机科学与技术班级:计科姓名:学号指导教师: 定稿日期:XX-5-28 一、设计题目 简单...

    c语言计算器代码程序设计报告

    《C语言课程设计》报告  设计题目:简单计算器设计  学院名称:电子与信息工程学院专业:计算机科学与技术班级:计科姓名:学号指导教师:  定稿日期:XX-5-28  一、设计题目  简单计算器设计  二、设计要求  在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要  求。  三、设计目的  ①通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能  力,能更好的巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!  ②通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。  四、设计思想及过程  ①由于需要使功能尽量模仿Windows下的计算器,而很多功能要以图形界面  实现,故用BorlandC++Builder编写。所以用的是面向对象程序设计。但因为这是C语言的课程设计,所以除了面向对象的使用以外,所有语法都是按照C语言的格式编写。  ②采用工程模式,文件包括(运算主函数头文件,包括各运算符的操作以及其辅助函数)、(窗体类的声明头文件)、(工程初始化文件)、(代码主文件,包括各空间操作的函数)以及一些其它附属文件,包括dll动态链接库。  ③在参考了Windows里的计算器以后,决定在我的课程设计中实现:  ⒈0~9的数字输入功能  ⒉实现加、减、乘、整除、取模、阶乘、位运算左移、x的y次方、与、异或、x立方、x平方运算功能,二进制、八进制、十进制、十六进制  转换功能,正负转换功能,退格、归零等功能。  ⒊数字显示最多为40位,超过即用科学表示法表示。⒋运算时因最高能对5000位的数字进行运算,故所有功能建立在自行编写代码的高精度运算基础上。  ④在按键操作中,先判断用户按的是数字键还是功能键。功能键分运算符键、进制转换键以及清空键。然后记录下来用户当前的按键,然后对上次按的功能键键进行运算。如按了1、+、5,再按任何功能键即对1+5进行运算。如果按的是进制转换键,就记录当前进制,则在以后每次操作中,都将显示结果转换为当前进制再显示。  如:以下是按5以及*号时的函数代码  ⑤对于高精度,采用结构体structhigh{intnum[MAXN];};的形式,数组的一个元素存一位。个位为num[1],将符号存在num[0]之中。  ⒈对于高精度加法,先判断两个数符号,如果为异号,则进行高精度减法,否则将各位逐个相加,然后逐位进位,返回答案即可。  ⒉对于高精度减法,先判断两个数符号,如果为异号,则进行高精度加法,否则用大数减小数,逐个相减,然后逐位退位,判断符号、返回答案即可。  ⒊对于高精度乘法,用第二个数的各位乘以第一个数的各位。然后错位相加,相当于小学生摆竖式。最后将各位相乘的结果相加,逐位进位,判断符号、返回答案即可。  ⒋对于高精度整除,采用各位从0~9枚举形式,如果此位与0~9相乘刚好小于等于相应数字,则为此位答案为这个数。最后返回答案即可。  ⒌对于高精度取模,则只需求出高精度整除,然后将数字减去整除的结果即可。  ⒍对于n阶乘,做n次乘法,每乘一次,乘数减一。  ⒎对于左移,虽然是建立在位运算基础上,但其效果只是乘以二,所以只需高精度乘以二即可。  ⒏对于x的平方、立方、y次方,只需将x高精度相乘2次、3次或者更多次即可。  ⒐对于与运算,先将两个数转换为二进制,然后对每位进行与运算,最后转换回十进制即可。  ⒑对于异或运算,原理同与运算。  ⑥对于进制转换,采用除n取余法。将其转换为相应进制。  ⑦对于清零键,按按键功能对actNum、ans、nowSym等变量清空或者减少一位即可。  ⑧我对于程序容错性做了很大程度上的优化。对于超出位数的运算会跳出“数字太大”提示。对于各按键混合使用会导致的程序混乱用了极大程度上的优化,也就是说对于按键的随意性有很好的兼容性。比如说可以直接按2再按*然后按=,就会算出2的平方。  ⑨对于显示函数,先判断当前进制数,然后再将需要显示的数字转换为当前进制数再显示。如果位数超过40,则取前几位,采用科学计数法显示。  ⑩未能实现部分:小数部分。由于时间关系,未能实现复制粘贴数字功能。  五、流程图  C语言课程设计报告  题目:设计一个简单计算器  目录  1.设计目的  2.内容

    展开全文
  • C语言计算器要求是自己输入算式,要考虑括号,可以实现小数的加减乘除和幂运算下面这个是老师的示例,只能实现整数并且不能考虑括号望大神赐教奉献出100的分数#include#definesmax10#defineemax255intpower(intx,...

    C语言计算器

    要求 是自己输入算式,要考虑括号,可以实现小数的加减乘除和幂运算

    下面这个是老师的示例,只能实现整数并且不能考虑括号

    望大神赐教

    奉献出100的分数

    #include 

    #define smax 10

    #define emax 255

    int power(int x,int y)

    {

    int t,s=1;

    for (t=0; t

    s=s*y;

    return s;

    }

    int calc(char op, int x, int y)

    {

    int num;

    if (op=='+')

    num=x+y;

    else if (op=='-')

    num=y-x;

    else if (op=='*')

    num=y*x;

    else if (op=='/')

    num=y/x;

    else if (op=='^')

    num=power(x,y);

    return num;

    }

    int rank(char op)

    {

    int r;

    if (op=='+') r=0;

    else if (op=='-') r=1;

    else if (op=='*') r=2;

    else if (op=='/') r=2;

    else if (op=='^') r=3;

    return r;

    }

    void main()

    {

    //栈

    int s[smax];

    char op[smax];

    int top=0;

    int otop=0;

    //其他变量

    int i,num,x,y;

    int ans=0;

    int rtop,rinput;

    char o;

    //表达式存储

    char ex[emax];

    //实现计算器的功能

    //输入表达式

    scanf("%s", ex);

    i=0;

    num=0;

    //读出每个字符

    s[0]=0;

    top=1;

    op[0]='+';

    otop=1;

    while (1)

    {

    //分解每个数和符号

    if (ex[i] >=48 && ex[i]<58)

    {

    //读到数字

    num=num*10+ex[i]-48;

    }

    else

    {

    //前一个数字已经输入完毕

    //数字入栈

    s[top]=num;

    top=top+1;

    num=0;

    if (ex[i]==0)

    break;

    else

    {

    //判断符号优先级

    //如果优先级低于当前栈顶的符号的优先级,计算栈顶符号对应的运算

    rinput=rank(ex[i]);

    //符号栈顶元素出栈

    otop=otop-1;

    o=op[otop];

    rtop=rank(o);

    while (rtop>=rinput && rtop!=0)

    {

    //计算

    //数字出战

    top=top-1;

    展开全文
  • c语言计算器的实验报告 1. 题目:简单计算器 2. 实验目的:模仿日常生活中所用的计算器,自行设计一个简单 的计算器程序,实现简单的计算功能。 3. 实验主要硬件软件环境:Window 7Visual C++ 6.0 4. 实验内容: (1)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,470
精华内容 6,988
关键字:

c语言计算器

c语言 订阅