1 //函数调用
2
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <math.h>
6 //根据传入的半径,返回圆的面积
7 double calcCircle(double);
8
9 //要对用户输入进行非负的判断
10 int validate(double); //验证输入double 的数值 是否为正数
11
12 //double input(); //输入正确的值,如果不符合,重新输入
13 //矩形
14 double calcRectangle(double,double);
15 //三角形
16 double calcTriangle(double,double);
17
18 int main()
19 {
20
21 double radius;
22 double width,height;
23 double base,heigh;
24 double s;
25 int choice;
26
27 printf("1.圆\n");
28 printf("2.矩形\n");
29 printf("3.三角形\n");
30 printf("本系统只支持计算三种图形的面积,请选择:\n");
31 scanf("%d",&choice);
32
33
34 switch(choice)
35 {
36 case 1:
37
38 printf("请输入圆的半径,我来计算面积:");
39
40 //要对用户输入进行非负的判断
41 do
42 {
43 scanf("%lf",&radius); //录入
44 if(!validate(radius)) // 取反 不是正确的整数,就会有提示!!!
45 {
46 printf("您录入的是负数,请录入整数");
47 }
48
49 }
50 while(!validate(radius)); //当验证不通过的时候,从新录入
51
52 s=calcCircle( radius);//调用
53 break;
54 case 2:
55
56 printf("请输入矩形的长和宽,我来计算面积:");
57 do
58 {
59 scanf("%lf%lf",&width,&height);
60 if(!validate(width) || !validate(height))
61 {
62 printf("您录入的是负数,请录入整数");
63
64 }
65 }
66 while(!validate(width) || !validate(height));
67 //验证通过 ,在调用,计算
68 s = calcRectangle(width, height);
69 break;
70
71 case 3:
72 printf("请输入三角形的底和高,我来计算面积:");
73 do
74 {
75 scanf("%lf%lf",&base,&heigh);
76 if(!validate(base) || !validate(heigh))
77 {
78 printf("您录入的是负数,请录入整数");
79 }
80 }
81
82 while(!validate(base) || !validate(heigh));
83 s = calcTriangle(base,heigh);
84
85
86 break;
87
88 default:
89 printf("本系统只支持3种图形,请在1-3之间选择!!!");
90 }
91
92
93 printf("图形的面积为:%.2lf\n",s);
94 // printf("矩形的面积为:%.2lf\n",s);
95 // printf("三角形的面积为:%.2lf\n",s);
96
97 return 0;
98 }
99
100
101 double calcCircle(double radius)
102 {
103
104 double s = 3.14 *pow(radius,2);
105
106 //返回计算好的面积
107 return s;
108 }
109
110
111
112
113 //矩形
114 double calcRectangle(double width,double height)
115 {
116 return width * height;
117
118 }
119
120
121
122 //三角形
123 double calcTriangle(double base,double heigh)
124 {
125 return base * heigh /2;
126
127 }
128
129
130
131 //验证输入double 的数值 是否为正数
132 int validate(double num)
133 {
134 return num > 0 ; //如果num>0,会返回一个非0值,表示真
135
136 }

