C++函数练习题
在刚开始学习c++的时候刷了很多基础题,这些基础题⽐较适合初学C++的码友,所以在学完就⽴即进⾏了整理,⼀是为了让初学C++的码友有所参考,⼆也是为了复习⼀下所学过知识。
但因为当时在整理时,时间有点紧促,可能会出现⼀些⼩错误,于是利⽤五⼀假期对之前的⽂章进⾏检查,修改了⼀些⼩错误,可能有些错误我还没有发现,欢迎码友们对其指正。
以下20道题均为函数基础练习题,涉及普通函数,递归函数等内容。适合初学c++的码友进⾏函数的练习,和对c++基本语句进⾏熟悉。
1.素数
输⼊⼀组整数,其中第⼀个整数为个数n,后续为n个整数,输出其中素数的个数。要求将判断⼀个整数是否为素数⽤函数实现。Sample Input
3 5 7 9
Sample Output
2
#include<iostream>
using namespace std;
c语言用递归函数求n的阶乘bool f(int n)
{
int i;
for(i =2; i < n; i++)
{
if(n % i ==0)
break;
}
if(i == n)
return true;
else
return false;
}
int main()
{
int n, i, s =0, k;
cin >> n;
for(i =0; i < n; i++)
{
cin >> k;
if(f(k))
s++;
}
cout << s << endl;
return0;
}
2.因数个数之和
输⼊⼀组整数,计算这些整数的因数个数之和。其中第⼀个整数为个数n,后续为n个整数。要求计算⼀个整数的因数个数⽤函数实现。Sample Input
3 6 8 5
Sample Output
10
#include<iostream>
using namespace std;
int f(int n)
{
int i, s =0;
for(i =1; i <= n; i++)
{
if(n % i ==0)
s++;
}
return s;
}
int main()
{
int n, i, s =0, k;
cin >> n;
for(i =0; i < n; i++)
{
cin >> k;
s +=f(k);
}
cout << s << endl;
return0;
}
3.Fibonacci数列
输⼊2 个正整数mini和maxi(0<=mini,maxi<=1000),输出斐波那契数列(Fibonacci sequence)的值介于mini 和maxi之间(不含边界)所有的数。要求定义并调⽤函数fib(n),它的功能是返回该数列的第n项(n>=0)。
(说明:Fibonacci 序列为0 1 1 2 3 5 8 13 21 …)
Sample Input
5 21
Sample Output
8 13
#include<iostream>
using namespace std;
int f(int n)
{
if(n ==0)
return0;
else if(n ==1|| n ==2)
return1;
else
return f(n -1)+f(n -2);
}
int main()
{
int mini, max, i;
cin >> mini >> max;
for(i =0; i <= max; i++)
{
if(f(i)>= max)
break;
else if(f(i)> mini)
cout <<f(i)<<" ";
}
return0;
}
4.最⼤值
从键盘输⼊n对整数,求这些对整数间所有奇数之和的最⼤值。其中第⼀个整数为n,后续为n对整数。 要求计算⼀对整数min、max(含min和max)之间所有奇数的和⽤函数实现,若min>max,函数返回值为0。
Sample Input
3 10 20 17 31 40 45
Sample Output
192
#include<iostream>
using namespace std;
int f(int min,int max)
{
int i =0;
int s =0;
if(max < min)
return0;
else
{
for(i = min; i <= max; i++)
{
if(i %2==1)
s += i;
}
return s;
}
}
int main()
{
int i, j, m, n, max =0;
cin >> j;
for(i =0; i < j; i++)
{
cin >> m >> n;
if(f(m, n)> max)
max =f(m, n);
}
cout << max << endl;
return0;
}
5.阶乘
编写⼀个递归函数fac,该函数计算n的阶乘,0的阶乘为1。 main函数中输⼊n个整数,计算这些整数的阶乘平均值。
Sample Input
3 3
4 5
Sample Output
50
if(n ==0|| n ==1)
return1;
return n *fac(n -1);
}
int main()
{
int n, k, i;
double s =0;
cin >> n;
for(i =0; i < n; i++)
{
cin >> k;
s +=fac(k);
}
cout << s / n << endl;
return0;
}
6.⼩⽜问题
若⼀头⼩母⽜,从出⽣起第四个年头开始每年⽣⼀头母⽜,按此规律,第n年时有多少头母⽜。(⽤递归函数⽅法求解)
Sample Input
7
Sample Output
6
#include<iostream>
using namespace std;
int f(int n)
{
if(n <4)
return1;
return f(n -1)+f(n -3);//若年数⼤于等于4,则今年的数量等于去年的加上三年前的(因为第四年⽣1头)
}
int main()
{
int n;
cin >> n;
cout <<f(n)<< endl;
return0;
}
7.最⼤公约数
输⼊n对整数,计算这n对整数最⼤公约数之和。其中第⼀个为对数n,后续为n对整数。要求计算⼀对整数的最⼤公约数⽤函数实现。Sample Input
3 1
4 18 20 30 2
5 35
Sample Output
17
int i;
int min = a;
if(b < min)
min = b;
for(i = min; i >=0; i--)
{
if(a % i ==0&& b % i ==0)
break;
}
return i;
}
int main()
{
int a, b, n, s =0;
cin >> n;
for(int i =0; i < n; i++)
{
cin >> a >> b;
s +=f(a, b);
}
cout << s << endl;
return0;
}
8.幂函数
设计⼀个递归函数,求x的n次幂,其中n为⾮负整数。 在main函数中输⼊x和⼀个整数n,输出x的n次幂。Sample Input
3.5 4
Sample Output
150.063
#include<iostream>
using namespace std;
double f(double x,int n)
{
if(n ==0)
return1;
return x *f(x, n -1);
}
int main()
{
double x;
int n;
cin >> x >> n;
cout <<f(x, n)<< endl;
return0;
}
9.幂函数
定义运算n^k 表⽰n的k次幂,从键盘输⼊整数n和k,计算1^k +2^k +……+n^ k,其中求n^k⽤函数实现。Sample Input
3 5
Sample Output
276

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。