函数16道题含问题详解.docx
- 文档编号:5157230
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:11
- 大小:16.93KB
函数16道题含问题详解.docx
《函数16道题含问题详解.docx》由会员分享,可在线阅读,更多相关《函数16道题含问题详解.docx(11页珍藏版)》请在冰豆网上搜索。
函数16道题含问题详解
函数01:
素数
输入一组整数,其中第一个整数为个数n,后续为n个整数,输出其中素数的个数。
要求将判断一个整数是否用函数实现。
输入3579输出2
测试:
输入51011121314输出2
#include
usingnamespacestd;
intf(inta)
{
inti;
for(i=2;i<=a;i++)
if(a%i==0)
break;
if(a==i)
return1;
else
return0;
}
intmain()
{
intd=0,n,m,i;
cin>>n;
for(i=1;i<=n;i++)
{cin>>m;
d+=f(m);
}
cout< return0; } 函数02: 因数个数之和 输入一组整数,计算这些整数的因数个数之和。 其中第一个整数为个数n,后续为n个整数。 要求计算一个整数的因数个数用函数实现。 如输入36810,其中6的因数个数为4,8的因数个数为4,10的因数个数为10,所以计算结果为12。 输入36810输出12 测试: 输入51011121314输出18 #include usingnamespacestd; intf(inta) { ints=0,i; cin>>a; for(i=1;i<=a;i++) if(a%i==0) s++; returns; } intmain() { intd=0,n,a,i; cin>>n; for(i=1;i<=n;i++) d+=f(a); cout< return0; } 函数03: Fibonacci数列 输入2个正整数m和n(1<=m,n<=10000),输出m和n之间所有的Fibonacci数。 要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。 说明: Fibonacci序列为1123581321...... 输入521 输出813 #include usingnamespacestd; intfib(inta) {intf0=1,f1=1,f,i; if(a==1||a==2) return1; else for(i=1;i {f=f0+f1; f0=f1; f1=f;} returnf; } intmain() {intm,n,i; cin>>m>>n; for(i=1;i<=10000;i++) if(fib(i)>m&&fib(i) cout< return0; } 函数04: 最大值 从键盘输入n对整数,求这些对整数间所有奇数之和的最大值。 其中计算两个整数m、n(m 输入格式: 第一个整数为n,后续为n对整数。 输入3102017314045 输出192 #include usingnamespacestd; intf(inta,intb) {ints=0,i; for(i=a;i<=b;i++) {if(i%2==1) s+=i; } returns; } intmain() {intn,i,a,b,x=0; cin>>n; for(i=1;i<=n;i++) {cin>>a>>b; if(x x=f(a,b); } cout< return0; } 函数05: 阶乘 编写一个递归函数fac,该函数计算n的阶乘,如5的阶乘为5x4x3x2x1,0的阶乘为1。 main函数中输入n个整数,计算这些整数的阶乘平均值。 第一个整数位个数n,后续为n个整数。 输入3345 输出50 #include usingnamespacestd; intfac(intn) { if(n==0||n==1) return1; returnn*fac(n-1); } intmain() { intn,i,m; doubles=0; cin>>n; for(i=1;i<=n;i++) { cin>>m; fac(m); s+=fac(m); } cout< return0; } 函数06: 小牛问题 编程求解问题。 若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有多少头母牛。 (用递归函数方法求解) 输入7输出6 #include usingnamespacestd; intf(intn) { if(n<4) return1; else returnf(n-1)+f(n-3); } intmain() { intn; cin>>n; cout< return0; } 函数07: 最大公约数 输入n对整数,计算这n对整数最大公约数之和。 其中计算一对整数的最大公约数用函数实现。 输入格式: 第一个为对数n,后续为n对整数。 输入3141820302535输出17 #include usingnamespacestd; intf(inta,intb) { inti; for(i=a;i>=1;i--) { if(a%i==0&&b%i==0) break; } returni; } intmain() { inta,b,n,i,s=0; cin>>n; for(i=1;i<=n;i++) { cin>>a>>b; s+=f(a,b); } cout< return0; } 函数08: 幂函数 设计一个递归函数,求x的n次幂,其中n为非负整数。 在main函数中输入x和一个整数n,输出x的n次幂。 输入3.54输出150.062 #include usingnamespacestd; doublef(doublex,intn) { if(n==0) return1; else returnx*f(x,n-1); } intmain() { doublex; intn; cin>>x>>n; cout< return0; } 函数09: 幂函数 定义运算n^k表示n的k次幂,从键盘输入整数n和k,计算1^k+2^k+……+n^k,其中求n^k用函数实现。 输入35 输出276 #include usingnamespacestd; intf(intx,intn) { if(n==0) return1; else returnx*f(x,n-1); } intmain() { intn,k,i,s=0; cin>>n>>k; for(i=1;i<=n;i++) { s+=f(i,k); } cout< return0; } 函数10: 素数求和 输入两个正整数min、max,计算[min,max]之间所有的素数之和。 将判断一个整数是否为素数用函数实现。 输入210 输出17 函数11: 最小公倍数之和 输入n对整数,计算这n对整数最小公倍数之和。 其中计算一对整数的最小公倍数用函数实现。 输入格式: 第一个为对数n,后续为n对整数。 输入23548输出23 函数12: 逆序求和 从键盘输入一组整数(以0结束),计算这组整数逆序后之和。 其中将一个整数逆序用函数实现,整数123逆序为321、整数-345逆序为-543。 输入234894-947360 输出1518 函数13: 数位计算 输入一组正整数(以0结束),输出其中数位之和为奇数的整数。 其中求一个数的数位之和用函数实现。 输入122245880 输出1245 函数14: 数值计算 输入2个正整数a和n,求a+aa+aaa+aa…a(n个a)之和。 例如,输入2和3,则计算2+22+222,输出246。 将求i个a组成的数用函数实现,即函数intf(inta,inti)的返回值为i个a的值,例如f(3,2)值为33。 输入23 输出246 函数15: 累加和 编写一个函数f(n)=1+2+...+n。 main函数从键盘输入m、n,利用该函数计算并输出f(m)+f(n)。 输入105 输出70 函数16: 利用函数计算平均值 编写一个函数f(x),若x>0函数返回值为1,若x<0函数返回值为-1,若x=0函数返回值为0,利用该函数实现计算输入的n个整数中正整数的平均值。 输入格式中第一个为整数个数n,后续为n个整数。 输入525-53-3 输出3.33333 函数17: 数根问题递归求解 输入n个正整数(输入格式中第一个为整数个数n,后续为n个整数),输出各个数的数根。 要求计算一个数的数根部分利用递归函数实现。 数根的定义: 对于一个正整数n,我们将它的各个位相加得到一个新的数字,如果这个数字是一位数,我们称之为n的数根,否则重复处理直到它成为一个一位数,这个一位数也算是n的数根。 例如: 考虑24,2+4=6,6就是24的数根。 考虑39,3+9=12,1+2=3,3就是39的数根。 样例输入5234249863212345样例输出51826 函数18: 奇数判断 题目描述 输入若干个正整数(输入时以0结束),输出其中所有的奇数及奇数个数。 要求判断一个数num的奇偶写成函数boolisodd(num),奇数返回true,否则返回false。 样例输入 2342353523019110 样例输出 23235319115 函数19: 利用一个自定义函数解决完数和素数问题 题目描述 编写一个函数求一个数的所有因子之和。 主函数中输入两个整数m、n,利用该函数依次实现下列问题: 1)找出n以内所有完数;2)找出m~n间所有素数提示: 完数定义为除自身外的所有因子之和等于它本身的数;素数定义为除了能被1和自身整数外,不能被其它数整数。 注意: 完数和素数分2行显示。 样例输入 50100 样例输出 628 53596167717379838997 函数20: fibonacci数列倒数求和 题目描述 计算1+1+1/2+1/3+1/5+1/8+…,当最后一项小于e(用户输入)时结束。 提示各项的分母为fibonacci数列: 1,1,2,3,5,8,13,。 。 。 ,要求: 求fibonacci数列第n项写成递归函数。 样例输入 0.01 样例输出 3.3417
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 16 道题含 问题 详解