第5章函数
高一数学(必修一)《第五章 函数y=Asin(ωxφ)》练习题及答案解析-人教版

高一数学(必修一)《第五章 函数y=Asin (ωx φ)》练习题及答案解析-人教版班级:___________姓名:___________考号:___________一、解答题1.已知函数()2sin(2)16f x x a π=+++,且当[0,]2x π∈时()f x 的最小值为2.(1)求a 的值;(2)先将函数()y f x =的图像上点的纵坐标不变,横坐标缩小为原来的12,再将所得的图像向右平移12π个单位,得到函数()y g x =的图像,求方程()4g x =在区间[0,]2π上所有根之和.2.写出将sin y x =的图像变换后得到2sin 24y x π⎛⎫=- ⎪⎝⎭的图像的过程,并在同一个直角坐标平面内画出每一步变换对应的函数一个周期的图像(保留痕迹). 3.已知函数f (x )=A sin(ωx +φ)(A >0,ω>0,|φ|<2π)的部分图象如图所示.(1)求函数f (x )的解析式;(2)如何由函数y =sin x 的图象通过相应的平移与伸缩变换得到函数f (x )的图象,写出变换过程. 4.用“五点法”画出函数2sin y x =在区间[]0,2π上的图象. 5.已知函数()()sin f x A x ωϕ=+(0A >,0>ω与2πϕ<),在同一个周期内,当4x π=时,则y 取最大值1,当712x π=时,则y 取最小值-1. (1)求函数()f x 的解析式.(2)函数sin y x =的图象经过怎样的变换可得到()y f x =的图象 (3)求方程()()01f x a a =<<在[]0,2π内的所有实数根之和. 6.已知函数()2cos 44f x x ππ⎛⎫=-⎪⎝⎭. (1)求函数()f x 图象的对称轴;(2)将函数()f x 图象上所有的点向左平移1个单位长度,得到函数()g x 的图象,若函数()y g x k =+在()2,4-上有两个零点,求实数k 的取值范围.7.2021年12月9日15时40分,神舟十三号“天宫课堂”第一课开讲!受“天宫课堂”的激励与鼓舞,某同学对航天知识产生了浓厚的兴趣.通过查阅资料,他发现在不考虑气动阻力和地球引力等造成的影响时,则火箭是目前唯一能使物体达到宇宙速度,克服或摆脱地 球引力,进入宇宙空间的运载工具.早在1903年齐奥尔科夫斯基就推导出单级火箭的最大理想速度公式: 0lnkm v m ω=,被称为齐奥尔科夫斯基公式,其中ω为发动机的喷射速度,0m 和k m 分别是火箭的初始质量和发动机熄火(推进剂用完 )时的质量.0km m 被称为火箭的质量比.(1)某单级火箭的初始质量为160吨,发动机的喷射速度为2千米/秒,发动机熄火时的质量为40吨,求该单级火箭的最大理想速度(保留2位有效数字);(2)根据现在的科学水平,通常单级火箭的质量比不超过10.如果某单级火箭的发动机的喷射速度为2千米/秒,请判断该单级火箭的最大理想速度能否超过第一宇宙速度7.9千米/秒,并说明理由.(参考数据:ln20.69≈,无理数e 2.71828=)二、单选题8.为了得到函数3sin 2y x =的图象,只要将函数3sin(21)y x =-的图象( ) A .向左平移1个单位长度 B .向左平移12个单位长度C .向右平移1个单位长度D .向右平移12个单位长度9.函数sin3y x =的图象可以由函数cos3y x =的图象( ) A .向右平移6π个单位得到 B .向左平移6π个单位得到 C .向右平移3π个单位得到 D .向左平移3π个单位得到 10.要得到函数()2cos 23f x x π⎛⎫=- ⎪⎝⎭的图像,只需将cos2y x =的图像( )A .向左平移3π个单位长度B .向右平移3π个单位长度C .向左平移23π个单位长度 D .向右平移23π个单位长度 11.为了得到函数3sin 23y x π⎛⎫=+ ⎪⎝⎭的图像,只需把函数3sin y x =图像上所有点( )A .向左平行移动3π个单位长度,再把所得各点的横坐标缩短到原来的12B .向左平行移动3π个单位长度,再把所得各点的横坐标伸长到原来的2倍 C .向左平行移动6π个单位长度,再把所得各点的横坐标缩短到原来的12D .向右平行移动3π个单位长度,再把所得各点的横坐标缩短到原来的12 12.要得到函数π3sin 25y x ⎛⎫=+ ⎪⎝⎭的图像,需( )A .将函数3sin π5y x =⎛⎫+ ⎪⎝⎭图像上所有点的横坐标变为原来的2倍(纵坐标不变)B .将函数π3sin 10y x ⎛⎫=+ ⎪⎝⎭图像上所有点的横坐标变为原来的2倍(纵坐标不变)C .将函数3sin 2y x =图像上所有点向左平移π5个单位长度D .将函数3sin 2y x =图像上所有点向左平移π10个单位长度13.为了得到函数2cos2y x =的图象,只需把函数2cos 2y x x =+的图象( ) A .向左平移3π个单位长度 B .向右平移3π个单位长度 C .向左平移6π个单位长度 D .向右平移6π个单位长度三、填空题14.将函数()f x 的图象向左平移π6个单位长度后得到()()sin y g x A x ωϕ==+(0A >,0>ω与π2ϕ≤)的图象如图,则()f x 的解析式为_____.15.彝族图案作为人类社会发展的一种物质文化,有着灿烂历史.按照图案的载体大致分为彝族服饰图案、彝族漆器图案、彝族银器图案等,其中蕴含着丰富的数学文化,如图1,漆器图案中出现的“阿基米德螺线”,该曲线是由一动点匀速离开一个固定点的同时又以固定的角速度绕该固定点转动所形成的轨迹.这些螺线均匀分布,将其简化抽象为图2,若2OA =,则AOB ∠所对应的弧长为______.参考答案与解析1.(1)2a =;(2)3π. 【分析】(1)由于当[0,]2x π∈时()f x 的最小值为2,所以min ()112f x a =-++=,从而可求出a 的值;(2)由图像变化可得()2sin(4)36g x x π=-+,由()4g x =得1sin(4)62x π-=,从而可求出x 的值【详解】(1)()2sin(2)16f x x a π=+++,∵[0,]2x π∈,∴72[,]666x πππ+∈∴min ()112f x a =-++=,∴2a =;(2)依题意得()2sin(4)36g x x π=-+,由()4g x =得1sin(4)62x π-=∴4266x k πππ-=+(k Z ∈)或54266x k πππ-=+(k Z ∈) ∴212k x ππ=+或24k x =+ππ,解得12x π=或4x π= ∴所有根的和为1243πππ+=.【点睛】此题考查三角函数的图像和性质,考查三角函数的图像的变换,考查转化能力和计算能力,属于基础题2.答案见解析.图像见解析【分析】由三角函数图像中的相位变换、周期变换、振幅变换叙述变换过程,然后作出图像变换的过程即可.【详解】先将sin y x =的图像上各点向右平移4π个单位得到函数sin 4y x π⎛⎫=- ⎪⎝⎭的图像再将函数sin 4y x π⎛⎫=- ⎪⎝⎭图像上的每一个点保持纵坐标不变,横坐标缩短到原来的一半,得到函数sin 24y x π⎛⎫=- ⎪⎝⎭的图像.再将函数sin 24y x π⎛⎫=- ⎪⎝⎭图像上的每一个点保持横坐标不变,纵坐标扩大到原来的2倍,得到函数2sin 24y x π⎛⎫=- ⎪⎝⎭的图像.3.(1)f (x )=sin (2)6x π+ ;(2) 答案见解析.【分析】(1)由图像可得A =1,51264Tππ-=结合2T πω=可求出ω的值,然后将点(,1)6π代入解析式可求出ϕ的值,从而可求出函数f (x )的解析式; (2)利用三角函数图像变换规律求解【详解】(1)由图像知A =1.f (x )的最小正周期T =4×5()126ππ-=π,故ω=2Tπ=2 将点(,1)6π代入f (x )的解析式得sin ()3πϕ+=1又|φ|<2π,∴φ=6π.故函数f (x )的解析式为f (x )=sin (2)6x π+.(2)变换过程如下:y =sin x 图像上的所有点的横坐标缩小为原来的一半,纵坐标不变,得到y =sin 2x 的图像,再把y =sin 2x 的图像,向左平移12π个单位y =sin (2)6x π+的图像. 4.答案见解析【分析】利用五点作图法,列表、描点、连线可作出函数sin y x =在区间[]0,2π上的图象. 【详解】解:按五个关键点列表如下:描点并将它们用光滑的曲线连接起来,如图所示.5.(1)()sin 34f x x π⎛⎫=- ⎪⎝⎭(2)答案见解析 (3)112π【分析】(1)结合已知条件可求出A ,最小正周期T ,然后利用最小正周期公式求ω,通过代值求出ϕ即可;(2)利用平移变换和伸缩变换求解即可;(3)利用正弦型函数的对称性求解即可. (1)设()()sin f x A x ωϕ=+的最小正周期为T 由题意可知,1A =,1721243T πππ=-=即223T ππω== ∴3ω=,即()()sin 3f x x φ=+∵3sin 14πϕ⎛⎫+= ⎪⎝⎭∴3242k ππϕπ+=+ k Z ∈ 又2πϕ<,∴4πϕ=-∴()sin 34f x x π⎛⎫=- ⎪⎝⎭.(2)利用平移变换和伸缩变换可知,sin y x =的图象向右平移4π个单位长度,得到sin 4y x π⎛⎫=- ⎪⎝⎭的图象再将sin 4y x π⎛⎫=- ⎪⎝⎭的图象上所有点的横坐标缩短为原来的13,纵坐标不变,得到sin 34y x π⎛⎫=- ⎪⎝⎭的图象.(3)∵()sin 34f x x π⎛⎫=- ⎪⎝⎭的最小正周期为23π∴()sin 34f x x π⎛⎫=- ⎪⎝⎭在[]0,2π内恰有3个周期故所有实数根之和为1119112662ππππ++=. 6.(1)14x k =+ k ∈Z (2)()2,0-.【分析】(1)求出()2sin 44f x x ππ⎛⎫=+ ⎪⎝⎭,解方程442x k ππππ+=+,k ∈Z 即得解;(2)求出()2cos 4g x x π=,即函数()y g x =的图象与直线y k =-在()2,4-上有两个交点,再利用数形结合分析求解. (1)解:因为()2cos 44f x x ππ⎛⎫=- ⎪⎝⎭,所以()2sin 44f x x ππ⎛⎫=+ ⎪⎝⎭.令442x k ππππ+=+,k ∈Z ,解得14x k =+ k ∈Z 所以函数()f x 图象的对称轴为直线14x k =+ k ∈Z . (2)解:依题意,将函数()f x 的图象向左平移1个单位长度后,得到的图象对应函数的解析式为()()2sin 12cos 444g x x x πππ⎡⎤=++=⎢⎥⎣⎦.函数()y g x k=+在()2,4-上有两个零点即函数()y g x =的图象与直线y k =-在()2,4-上有两个交点,如图所示所以02k <-<,即20k -<< 所以实数k 的取值范围为()2,0-. 7.(1)2.8千米/秒(2)该单级火箭最大理想速度不可以超过第一宇宙速度7.9千米/秒,理由见解析【分析】(1)明确0k m m ω、、各个量的值,代入即可;(2)求出最大理想速度max v ,利用放缩法比较max 2ln10v =与7.9的大小即可. (1)2ω=,0160m =和40k m =0lnk m v m ω∴=21602ln 2ln 42ln 24ln 2 2.7640=⨯===≈ ∴该单级火箭的最大理想速度为2.76千米/秒.(2)10km M ≤ 2ω= 0max ln km v m ω∴=2ln10= 7.97.97128e22>>=7.97.9ln ln128ln1002ln10e ∴=>>=max v ∴2ln107.9=<.∴该单级火箭最大理想速度不可以超过第一宇宙速度7.9千米/秒.8.B【分析】根据已知条件,结合平移“左加右减”准则,即可求解.【详解】解:()13sin 213sin 22y x x ⎛⎫=-- ⎪⎝=⎭∴把函数13sin 22x y ⎛⎫- ⎝=⎪⎭的图形向左平移12个单位可得到函数3sin 2y x =.故选:B . 9.A【分析】化简函数sin 3cos[3()]6y x x π==-,结合三角函数的图象变换,即可求解.【详解】由于函数3sin 3cos(3)cos(3)cos[3()]226y x x x x πππ==+=-=- 故把函数cos3y x =的图象向右平移6π个单位,即可得到cos3sin 36y x x π⎛⎫=-= ⎪⎝⎭的图象.故选:A. 10.B【分析】直接由三角函数图象的平移变换求解即可. 【详解】将cos2y x =的图像向右平移3π个单位长度可得2cos2cos 233y x x ππ⎛⎫⎛⎫=-=-⎪ ⎪⎝⎭⎝⎭. 故选:B. 11.A【分析】利用三角函数图象变换规律求解即可【详解】将3sin y x =向左平移3π长度单位,得到3sin 3y x π⎛⎫=+ ⎪⎝⎭,再把所得的各点的横坐标缩短到原来的12,可得3sin 23y x π⎛⎫=+ ⎪⎝⎭的图象 故选:A 12.D【分析】根据三角函数的图像变换逐项判断即可.【详解】解:对于A ,将3sin π5y x =⎛⎫+ ⎪⎝⎭图像上所有点的横坐标变为原来的2倍(纵坐标不变),得到1π3sin 25y x ⎛⎫=+ ⎪⎝⎭的图像,错误;对于B ,将π3sin 10y x ⎛⎫=+ ⎪⎝⎭图像上所有点的横坐标变为原来的2倍(纵坐标不变),得到1π3sin 210y x ⎛⎫=+ ⎪⎝⎭的图像,错误;对于C ,将3sin 2y x =图像上所有点向左平移π5个单位长度后,得到2π3sin 25y x ⎛⎫=+ ⎪⎝⎭的图像,错误;对于D ,将3sin 2y x =图像上所有点向左平移π10个单位长度后,得到π3sin 25y x ⎛⎫=+ ⎪⎝⎭的图像,正确.故选:D. 13.C【分析】化简2cos 2y x x =+,再根据三角函数图象平移的方法求解即可【详解】12cos 22cos 222cos 223y x x x x x π⎛⎫⎛⎫+==- ⎪ ⎪ ⎪⎝⎭⎝⎭,因为2cos 23y x π⎛⎫=- ⎪⎝⎭向左平移6π个单位长度得到2cos 22cos263ππ⎡⎤⎛⎫=+-= ⎪⎢⎥⎝⎭⎣⎦y x x故选:C14.()2π2sin 23f x x ⎛⎫=- ⎪⎝⎭【分析】由图像可知,函数的最值、最小正周期,可得,A ω的值,代入点5,212π⎛⎫⎪⎝⎭,进而解得ϕ的值,根据函数的图像变换规律,可得答案.【详解】由题图可知()max 2A g x ==,函数()g x 的最小正周期为45πππ3123T ⎛⎫=+= ⎪⎝⎭,所以2π2T ω==,所以()()2sin 2g x x ϕ=+.又5π5π2sin 2126g ϕ⎛⎫⎛⎫=+= ⎪ ⎪⎝⎭⎝⎭,所以5πsin 16ϕ⎛⎫+= ⎪⎝⎭,所以5ππ2π62k ϕ+=+(k ∈Z ),解得π2π3k ϕ=-(k ∈Z ). 因为π2ϕ≤,所以π3ϕ=-,所以()π2sin 23g x x ⎛⎫=- ⎪⎝⎭.将函数()g x 的图象向右平移π6个单位长度后可得到函数()f x 的图象故()ππ2π2sin 22sin 2633f x x x ⎡⎤⎛⎫⎛⎫=--=- ⎪ ⎪⎢⎥⎝⎭⎝⎭⎣⎦.故答案为:()2π2sin 23f x x ⎛⎫=- ⎪⎝⎭15.4π9【分析】根据题意得到圆心角2π9AOB α=∠=,结合弧长公式,即可求解.第 11 页 共 11 页 【详解】由题意,可知圆心角2π9AOB α=∠=,半径2r OA == 所以AOB ∠所对应的弧长为2π4π299l r α==⨯=. 故答案为:4π9.。
第5章 函数的设计和使用