C函数调用(2)的更多相关文章

  1. idapython实现动态函数调用批量注释

    部门小伙伴遇到一个样本需要对动态函数调用就行批量注释还原的问题,通过idapython可以大大的减少工作量,其实这一问题也是很多样本分析中最耗时间的一块,下面来看看如何解决这个问题(好吧这才是今年最后 ...

  2. [汇编与C语言关系]1.函数调用

    对于以下程序: int bar(int c, int d) { int e = c + d; return e; } int foo(int a, int b) { return bar(a, b); ...

  3. javascript函数调用的各种方法!!

    在JavaScript中一共有下面4种调用方式: (1) 基本函数调用 (2)方法调用 (3)构造器调用 (4)通过call()和apply()进行调用 1. 基本函数调用 普通函数调用模式,如: J ...

  4. jsContext全局函数调用与对象函数调用、evaluateScript

    evaluateScript:兼具js加载(生成具体的上下文)(函数与通用变量的加载),与函数执行的功能: 函数调用的方式有两种: 1)获取函数(对象),然后执行调用: [context[@" ...

  5. 用 Graphviz+pvtrace 可视化函数调用

    最近在想怎么把一个程序的函数调用关系快速的用流程图的方式画出来,之后看到了这个一篇文章“用 Graphviz 可视化函数调用”(http://www.ibm.com/developerworks/cn ...

  6. 行内js函数调用

    <ul> <li onclick=abc(this);><a href="javascript:void(0);">12234588</a ...

  7. ObReferenceObjectByName函数调用WIN7下的解决

    <寒江独钓 Windows内核安全编程>第4章键盘的过滤ctrl2cap代码中,ObReferenceObjectByName函数调用: [1]extern POBJECT_TYPE Io ...

  8. c语言函数, 函数调用及函数递归

    1. 函数的定义: 返回值类型 函数名(形参列表) {函数体(函数的实现内容)}, 注意: 如果没有参数, 小括号也是必不可少的.  函数与函数之间可以嵌套调用(也就是在一个函数内部可以调用另外一个函 ...

  9. C/C++函数调用的几种方式及函数名修饰规则以及c++为什么不允许重载仅返回类型不同的函数

    我们知道,调用函数时,计算机常用栈来存放函数执行需要的参数,由于栈的空间大小是有限的,在windows下栈是向低地址扩展的数据结构,是一块连续的内存区域.这句话的意思是栈顶的地址和栈的最大容量是系统预 ...

  10. 深入理解 C 语言的函数调用过程

    来源: wjlkoorey 链接:http://blog.chinaunix.net/uid-23069658-id-3981406.html 本文主要从进程栈空间的层面复习一下C语言中函数调用的具体 ...

随机推荐

  1. 模拟windows10计算器的实现

    用户界面部分: import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.HashMap; impo ...

  2. Android Studio用上Visual Studio Android Emulator

    背景介绍 第一次接触Android官方的AVD(Android Virtual Device)时你可能会吐槽又慢又丑,不要紧,微软作为新晋安卓阵营最佳开发商,其实也为我们准备了一个脱胎于Windows ...

  3. 区分DDD中的Domain, Subdomain, Bounded Context, Problem/Solution Space

    区分DDD中的Domain, Subdomain, Bounded Context, Problem/Solution Space 译自: Domain, Subdomain, Bounded Con ...

  4. Docker_CICD笔记

    1 环境说明 1.1 机器配置 主机名称 IP地址 系统版本/内存/cpu核数/硬盘 安装软件 controlnode 172.16.1.70/24 centos7.4/4/2/60 docker.d ...

  5. RabbitMQ交换机

    RabbitMQ中,生产者并不是直接将消息发送给queue,而是先将消息发送给exchange,再由exchange通过不同的路由规则将消息路由到绑定的队列中进行存储,那么为什么要先将消息发送给exc ...

  6. php 基于redis使用令牌桶算法 计数器 漏桶算法 实现流量控制

    通常在高并发和大流量的情况下,一般限流是必须的.为了保证服务器正常的压力.那我们就聊一下几种限流的算法. 计数器计数器是一种最常用的一种方法,在一段时间间隔内,处理请求的数量固定的,超的就不做处理. ...

  7. 南京大学计算机基础 X64函数调用和链接器原理和可重定位的文件.o

    一. 1.函数调用差别 X64的函数调用,和X86函数调用区别,在于参数的传递不一样了,X64的参数传递不在依靠栈来传,而是寄存器,不过还是具有局限性的 比如只能允许六个寄存器来传,分别是RDI,RS ...

  8. XCTF csaw2013reversing2

    题目描述:听说运行就能拿到Flag,不过菜鸡运行的结果不知道为什么是乱码 一.先运行看看. 果然乱码. 二.查壳 三.是pe文件,可以拖入od和ida进行动态和静态分析. 1.对主函数进行反编译一下. ...

  9. WPF教程六:理解WPF中的隧道路由和冒泡路由事件

    WPF中使用路由事件升级了传统应用开发中的事件,在WPF中使用路由事件能更好的处理事件相关的逻辑,我们从这篇开始整理事件的用法和什么是直接路由,什么是冒泡路由,以及什么是隧道路由. 事件最基本的用法 ...

  10. ESP32-性能监控笔记

    基于ESP-IDF4.1 1 #include <stdio.h> 2 #include <string.h> 3 #include <unistd.h> 4 #i ...