练习2-9 整数四则运算

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/melody_1016/article/details/82285233

练习2-9 整数四则运算(10 分)

本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。

输入格式:

输入在一行中给出2个正整数A和B。

输出格式:

在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。

输入样例:

3 2

输出样例:

3 + 2 = 5
3 - 2 = 1
3 * 2 = 6
3 / 2 = 1

分析:本题是最常规的整数四则混合运算,一般思路就是分别编写“加、减、乘、除”四个函数,然后依次调用。但是,既然之前已经对“函数指针”有所了解,何不借助此机会巩固一下这部分知识呢?

(1)建立一个函数指针数组,参数分别是四个函数的函数名,然后利用for循环遍历这个指针数组,从而实现四个函数的依次调用

(2)另外编写一个函数val,并将函数指针作为参数,根据不同情况,将不同的函数名作为调用val函数的实参,把函数入口地址传送给函数val中的形参(该形参是指向函数的指针变量),这样调用val函数就分别执行不同的函数

代码:

方法一:直接调用函数

//方法一:直接调用函数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
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 A = 0;
	int B = 0;
	scanf("%d %d", &A, &B);
	printf("%d + %d = %d\n", A, B, Add(A, B));
	printf("%d - %d = %d\n", A, B, Sub(A, B));
	printf("%d * %d = %d\n", A, B, Mul(A, B));
	printf("%d / %d = %d\n", A, B, Div(A, B));
	system("pause");
	return 0;
}

方法二:函数指针数组

扫描二维码关注公众号,回复: 3088330 查看本文章
//方法二:定义一个函数指针数组
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void Add(int a, int b)
{
	printf("%d + %d = %d\n", a, b, a+b);

}
void Sub(int a, int b)
{
	printf("%d - %d = %d\n", a, b, a - b);
}
void Mul(int a, int b)
{
	printf("%d * %d = %d\n", a, b, a * b);
}
void Div(int a, int b)
{
	printf("%d / %d = %d\n", a, b, a / b);
}
int main()
{
	int A = 0;
	int B = 0;
	scanf("%d %d", &A, &B);
	void(*pf[])(int, int) = { Add, Sub, Mul, Div };
	for (int i = 0; i < sizeof(pf) / sizeof(pf[0]); i++)
	{
		(*pf[i])(A, B);
	}
	system("pause");
	return 0;
}

方法三:函数指针作为参数

//用指向函数的指针做参数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void Add(int a, int b)
{
	printf("%d + %d = %d\n", a, b, a+b);

}
void Sub(int a, int b)
{
	printf("%d - %d = %d\n", a, b, a - b);
}
void Mul(int a, int b)
{
	printf("%d * %d = %d\n", a, b, a * b);
}
void Div(int a, int b)
{
	printf("%d / %d = %d\n", a, b, a / b);
}

void cal(int a,int b,void(*pf)(int, int))
{
	(*pf)(a, b);
}
int main()
{
	int A = 0;
	int B = 0;
	scanf("%d %d", &A, &B);
	cal(A, B, Add);
	cal(A, B, Sub);
	cal(A, B, Mul);
	cal(A, B, Div);
	system("pause");
	return 0;
}

结果:

猜你喜欢

转载自blog.csdn.net/melody_1016/article/details/82285233
今日推荐