计算器(简易版)

简介: 另一种是利用转移表的方式来写,将各个函数的地址存放在一个函数指针数组里面,当要使用函数时,就直接调用指针即可,可以改观上面的美观(上面的代码有很多重复的,太挫了)

1.首先利用do while()弄一个菜单函数,定义一个input变量,利用switch语句来选择菜单中的加减乘除,再分装函数就可以了


不过这个计算器只是特别简单的一种,用来初学者练习。


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void menu()
{
  printf("************************\n");
  printf("**** 1.Add   2.Sub  ****\n");
  printf("**** 3.Mul   4.Div  ****\n");
  printf("************************\n");
}
int Add(int a, int b)
{
  return a + b;
}
int Sub(int a, int b)
{
  return a - b;
}
int Mul(int a, int b)
{
  return a * b;
}
int Div(int a, int b)
{
  return a / b;
}
int main()
{
  int x, y;
  int input;
  int ret = 0;
  do
  {
    menu();
    printf("请选择:\n");
    scanf("%d", &input);
    switch (input)
    {
    case 1:  printf("请输入操作数:\n");
      scanf("%d %d", &x, &y);
      ret = Add(x, y);
      printf("ret=%d\n", ret);
      break;
    case 2: printf("请输入操作数:\n");
      scanf("%d %d", &x, &y);
      ret = Sub(x, y);
      printf("ret=%d\n", ret);
      break;
    case 3: printf("请输入操作数:\n");
      scanf("%d %d", &x, &y);
      ret = Mul(x, y);
      printf("ret=%d\n", ret);
      break;
    case 4: printf("请输入操作数:\n");
      scanf("%d %d", &x, &y);
      ret = Div(x, y);
      printf("ret=%d\n", ret);
      break;
    default: printf("输入错误\n");
      break;
    }
  } while (input);
  return 0;
}


2.另一种是利用转移表的方式来写,将各个函数的地址存放在一个函数指针数组里面,当要使用函数时,就直接调用指针即可,可以改观上面的美观(上面的代码有很多重复的,太挫了)

根据函数指针数组的下标来找函数所以第一个下标0,就存放0,下标1呢存Add的函数地址,下标2存放Sub的地址,下标3存放Mul的地址,下标4存放Div的地址。


第二种:


#include <stdio.h>
void menu()
{
  printf("************************\n");
  printf("**** 1.Add   2.Sub  ****\n");
  printf("**** 3.Mul   4.Div  ****\n");
  printf("************************\n");
}
int Add(int a, int b)
{
  return a + b;
}
int Sub(int a, int b)
{
  return a - b;
}
int Mul(int a, int b)
{
  return a * b;
}
int Div(int a, int b)
{
  return a / b;
}
int main()
{
  int input=1;
  int x, y;
  int ret = 0;
  int(*pf[5])(int a, int b) = { 0,Add,Sub,Mul,Div };
  //函数指针数组存放着函数地址,可以通过数组下标来找到函数地址然后进行调用。
  while (input)
  {
    menu();
    printf("请选择:\n");
    scanf("%d", &input);
    if (input >= 1 && input <= 4)
    {
      printf("请输入操作数:\n");
      scanf("%d %d", &x, &y);
      ret=pf[input](x, y);
      printf("ret=%d\n", ret);
    }
  }
  return 0;
}
相关文章
|
2月前
|
安全 Serverless Python
用Python实现计算器功能
用Python实现计算器功能
42 1
|
4天前
|
程序员 定位技术
程序员必知:关于DotaRdsp计算器的编写(一)
程序员必知:关于DotaRdsp计算器的编写(一)
|
2月前
|
算法 测试技术 UED
Python实现计算器的设计与实现
Python实现计算器的设计与实现
76 0
|
2月前
|
C语言
C语言程序基本的计算器功能
C语言程序基本的计算器功能
16 0
|
2月前
|
前端开发
好看的前端计算器代码分享(html+css+js制作计算器)
好看的前端计算器代码分享(html+css+js制作计算器)
50 0
|
算法 前端开发 存储
前端算法-计算器
前端算法-计算器
|
Java 数据安全/隐私保护 容器
背记不如实战系列-javaGUI实例-计算器制作
背记不如实战系列-javaGUI实例-计算器制作
81 0
|
Python
python实现简单的计算器 带界面
python实现简单的计算器 带界面
226 0
python实现简单的计算器 带界面
自制计算器,实现加减乘除
自制计算器,实现加减乘除
87 0
|
Java
用Java实现计算器功能
###### 程序解析: 使用Scanner进行导包,抓取用户数据,进行强制转换,转换成float类型,进行 计算创建一个方法,使用这个方法进行工作处理数据,再创建一个流程方法,使用 equals判断比较数据,使代码更严谨,使用break;和continue;增加程序的复用性 ,使程序更加的灵活。使用Switch语句判断符号,进行传参计算,使用while(){} 语句增加一个死循环,使程序更复用,不浪费数据,增加一些严禁判断,让程序更 完美一点。
199 0
用Java实现计算器功能