c++用宏定义和函数来求圆的面积,半径可为表达式
本题是输入整数或表达式进入宏定义和函数来求面积的。若将输入的半径改成表达式则会因为宏定义与函数的不同,有所区别。
因为宏定义是直接替换,所以例如输入为确定的值时,宏定义和函数的编写可以没有区别,例如下面的代码,输入为具体的整形数:
#include<iostream>
using namespace std;
#define Pie 3.14159 //无参宏
#define AREA r*r*Pie //无参宏,算式的替换
#define Area(r) r*r*Pie //有参宏
float area(int r) //因为返回的面积是小数·
{return r*r*Pie;
}
int main()
{int r;float s;cout<<"请输入圆的半径r,输出圆的半径\n";cin>>r;cout<<"圆的面积为:\n";cout<<area(r)<<'\n'; //可以直接套用函数输出s=AREA; //调用无参宏来计算,直接替换成s=r*r*Pie再计算出的结果cout<<s<<'\n';s=Area(r); //调用了有参宏,替换入公式计算cout<<s<<endl;return 0;
}
但半径为表达式时,例如半径为 a+b 时
int a=1,b=2;
float s=Area(a+b)
*注意:宏定义是直接替换的,
则 #define Area(r) r*r*Pie;的宏调用为
s=Area(a+b)=a+b*a+b*Pie=1+2*1+2*3.14=9.28
这与我们所预期要的结果不一样,所以要加()使得将输入的表达式先进行运算。
改成 s=Area(a+b)=(a+b)*(a+b)*Pie
#define AREA (r)*(r)*Pie
#define Area(r) (r)*(r)*Pie
但函数不用,因为函数调用输入的是计算后的值。
宏定义的行末通常不加语句结束符";"否则会一起替换
c++用宏定义和函数来求圆的面积,半径可为表达式相关推荐
- 编程题:带参数的宏定义来实现,求圆的周长和面积。
编程题:带参数的宏定义来实现,求圆的周长和面积. #include<stdio.h> #define PI 3.14159 #define L(r) 2*PI*(r) #define S( ...
- python用海伦公式求面积_用带参数的宏定义,通过海伦公式求三角形的面积
要求: 海伦公式: ,其中 ,a,b,c为三角形的三个边.定义两个带参数的宏,一个用来求p,另一个用来求s 题目分析: 首先,题目要求是通过输入三角形的三条边,输出三角形的面积.因为不是任意的三条边都 ...
- 用JS,编写函数,求圆的面积
function area(r) {var sum = Math.PI * r * r;return sum;}console.log(area(3));
- C语言中宏定义和函数的区别
前言 在C语言中,对于一些常用或通用的代码段的封装可以有两种方式:函数和宏定义. 这篇博客就来带大家梳理一下对于这两种方式我们在使用时应该如何抉择,以及它们的区别和优缺点. 宏定义和函数的区别 从程序 ...
- C语言:定义一个函数max_min,求一组数据的最大值和最小值. 在主函数中输入n和n个数据,调用max_min函数求出最大最小值,然后在主函数中输出这n个数的最大值和最小值。(要求使用指针做)
[问题描述]定义一个函数max_min,求一组数据的最大值和最小值. 在主函数中输入n和n个数据,调用max_min函数求出最大最小值,然后在主函数中输出这n个数的最大值和最小值.(要求使用指针做) ...
- 定义一个函数,求序列中的偶数,并求出偶数的个数。
定义一个函数,求序列中的偶数,并把结果打印出来 代码如下: 结果如下: 定义一个函数,求序列中的偶数的个数. 代码如下: 结果如下:
- C语言宏定义制作函数模板
一.介绍 当做协议栈或者批量化函数的时候,内容框架是固定的,如果要写1000个10000个函数确实手敲比较麻烦,一种是用工具批量产生这些函数,另一种就是宏定义,这里给出宏定义解决的方法,利用宏定义制作 ...
- JS 函数 求圆的面积总结
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 1.设计一个长方形的类,成员变量有长与宽,成员函数有求周长与面积,然后进行测试。要求有构造函数、析造函数和复制构造函数。
1.设计一个长方形的类,成员变量有长与宽,成员函数有求周长与面积,然后进行测试.要求有构造函数.析造函数和复制构造函数. 代码比较简单,论坛有坛友问,顺手写一下当复习 #include <bit ...
最新文章
- 如何利用自组织竞争网络进行患者癌症发病预测
- 可能是最详尽的PyTorch动态图解析
- ide setting
- javascript判断浏览器核心
- apache 创建多端口监听
- opencv将整个图片BGR通道的某个通道进行修改
- Python 循环控制语句-break/continue
- Seven Segment Display
- 监控员工离职倾向系统已被下架,网友:劝你善良
- 百度为什么发现不了旗下网站的恶意代码?
- Java实现:月,日,年,周,访问量统计
- 机器学习知识总结系列-机器学习中的优化算法总结(1-4)
- BeginnersBook Java 示例
- 新手网管升级之路(三)
- 大数据_Hbase-Filter 索引(优化)_根据column查询---Hbase工作笔记0020
- 搜索引擎只能抓取html文件,为什么有些明明存在的网页不能被搜索到?
- 【TSP】基于matlab GUI免疫算法结合蚁群算法求解旅行商问题【含Matlab源码 1910期】
- Oauth2认证图解
- MySQL高级---04
- nuc element i5-8265U黑苹果配置