C语言运用函数指针数组实现计算器功能

本文实例为大家分享了C语言运用函数指针数组制作计算器的具体代码,供大家参考,具体内容如下

先来回顾一下概念:

指针数组 —— 存放指针的数组

函数指针 —— 存放函数地址的指针

函数指针数组 —— 存放函数指针的数组

接下来说说这次要制作的计算器的功能:

1.add —— 加法

2.sub —— 减法

3.mul —— 乘法

4.div —— 除法

0.exit —— 退出

具体来通过代码讲解:

(1)首先写一个菜单程序,在运行程序时首先打印一次菜单。

void menu()
{
 printf("*************************\n");
 printf("*******   1.add   *******\n");
 printf("*******   2.sub   *******\n");
 printf("*******   3.mul   *******\n");
 printf("*******   4.div   *******\n");
 printf("*******   0.exit  *******\n");
 printf("*************************\n");
}

(2)写好四个关于加、减、乘、除操作的函数。

int Add(int x, int y)
{
 return x + y;
}
int Sub(int x, int y)
{
 return x - y;
}
int Mul(int x, int y)
{
 return x * y;
}
int Div(int x, int y)
{
 return x / y;
}

(3)写主函数,定义input是你要输入的数,用来选择功能;定义x和y是你要输入两个的操作数;接着在主程序中调用菜单函数menu()。

int main()
{
 int x = 0;
 int y = 0;
 int input = 0;
 menu();
}

(4)使用do while循环,以及if else语句,建立规则,如果输入的input是0的话就退出循环,while(input)代表input非零的时候会继续循环;如果input在1~4之间则对应计算器菜单上的功能,这时你需要输入两个数字;如果超出这个范围则重新循环。

int main()
{
 int x = 0;
 int y = 0;
 int input = 0;
 menu();
 do{
  printf("请选择你要进行的操作:\n");
  scanf("%d", &input);
  if (input == 0) {
   printf("退出计算器!\n");
  }
  else if (input >= 1 && input <= 4)
  {
   printf("请输入两个数字:\n");
   scanf("%d %d", &x, &y);
  }
  else {
   printf("选择错误!\n");
  }
 } while (input);
  return 0;
}

(5)接下来在主函数中定义一个函数指针数组,int (*pfarr[5])(int,int) = { 0,Add,Sub,Mul,Div }; 代表名为pfarr的函数指针数组有存放了5个指向函数的指针,分别是0,Add,Sub,Mul,Div;之所以增加0为数组的首元素,是为了数组元素下标与菜单相对应。

int main()
{
 int x = 0;
 int y = 0;
 int input = 0;
 menu();
 int (*pfarr[5])(int,int) = { 0,Add,Sub,Mul,Div };
 do{
  printf("请选择你要进行的操作:\n");
  scanf("%d", &input);
  if (input == 0) {
   printf("退出计算器!\n");
  }
  else if (input >= 1 && input <= 4)
  {
   printf("请输入两个数字:\n");
   scanf("%d %d", &x, &y);
  }
  else {
   printf("选择错误!\n");
  }
 } while (input);
  return 0;
}

(6)最后我们定义ret用来接收函数的返回值也就是运算结果,并打印;调用的时候直接调用函数指针数组中的input位,就是在调用相应的函数地址,并使用该函数;调用完成后打印ret。

int main()
{
 int x = 0;
 int y = 0;
 int ret = 0;
 int input = 0;
 menu();
 int (*pfarr[5])(int,int) = { 0,Add,Sub,Mul,Div };
 do{
  printf("请选择你要进行的操作:\n");
  scanf("%d", &input);
  if (input == 0) {
   printf("退出计算器!\n");
  }
  else if (input >= 1 && input <= 4)
  {
   printf("请输入两个数字:\n");
   scanf("%d %d", &x, &y);
   ret = pfarr[input](x,y);
   printf("ret = %d\n", ret);
  }
  else {
   printf("选择错误!\n");
  }
 } while (input);
  return 0;
}