5.3 参数类型
在Python中,函数参数有很多种:可以为普通参数、默认
值参数、关键参数、可变长度参数等等。
Python在定义函数时不需要指定形参的类型,完全由调用
者传递的实参类型以及Python解释器的理解和推断来决定, 类似于重载和泛型。
Python函数定义时也不需要指定函数的类型,这将由函数
5.3.3 可变长度参数
*parameter的用法
>>> def demo(**p): for item in p.items(): print(item) >>> demo(x=1,y=2,z=3) ('y', 2) ('x', 1) ('z', 3)
5.3.3 可变长度参数
几种不同类型的参数可以混合使用,但是不建议这样做
#为列表增加元素
5.2 形参与实参
也就是说,如果传递给函数的是可变序列,并且在函数内
部使用下标或可变序列自身的方法增加、删除元素或修改 元素时,修改后的结果是可以反映到函数之外的,实参也 得到相应的修改。
>>> def modify(d): #修改字典元素值或为字典增加元素 d['age'] = 38 >>> a = {'name':'Dong', 'age':37, 'sex':'Male'} >>> a {'age': 37, 'name': 'Dong', 'sex': 'Male'} >>> modify(a) >>> a {'age': 38, 'name': 'Dong', 'sex': 'Male'}
第5章 单向函数

