C语言程序设计-笔记04-函数
C语言程序设计-笔记04-函数
例5-1 计算圆柱体的体积。输入圆柱的高和半径,求圆柱体积volume=πxr^2xh。要求定义和调用函数cylinder(r,h)计算圆柱体的体积。
#include<stdio.h>
double cylinder(double r,double h);
int main(void)
{
double height,radius,volume;
printf("Enter radius and height:");
scanf("%lf%lf",&radius,&height);
volume=cylinder(radius,height);
printf("volume=%.3f\n",volume);
return 0;
}
double cylinder(double r,double h)
{
double result;
result=3.1415926*r*r*h;
return result;
}
|
|
例5-2 计算五边形的面积。将一个五边形分割成3个三角形,输入这些三角形的7条边长,计算该五边形的面积。要求定义和调用函数area(x,y,z)计算边长为x,y,z的三角形面积。
|
|||||||
|
|||||||
|
|||||||
#include<stdio.h>
#include<math.h>
int main(void)
{
double
a1,a2,a3,a4,a5,a6,a7,s;
double
area(double x,double y,double z);
printf("Please
input 7 side lengths in the order a1 to a7:\n");
scanf("%lf%lf%lf%lf%lf%lf%lf",&a1,&a2,&a3,&a4,&a5,&a6,&a7);
s=area(a1,a5,a6)+area(a6,a7,a4)+area(a7,a2,a3);
printf("The
area of the pentagon is %.2f\n",s);
return
0;
}
double area(double x,double y,double z)
{
double
p=(x+y+z)/2;
return
sqrt(p*(p-x)*(p-y)*(p-z));//海伦-秦九韶公式
}
例5-3 使用函数判断完全平方数。定义一个判断完全平方数的函数IsSquare(n),当n为完全平方数时返回1,否则返回0,不允许调用数学库函数。
#include<stdio.h>
int IsSquare(n)
{
int
i;
for(i=1;n>0;i=i+2)
{
n=n-i;
}
if(n==0)
{
return
1;
}
else
{
return
0;
}
}
int main(void)
{
int
n;
printf("Enter
n:");
scanf("%d",&n);
if(IsSquare(n)==1)
{
printf("%d
is a square number.\n",n);
}
else
{
printf("%d
is not a square number.\n",n);
}
}
例5-4 使用函数求最大公约数。定义函数gcd(int m,int n),计算m和n的最大公约数。
#include<stdio.h>
int gcd(int m,int n)
{
int
r,temp;
if(m<n)
{
temp=m;
m=n;
n=temp;
}
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
return
n;
}
int main(void)
{
int
m,n;
printf("Enter
m,n:");
scanf("%d%d",&m,&n);
printf("%d\n",gcd(m,n));
return
0;
}
例5-5 使用函数判断素数。定义函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0.
#include<stdio.h>
#include<math.h>
int prime(int m)
{
int
i,limit;
if(m<=1)
{
return
0;
}
else
if(m==2)
{
return
1;
}
else
{
limit=sqrt(m)+1;
for(i=2;i<=limit;i++)
{
if(m%i==0)
{
return
0;
}
}
return
1;
}
}
int main(void)
{
int
n;
printf("Enter
n:");
scanf("%d",&n);
if(prime(n)==1)
{
printf("%d
is prime.\n",n);
}
else
{
printf("%d
is not prime.\n",n);
}
return
0;
}
例5-6 数字金字塔。输入一个正整数n,输出n行数字金字塔。
#include<stdio.h>
int main(void)
{
int
n;
void
pyramid(int n);
printf("Enter
n:");
scanf("%d",&n);
pyramid(n);
return
0;
}
void pyramid(int n)
{
int
i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)//输出每行数字前的空格
{
printf("
");
}
for(j=1;j<=i;j++)//输出每行的数字和数字后的空格
{
printf("%d",i);
printf("
");
}
putchar('\n');
}
}
例5-7 计算2个复数之和与之积。分别输入2个复数的实部与虚部,用函数实现计算2个复数之和与之积。
#include<stdio.h>
double result_real,result_imag; //全局变量
int main(void)
{
double
imag1,imag2,real1,real2;
void
complex_prod(double real1,double real2,double imag1,double imag2);
void
complex_add(double real1,double real2,double imag1,double imag2);
printf("Enter
1st complex number(real and imaginary):");
scanf("%lf%lf",&real1,&imag1);
printf("Enter
2nd complex number(real and imaginary):");
scanf("%lf%lf",&real2,&imag2);
complex_add(real1,imag1,real2,imag2);
printf("addition
of complex is %f+%fi\n",result_real,result_imag);
complex_prod(real1,imag1,real2,imag2);
printf("product
of complex is %f+%fi\n",result_real,result_imag);
return
0;
}
void complex_add(double real1,double
imag1,double real2,double imag2)
{
result_real=real1+real2;
result_imag=imag1+imag2;
}
void complex_prod(double real1,double
imag1,double real2,double imag2)
{
result_real=real1*real2-imag1*imag2;
result_imag=real1*imag2+real2*imag1;
}
例5-8 用函数实现财务现金记账。先输入操作类型(1 收入,2 支出,0 结束),再输入操作金额,计算现金剩余金额,经多吃操作直到输入操作类型为0时结束。要求定义并调用函数,其中现金收入与现金支出分别用不同函数实现。
#include<stdio.h>
double cash;
int main(void)
{
int
choice;
double
value;
void
income(double number),expend(double number);
cash=0;
printf("Enter
operate choice(0--end,1--income,2--expend):");
scanf("%d",&choice);
while(choice!=0)
{
if(choice==1||choice==2)
{
printf("Enter
cash value:");
scanf("%lf",&value);
if(choice==1)
{
income(value);
}
else
{
expend(value);
}
printf("current
cash %.2f\n",cash);
}
printf("Enter
operate choice(0--end,1--income,2--expend):");
scanf("%d",&choice);
}
return
0;
}
void income(double number)
{
cash=cash+number;
}
void expend(double number)
{
cash=cash-number;
}
例5-9 输入正整数n,输出1!-n!的值。要求定义并调用含静态变量的函数fact_s(n)计算n!.
#include<stdio.h>
double fact_s(int n);
int main(void)
{
int
i,n;
printf("Input
n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("%3d!=%.0f\n",i,fact_s(i));
}
return
0;
}
double fact_s(int n)
{
static
double f=1;
f=f*n;
return
(f);
}
参考资料
C语言程序设计/何钦铭,颜晖主编.---4版.---北京:高等教育出版社,2020.9
C语言程序设计-笔记04-函数的更多相关文章
- Go语言学习笔记(7)——函数和方法
Go语言中同时有函数和方法! 函数: go程序必须要包含一个main函数.main函数不能有任何参数和返回值! 1. 定义方法示例: func max(num1, num2 int) int { // ...
- 【Go语言学习笔记】函数做参数和闭包
函数做参数 在Go语言中,函数也是一种数据类型,我们可以通过type来定义它,它的类型就是所有拥有相同的参数,相同的返回值的一种类型.类似于重写(同名覆盖). 回调函数:函数有一个参数是函数类型,这个 ...
- Go语言学习笔记(五) [函数]
日期:2014年7月29日 1.函数定义:func (p type) funcname(q int) (r,s int) {return 0,0 } func: 保留字,用于定义一个函数 ...
- JavaScript语言精粹 笔记04 数组
数组1 数组字面量2 长度3 删除4 列举5 混淆的地方6 方法7 维度 数组1 数组字面量 var empty = []; var numbers = [ 'zero', 'one', 'two', ...
- JavaScript语言精粹 笔记02 函数
函数函数对象函数字面量调用参数返回异常给类型增加方法递归作用域闭包回调模块级联套用记忆 函数 1 函数对象 在JS中函数就是对象.对象是“名/值”对的集合并拥有一个连接到原型对象的隐藏连接.对象字 ...
- JAVA语言程序设计-笔记摘录
JAVA 程序语言设计(基础篇) 笔记摘录 为避免输入错误, 不要在nextByte().nextShort().nextInt()等等后面使用nextLine() nextXXXXX()都称为令牌读 ...
- C语言学习笔记--字符串函数
字符串函数 需要包含头文件#include<stdio.h> strlen strcmp strcpy strchr strstr strcasestr
- Mysql 数据库学习笔记04 函数
一.创建自定义函数 * 使用自定义函数,可以返回字符串.整型.实数或者其他类型: create [aggregate] function 名称 (参数列表) return type begin //函 ...
- C语言学习笔记之函数指针与函数指针数组
指针函数:本质是一个函数: 是一个返回指针类型的函数int * sum(){ } 函数指针:本质是一个指针: 是一个指向函数的指针 int (*p)(int,int) = sum; p(5,6); i ...
- Python语言程序设计(笔记)
1.平方根的格式化 知识点:平方根计算 pow(a,0.5)[可以计算负数,结果为复数] a**b 例题: 获得用户输入的一个整数a,计算a的平方根,保留小数点后3位,并打印输出. ...
随机推荐
- [Python]细节、经验
[版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/132333324 出自[进步* ...
- Python 生成二维码的几种方式、生成条形码
一: # 生成地维码 import qrcode import matplotlib.pyplot as plt from barcode.writer import ImageWriter 创建QR ...
- NOI Linux 2.0 下载安装和使用
下载安装部分 NOI Linux 2.0发布,将于9月1日起正式启用! 首先来到 NOI 的官网,下载 .iso 格式的盘符. 然后下载任意一个虚拟机软件,这里以 VirtualBox 为例. Dow ...
- 《2020年IT行业项目管理调查报告》重磅发布
近年来,IT行业迅速发展,物联网.敏捷.DevOps等已成为行业的热门话题.为更好地了解行业现状,禅道项目管理软件联合各合作伙伴于2021年1月开展了针对IT行业的问卷调查,并推出了<2020年 ...
- set集合的TreeSet类
TreeSet 类 TreeSet类是Set接口的一个实现类,主要作用是用于对对象的排序以及确定存入对象的唯一性. 它的底层是红黑树,用来确保元素的排序和唯一性的,基于map对象,TreeSet是对T ...
- list集合中的实现类LinkedList
LinkedList: 底层是一个双向链表,方便数据的频繁出入.便于快速插入,删除元素,不太方便进行查询 toArray(): 以正确的顺序(从第一个到最后一个素)返回一个包含此列表中所有元素的数组 ...
- #直径,线段树#51nod 1766 树上的最远点对
题目 多组询问,在 \([a,b]\) 和 \([c,d]\) 中分别选一个点 \(x,y\) ,使得 \(dis(x,y)\) 最大 分析 考虑直径的一个性质,两个点集两条直径的四个端点可能成为合并 ...
- #离线,倒序,线段树#Comet OJ - Contest #15 E 栈的数据结构题
题目 初始时有 \(N\) 个空的栈,编号为 \(1 \sim N\),有以下三种类型的指令: push \(L\) \(R\) \(v\):把编号 \(L \sim R\) 这连续 \(R-L+1\ ...
- #最大流#WOJ 124 Football Coach
题目 有\(n\)支球队,互相之间已经进行了一些比赛.现在还有\(m\)场比赛未进行, 每场比赛胜者得2分,平局各得1分,负者不得分. 问是否存在一种方法使得球队\(n\)的得分比其他\(n-1\)支 ...
- OpenHarmony有氧拳击之应用端开发
一.简介 继<OpenHarmony有氧拳击设备端的开发>后,本次为大家带来酷炫的应用端开发.如下,开发者伴随着音乐,律动出拳后,那开发板屡屡播放"挨打"效果,这究竟是 ...