到这里就全部讲解完成,喜欢的话点个赞再走吧~

全部代码在这里:

#include <stdio.h>

void menu()
{
 printf("*************************\n");
 printf("*******   1.add   *******\n");
 printf("*******   2.sub   *******\n");
 printf("*******   3.mul   *******\n");
 printf("*******   4.div   *******\n");
 printf("*******   0.exit  *******\n");
 printf("*************************\n");
}

int Add(int x, int y)
{
 return x + y;
}
int Sub(int x, int y)
{
 return x - y;
}
int Mul(int x, int y)
{
 return x * y;
}
int Div(int x, int y)
{
 return x / y;
}

int main()
{
 int x = 0;
 int y = 0;
 int ret = 0;
 int input = 0;
 menu();
 int (*pfarr[5])(int,int) = { 0,Add,Sub,Mul,Div };
 do{
  printf("请选择你要进行的操作:\n");
  scanf("%d", &input);
  if (input == 0) {
   printf("退出计算器!\n");
  }
  else if (input >= 1 && input <= 4)
  {
   printf("请输入两个数字:\n");
   scanf("%d %d", &x, &y);
   ret = pfarr[input](x,y);
   printf("ret = %d\n", ret);
  }
  else {
   printf("选择错误!\n");
  }
 } while (input);
  return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言MFC基础之计算器详解

    目录 基于MFC计算器(基础点) 需求:把计算器运算的过程呈现出来. 基础点 总结 基于MFC计算器(基础点) 主要是在实现MFC计算器的过程中碰到的一些问题,和补充的一些知识. 需求:把计算器运算的过程呈现出来. 想法:利用两个队列,一个存储输入的字符串(表达式),一个存放结果. 分别命名为queue1,和myqueue,让字符串从左到右依次入队列. 但之后按照自己的思路去推演,发现如果进入队列的是1+23,如果下一个字符入队的是"+",那么先计算23的结果入队myqueue中,而q

  • C语言实现简单的计算器

    本文实例为大家分享了C语言实现简单计算器的具体代码,供大家参考,具体内容如下 描述:简单的实现四则运算 1.switch法 #include<stdio.h> void menu()//菜单函数 { printf("************************************\n"); printf("***** 1.add 2.sub *****\n"); printf("***** 3.mul 4.div *****\n&quo

  • C语言实现简单计算器程序

    这两天在看一个C语言写的计算器程序,做了不少的功夫,跟着作者一步步的进行完善,了解了许多细节性的东西,在此自己做个总结,加深自己对程序的印象,也算是梳理. 在该计算器程序,能进行加减乘除.sin.cos.exp等操作,同时能进行数值保存功能.而该计算器使用逆波兰表示法.即所有运算符都跟在操作数的后面,比如下列表达式: (1 - 2) * (4 + 5)采用逆波兰表示法表示为:1 2 - 4 5 + * 逆波兰表达法中不需要圆括号,只要知道每个运算符需要几个操作数就不会引起歧义. 计算器程序实现很

  • C语言运用回调函数实现计算器

    本文实例为大家分享了C语言运用回调函数实现计算器的具体代码,供大家参考,具体内容如下 回调函数概念: 回调函数是一个通过函数指针调用的函数,也就是将函数的地址作为参数传递给另一个函数,当这个指针回来调用其指向的函数时,称为回调函数. 本次制作计算器的功能: 1.add -- 加法 2.sub -- 减法 3.mul -- 乘法 4.div -- 除法 0.exit -- 退出 具体来通过代码讲解: (1)首先写一个菜单函数,在运行程序时打印菜单 void menu() { printf("***

  • C语言结课设计之计算器功能

    本文实例为大家分享了C语言实现计算器的具体代码,供大家参考,具体内容如下 /*===============================================*\ ** 设计目的:简单计算器,计算形如10*(20.2-30.6)+5.0/2的表达式值 ** 简要原理:中缀式转逆波兰式(后缀式) ** IDE:Dev-Cpp 4.9.9.2 ** 注意事项:括号必须是英文状态的 ** 时间: 2014-6-17 \*==================================

  • C语言实现简单计算器功能(1)

    本文为大家分享了C语言实现简单计算器功能的具体方法,供大家参考,具体内容如下 这几天一直上控制语句,在学完if.switch和循环语句后,为了巩固所学知识点,想给学生出一道简单的计算器程序.题目如下: 通过所学的知识(选择语句.循环语句)完成一个简单的计算器编程,要求不许抄袭,只能用自己所学的知识点,不可引用网上自己的不懂的程序. 要求的格式如下图: 要求以这样的一种格式进行输出,并能通过选择完成不同的功能. 如:选择1,完成整数相加功能,算完后又能回到该页面. 经过分析,我简单的写了一段代码,

  • C语言数据结构之简易计算器

    本文实例为大家分享了C语言简易计算器的具体代码,供大家参考,具体内容如下 主要解决了处理负数.小数等的基础运算操作,无图形界面 #include <iostream> #include <stack> using namespace std; class Calculator{ private: int Priority(char fuhao); double CalSuffix(string PostfixExp); public: double Calculate(string

  • C语言实现简单计算器

    本文实例为大家分享了C语言实现简单计算器的具体代码,供大家参考,具体内容如下 实现效果如图: 实现代码如下: #include<stdio.h> #include<windows.h>//gotoxy #include<conio.h> #define width 80 #define height 30 void gotoxy(int x, int y); void GreateFrame() { int i = 0; for (i = 0 ; i < widt

  • C语言实现简单计算器功能(2)

    本文接着上一篇C语言实现简单计算器功能(1)继续学习. 之前用switch语句完成了一个简单计算器的功能,下面我给大家用if语句和while循环语句再实现一个简单计算器的编程. 要求: 实现简单的计算器,具体代码如下: #include <stdio.h> // 头文件 void main() { char a = 0; // 变量声明并初始化 int x, y; // 变量声明 int result = 0; char b = 37; while(1) // whiel循环实现反复在计算器系

  • C语言运用函数指针数组实现计算器功能

    本文实例为大家分享了C语言运用函数指针数组制作计算器的具体代码,供大家参考,具体内容如下 先来回顾一下概念: 指针数组 -- 存放指针的数组 函数指针 -- 存放函数地址的指针 函数指针数组 -- 存放函数指针的数组 接下来说说这次要制作的计算器的功能: 1.add -- 加法 2.sub -- 减法 3.mul -- 乘法 4.div -- 除法 0.exit -- 退出 具体来通过代码讲解: (1)首先写一个菜单程序,在运行程序时首先打印一次菜单. void menu() { printf(

  • C语言函数指针数组实现计算器功能

    目录 一.概念 二.用途 三.案例:计算器 (1)基础代码编译: (2)使用函数指针数组的实现: 一.概念 数组:一个存放相同类型数据的存储空间. int arr[10]; //数组arr的每个元素是int 指针数组:一个存放指针的数组. int* arr[10]; //数组arr的每个元素是int* 函数指针:一个指向函数的指针,一般用函数名表示. int Add(int x, int y) { return x + y; } int main() { int arr[10] = { 1, 2

  • C语言用函数指针实现一个特别的计算器

    目录 函数指针 实现计算器程序的思想 用函数指针调用加减乘除函数 完整代码与运行截图 函数指针 函数指针就是存放函数地址的指针. 函数指针的重要内容: 1.函数指针的使用:函数的类型(指针)(函数的形参类型)= 函数名:注意:函数的形参那里是不需要形参的变量名的.,如果函数没有形参,就不需要填任何东西,void也不行.这么使用完之后,这个指针就是一个函数指针了. 2.函数指针调用函数的方法:****(指针)(实参);注意:这里的指针有两种表达方式,比如定义了一个叫*p 的函数指针,函数的返回类型

  • C语言详细讲解指针数组的用法

    目录 1. 指针数组定义方法 2. 指针的指针(二级指针) 3. 字符串和指针 4. 数组指针 定义方法 数组指针的用法 1. 指针数组定义方法 格式: 类型说明符 *数组名[ 元素个数 ] int *p[10]; // 定义了一个整型指针数组p,有10个元素,都是int *类型的变量 指针数组的分类: 同指针类型的分类,见上一篇 大多数情况下,指针数组都用来保存多个字符串. #include <stdio.h> int main() { char *name[5] = {"Hell

  • C语言中函数指针的三种使用方法总结

     C语言中函数指针的三种使用方法总结 在这里分享一下自己的心得,希望和大家一起分享技术,如果有什么不足,还请大家指正.写出这篇目的,就是希望大家一起成长,我也相信技术之间没有高低,只有互补,只有分享,才能使彼此更加成长. 定义方式:int (*p)(int x, int y); 实现代码: #include <stdio.h> int sum(int x, int y){ return x + y; } int reduce(int x, int y){ return x - y; } int

  • 深入解析C语言中函数指针的定义与使用

    1.函数指针的定义     函数是由执行语句组成的指令序列或者代码,这些代码的有序集合根据其大小被分配到一定的内存空间中,这一片内存空间的起始地址就成为函数的地址,不同的函数有不同的函数地址,编译器通过函数名来索引函数的入口地址,为了方便操作类型属性相同的函数,c/c++引入了函数指针,函数指针就是指向代码入口地址的指针,是指向函数的指针变量. 因而"函数指针"本身首先应该是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整形变量.字符型.数组一样,这里是指向函数.C在编译时

  • C语言编程函数指针入门精讲教程

    目录 一.指针引子 二.使用步骤 1.取函数地址 2.创建函数指针 3.通过函数指针调用函数的两种方法 三.函数指针进阶 总结 一.指针引子 示例:我们常常接触的指针大多有如下几类: 整形指针-存放整形地址,指向整形 字符指针-存放字符地址,指向字符 数组指针-存放数组地址(注意不是数组首元素地址),指向数组 由以上三个例子,我们能总结指针的共同点:存放某个类型变量的地址,指向那个类型的变量,但是在讲函数指针首先有一个问题:函数也有地址吗?我们用一段简单的代码来验证一下即可. #include<

  • C语言中函数指针与软件设计经验总结

    函数指针与软件设计 记得刚开始工作时,一位高手告诉我,说,longjmp和setjmp玩得不熟,就不要自称为C语言高手.当时我半信半疑,为了让自己向高手方向迈进,还是花了一点时间去学习longjmp和setjmp的用法.后来明白那不单是跳来跳去那样简单,而是一种高级的异常处理机制,在某些情况下确实很有用. 为了显示自己的技巧,也在自己的程序中用过几次.渐渐发现这样的技巧带来的好处是有代价的,破坏了程序的结构化设计,程序变得很难读,尤其对新手来说.终于明白这种技巧不过是一种调味料,在少数情况使用几

  • c语言:基于函数指针的两个示例分析

    第一个:------------------------------------------------------ 复制代码 代码如下: #include <stdio.h>#include <string.h>void tell_me(int f(const char *, const char *));int main(void){   tell_me(strcmp);   tell_me(main);   return 0;}void tell_me(int f(const

  • C语言中函数与指针的应用总结

    1. 首先,在C语言中函数是一种function-to-pointer的方式,即对于一个函数,会将其自动转换成指针的类型. 复制代码 代码如下: #include<stdio.h> void fun(){} int main(void){   printf("%p %p %p\n", &fun, fun, *fun);   return 0;} -------------------------------------------------------------

随机推荐