分大的 n(n n0 )有
Pr
M ' ( f (U n )) f 1 ( f (U n ))
1 p(n)
(一)随机猜测算法 M1
无论输入那个 y f (x),x 0,1,n M1总是输出n次扔硬币结
果r,作为对x的猜测。将M1代入(5.1)。因U n与r统计
独立,故得 Pr M1( f (U n )) f 1( f (U n )) 2n 2n (r, x) 2(n 5.2)
Pr M 2 ( f (U n )) f 1 ( f (U n )) Pr x' f 1 ( f (U n ))
2n (x' , x) f 1( f (x' )) 2n 2n
(5.4)
x
其中 (x', x)由(5.3)给出,(5.4)中第二个
等式是由于 , x' f 1 ( f (x)) x f 1( f (x' )) f 1( f (x' ))
(5.9)
In
n
定理 5.1 任一单向函数 f : 0,1* 0,1* 可表示 为一个单向函数族,反之任一单向函数族
fi : Di 0,1*;i I 也可表示为一单向函数
f : E 0,1,* 其中E为{0,1} 的* 一个无穷子集。
5.2.2 候选单向函数族
例 5.4 RSA函数族 例 5.5 Rabin函数族 例 5.6 Rabin-Blum函数族 例 5.7 离散对数函数族
5.4.2 单向函数的硬核函数
定义 5.10 设 h : 0,1* 0,1*是一个多项式时间可计 算函数,满足h(x) h(y),对一切 y x ,记
l(n) h(1n ) (l n)。h称为f的硬核函数,若对每一多项式 时间概率算法 M ' ,每一正多项式p(n)和一切充分 大的n有
第5章 函数

第5章函数及其应用5.1 函数种类5.1.1 命令函数,例如:getchar(),putchar()等。
5.1.2标准C++库函数,fabs(), pow(), rand(),sin(x), sqrt(), fexp()等,要使用头文件。
5.1.3自定义函数5.2 自定义函数的概念及使用方法例1:求两个数中的最大数#include <iostream.h>int imax (int a, int b){return (a>b ? a:b); }void main(){int a=6,b=9;cout<<"max="<<imax(a,b)<<endl;}例2:求x的n次方#include "iostream.h"main(){ float mpow(float a,int n);cout<<"pow="<<mpow(3.,3)<<endl;}float mpow(float a,int n){int i;float k=1;for(i=1;i<=n;i++)k=k*a;return (k); }5.3 自定义函数的三种形式5.3.1 无参函数,例如main(),getchar()等。
主函数与子函数之间不传输数据例:输出字符四方形************************************************void print(){int i;for(i=1;i<5;i++)cout<<(“************\n”;}5.3.2. 空函数例:null(){ }5.3.3. 有参函数如例1,例2说明:1.C++语言程序由一个主函数和若干个子函数(模块)组成。
1.子函数也有类型和函数值。
2.子函数程序体可以作为单独的文件存放,如果单独存放,应在主函数中作为头文件进行说明。
第5章 函数1

第5章 函数
(2) A到B的所有不同的满射有6个, 分别为 f1={(a, g1), (b, g1 ), (c, g2)} f2={(a, g1 ), (b, g2), (c, g1 )} f3={(a, g1 ), (b, g2), (c, g2)} f4={(a, g2), (b, g1 ), (c, g2)} f5={(a, g1 ), (b, g2), (c, g1 )} f6={(a, g1 ), (b, g2), (c, g2)}
p: A→A是双射, 则称p为集合A上的n阶置换 记为 阶置换, 阶置换
a1 p= p( a1 )
a2 L an p ( a2 ) L p ( an )
第5章 函数
例2 若A={1, 2, 3}, 试写出A上的全部置换。 解 A上的全部置换有3!=6个,分别为
1 p1 = 1 1 p3 = 2
第5章 函数
定义 5.1 ― 2 设有函数f: A→B, g: C→D, 若 有A=C、 B=D且对所有的x∈A, 有f(x)=g(x), 则称 函数f和g相等, 记为f=g。 定义 5.1 ― 3 集合A到集合B的所有函数的集合记 为BA, 即 BA={f|f: A→B}
第5章 函数
定理 5.1 ― 1 当A和B是有限集合时,有 |BA|=|B||A| 证明 设|A|=m, |B|=n(m, n∈N); 又设A={a1, a2, …, am}。 因为 Df=A,所以 f={(a1, f(a1)), (a2, f(a2)), …, (am , f(am))}。 , 而每个f(ai)(i∈Nm)都有n种可能,所以A到B的不 同函数共有 {n·n·…·n } =n m个 M个 即 |BA|=|B||A|
第5章 函数
第5章 函数

oop技术:封装性、继承性、多态性。
多态性 :一个名字,多个人口”,或称“同一接口, 多种方法 。
例5.6 重载绝对值函数
int abs(int x)
{ { { return x>0?x:-x;} return x>0?x:-x;} return x>0?x:-x;} double abs(double x) 1ong abs(1ong x) void main()
形参带值后,即可进行相应的数据处理
如果有结果值,通过return语句带回到主函数
5.2 函数的调用
函数要先定义,后调用。
调用函数时要考虑到函数本身的参数;
调用标准库函数时,要包含相应的头文件 输入/输出函数 iostream.h 字符串函数 string.h 常用数学函数 math.h 调用自定义函数时,要定义相应的实参,并给 这些实参赋值。
main()
{ int a = 1,b = 2; cout << "Before exchange:a= " << a << ",b= " << b << endl;
swap(a,b);
cout << "After exchange:a= " << a << ",b= " << b << endl; }
例5.8 定义一个求两数最大值的模板函数。
template <class T> T Max(T a, T b) { return a>b?a:b; }
void main()
第5章 函数

5.3函数的调用
在一个源程序中,如果调用的是标准函数, 则需在调用之前用#include命令将对应的头文 件包含进来;如果调用的是用户自定义函数, 则需将被调用的函数放在主调函数之前,否 则就需要在主调函数的声明部分加入被调用 函数的原型声明。
5.3.1 函数的声明
1. 函数声明的一般形式有两种: (1)函数类型 函数名(参数类型1, 参数类型 2, ……); (2) 函数类型 函数名(参数类型1 参数名1, 参 数类型2 参数名2, ……); 两种形式是的等价的。如: float add(float,float); 等效于: float add(float x,float y);
3. 从主调函数和被调函数之间数据传送的角度看,又 可分为: (1) 无参函数 函数定义、函数说明及函数调用中均不带参数。主 调函数和被调函数之间不进行参数传送。如上述程 序中的pline()函数、word()函数只是输出字符。 (2) 有参函数(带参函数) 在函数定义和函数说明时都带有的参数,称为形式 参数(简称为形参)。函数调用时所给出的参数, 称为实际参数(简称为实参)。进行函数调用时, 主调函数将把实参的值传送给形参,供被调函数使 用。
运行结果如图所示。
5.3.4 函数的嵌套调用
一个函数内不能定义另一个函数。但在函数调用时,可以嵌 套调用,即在调用一个函数的过程中,又调用另一个函数。
【例5.7】用调用函数求s=(12)!+(22)!+(32)!的 值,并在主函数中输出结果。 本题可编写两个函数,一个是用来计算平方 值的函数f1,另一个是用来计算阶乘值的函 数f2。主调函数先调f1计算出平方值,再在f1 中以平方值为实参调用 f2,计算其阶乘值, 然后返回f1,再返回主调函数,在循环过程 中计算累加和。
C语言程序设计-第5章--函数

实参可以是常量、变量或表达式,但要求 它们必须要有确定的值,在调用时将实参 的值赋给形参。另外,实参和形参的类型 应相同或兼容。
— 31 —
5.2 函数的参数传递和返回值
➢ 5.2.2 函数的返回值
一般情况下,主调函数调用完被调函数后,都希望能够得到一 个确定的值,这就是函数的返回值。在C语言中,函数返回值 是通过return语句来实现的。return语句的一般形式有3种:
/*函数声明*/
/*调用逆序函数,将a的逆序值赋给b*/ /*调用逆序函数,将b的逆序值赋给c */
— 23 —
5.2 函数的参数传递和返回值
➢ 5.2.1 函数的形参与实参
{
int y=0,sign=1;
/*定义sign表示x的符号,定义变量y代表逆序数据*/
if(x<0)
/*当x小于0时取符号及取反*/
— 18 —
5.1 函数的定义和调用
➢ 5.1.2 函数的调用
另外,按函数在语句中的作用来分,可以有以下3种函数调用方式:
函数表达式
函数语句
函数作为实参
函数作为表达式中的一项出 现,以函数返回值参与表达 式的运算。
函数调用的一般形式加上分 号即构成函数语句。
函数作为另一个函数调用的 实际参数出现,即把该函数 的返回值作为实参进行传送。
#include<stdio.h> int main() {
int x=0,y; y=trans(x); printf("y=%d\n",y); printf("x=%d\n",x); return 0; } trans(int a) { a++; printf("a=%d\n", a); return a; }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.在函数的引用调用中,函数的实参和形参分别应是(C)。
A.变量值和变量B.地址值和指针
C.变量名和引用D.地址值和引用
9.在函数的传址调用中,函数的实参和形参分别应是(B)。
A.变量值和变量B.地址值和指针
C.变量名和引用D.地址值和引用
10.说明一个内联函数时,应加关键字是(A)。
print('a');
print("break");
}
void print(int i)
{
cout<<i<<endl;
}
void print(char i)
{
cout<<i<<endl;
}
void print(char *i)
{
cout<<i<<endl;
}
答:800
a
break
5.5编程题
1.从键盘上输入8个浮点数,编程求出其和以及平均值。要求写出求和以及平均值的函数。
A.voidB.int
C.无D.任意
2.下列关于设置函数默认的参数值的描述中,错误的是(C)。
A.可对函数的部分参数或全部参数设置默认值
B.在有函数说明时,默认值应设置在函数说明时,而不是定义时
C.设置函数默认参数值时,只可用常量不可用含有变量的表达式
D.设置函数参数默认值应从右向左设置
3.下列关于被调用函数中return语句的描述中,错误的是(D)。
D.接收函数返回值的变量或对象的类型
5.下列设置函数参数默认值的说明语句中,错误的是(C)。
A.int fun(int x , int y=10);B.int fun(int x=5, int =10);
C.int fun(int x=5, int y);D.int fun(int x , int y=a+b);
A.inlineB.static
C.voidD.extern
5.3填空题
1.如果将调用一个函数的过程分为3个步骤,第1步是转去执行被调用函数,第2步是执行被调用函数的语句,第3步是返回操作。
2.函数的存储类分两种,它们分别是外部函数和内部函数,其中内部函数的存储类说明不可省略,该说明符是static。
sum3=29
7.
#include <iostream.h>
void swap(int &,int &);
void main()
{
int a(8),b(5);
cout<<"a="<<a<<','<<"b="<<b<<endl;
swap(a,b);
cout<<"a="<<a<<','<<"b="<<b<<endl;
答:编程如下:
#include <iostream.h>
double s,sum(double b[],int n),average(int n);
void main()
{
double a[8];
cout<<"输入8个double型数;";
for(int i=0;i<8;i++)
cin>>a[i];
fun(a,b,&c);
cout<<a<<','<<b<<','<<c<<endl;
}
void fun(int i,int j,int *k)
{
j+=i;
*k=j-i;
}
答:6,6,6
6.
#include <iostream.h>
int add(int,int =5);
void main()
{
int a(8);
3.使用关键字inline说明的函数称为内联函数,具有相同函数名但具有不同实现的函数称为重载函数。
4.在调用一个函数过程中可以直接或间接地调用该函数,则该函数称为被调用函数。这种调用称为嵌套调用。
5.在引用调用中,函数实参用变量名,形参用引用名。
5.4分析下列程序的输出结果
1.
#include <iostream.h>
{
while(*s1&&*s2&&*s1++= =*s2++)
;
s1--;
s2--;
return *s1-*s2;
}
答:2
5.
#include <iostream.h>
void fun(int,int,int *);
void main()
{
int a,b,c;
fun(5,6,&a);
fun(7,a,&b);
s=sum(a,8);
double ave=average(8);
cout<<"SUM="<<s<<','<<"AVERAGE="<<ave<<endl;
}
double sum(double b[],int n)
{
double sum=0;
for(int i=0;i<n;i++)
sum+=b[i];
return sum;
}
double average(int n)
{
return s/n;
}
2.从键盘上输入8个整型数,编辑求出它们中间最大的数和最小的数。要求写出求最大数和最小数的函数。
答:编程如下:
#include <iostream.h>
int max(double b[],int n),min(double b[],int n);
答:编程如下:
#include <iostream.h>
void convert(int);
void main()
{
int num;
cout<<"请输入一个整型数: ";
cin>>num;
cout<<"输出的字符串是";
convert(num);
cout<<endl;
}
void convert(int n)
第5章 函数
练习题5
5.1判断题
√1.函数的调用可以嵌套,函数的定义不能嵌套。
×2.C++语言中,函数可以用原型说明,也可用简单说明。
×3.定义函数时,存储类可以缺省,数据类型也可以省略。
×4.函数可以没有参数,但是不能没有返回值。
×5.函数定义时必须给出函数体,函数体内至少有一条语句。
√6.没有参数的两个函数是不能重载的。
{
int a;
if((a=n/10)!=0)
convert(a);
char c=n%10+'0';
cout<<c;
}
5.编写一个程序验证:任何一个充分大的偶数(≥6)总可以表示成两个素数之和。要求编写一个求素数的函数prine(),它有一个int型参数,当参数值为素数时返回1,否则返回0。
答:编程如下:
答:编程如下:
#include <iostream.h>
int sum_day(int,int),leap(int);
void main()
{
int year,month,day;
cout<<"请输入一个日期(yyyy mm dd): ";
cin>>year>>month>>day;
int days=sum_day(month,day);
void main()
{
int a[8];
cout<<"输入8个int型数;";
for(int i=0;i<8;i++)
cin>>a[i];
cout<<"最大数为"<<max(a,8)<<','<<"最小数为"<<min(a,8)<<endl;
}
int max(double b[],int n)
{
int max=b[0];
#include <iostream.h>
int prime(int);
void main()
{
int n;
cout<<"请输入一个大于或等于6的偶数: ";
cin>>n;
int i,j;
cout<<"两个素数的所有可能有:\n";
for(i=2;i<=n/2;i++)
{
j=n-i;
if(prime(i)&&prime(j))
4.
#include <iostream.h>
int fun(char *,char *);