目录
1. 分段函数
【问题描述】有一个定义在自然数上的函数 f(x) 定义如下:
若 x<5 , 则 f(x) = x;
若 5<=x<15, 则 f(x) = x+6;
若 x>=15, 则 f(x) = x-6。
试编写该函数,输入x值,返回相应的f(x)值。
【输入形式】
一行一个数表示自然数x。
【输出形式】
一行表示计算结果f(x),若输入的数据不合法(如:负整数),输出“illegal input”。(不带引号)
【样例输入】
4
【样例输出】
4
示例代码:
#include <iostream>
using namespace std;
int function(int x)
{
if(x<5) return x;
else if(x<15) return x+6;
else return x-6;
}
int main()
{
int num;
cin>>num;
if (num<=0) cout<<"illegal input"<<endl;
else cout<<function(num)<<endl;
return 0;
}
2. 程序改错:字符输出
改正程序,使程序运行正确。
下面程序的功能是显示由用户输入的字符。
实例输出:
Enter a character: g
You just entered the character : g
#include <iostream> using namespace std; void f4 ( int c ); int main () { char myChar; cout << "Enter a character:"; cin >> myChar; f4 ( myChar ) return 0; } void f4 ( char c ) { cout <<"\nYou just entered the character : " << myChar << endl; return myChar; }
示例代码:
#include <iostream>
using namespace std;
char f4 ( char c );
int main ()
{
char myChar;
cout << "Enter a character:";
cin >> myChar;
f4 ( myChar );
return 0;
}
char f4 ( char c )
{
cout <<"\nYou just entered the character : " << c << endl;
return c;
}
3. 递归求斐波那契数列的第n项。
【题目描述】
利用递归求斐波那契数列的第n项。
斐波那契数列规律: 0,1,1,2,3,5,8,13……
【输入格式】
一行一个整数 n
【输出格式】
一行一个整数表示斐波那契额数列的第 n 项。
【输入样例】
7
【输出样例】
8
示例代码:
#include <iostream>
using namespace std;
int Fibonacci(int n)
{
if (n==1) return 0;
else if (n==2) return 1;
else return Fibonacci(n-2)+Fibonacci(n-1);
}
int main()
{
int x;
cin>>x;
cout<<Fibonacci(x)<<endl;
return 0;
}
4. 将十进制转换二进制
【题目描述】
输入1个正整数n(n>0),将其转换为二进制后输出。
【输入格式】
一行一个正整数 n
【输出格式】
一行一个二进制数表示结果
【样例输入】
15
【样例输出】
1111
示例代码:
#include <iostream>
using namespace std;
int exchange (int n)
{
int num[10],t=0;
do
{
num[t]=n%2;
n/=2;
t++;
}while (n);//二进制拆分
for (int j=t-1;j>=0;j--)
{
cout<<num[j];//输出二进制数
}
return 0;
}
int main()
{
int x;
cin>>x;
exchange(x);
return 0;
}
5. 数字反射
【题目描述】
编写一个函数,接收一个整数值,返回这个数中数字逆序后的结果值。
【输入格式】
一行一个整数
【输出格式】
一行一个整数表示结果
【输入样例】
7631
【输出样例】
1367
示例代码:
#include <iostream>
using namespace std;
int change(int n)
{
int num[100];
int t=0;
do
{
num[t]=n%10;
n/=10;
t++;
}while(n);//拆分各位数
for (int i=0;i<=t-1;i++)
{
cout<<num[i];//逆序输出
}
return 0;
}
int main()
{
int x;
cin>>x;
change(x);
return 0;
}
6. 求1到n的立方和
【题目描述】
编写程序求1*1*1 + 2*2*2 + 3*3*3 + ... + n*n*n的结果,要求用递归函数来完成。
说明:该公式的结果可保存在int型变量中,无需考虑超出int保存范围的情况。
【输入格式】
一行一个整数 n
【输出格式】
一行一个整数表示答案
【输入样例】
3
【输出样例】
36
示例代码:
#include <iostream>
using namespace std;
int third(int n)//定义一个求立方和的函数
{
if (n==1) return 1;
else return third(n-1)+n*n*n;//递归调用
}
int main()
{
int x;
cin>>x;
cout<<third(x)<<endl;
return 0;
}
7. 走格子(递归)
【题目描述】
现有一个 m*n 的网格,从最左上角出发,每次只能向右或者向下移动一格,问有多少种不同的方法可以到达最右下角的格子?
【输入格式】
一行两个整数表示 m,n
【输出格式】
一行一个整数表示答案
【输入样例】
2 2
【输出样例】
2
示例代码:
#include <iostream>
using namespace std;
//这是一个非常有趣的问题,假设格子的坐标为(a,b);
//假设从其他地方走到格子的方案数为count(a,b),则有
//count(a,b)=count(a-1,b)+count(a,b-1)->这是递归方程
int count(int x,int y)//定义一个函数解决格子问题
{
if ((x==0)||(y==0)) return 0;//排除不符合实际的情况
else if ((x==1)&&(y==1)) return 0;//初始坐标方案数为0
else if (((x==1)&&(y==2))||((x==2)&&(y==1))) return 1;//走到(1,2)或(2,1)的方案数为1
else return count(x-1,y)+count(x,y-1);
}
int main()
{
int m,n;
cin>>m>>n;
cout<<count(m,n)<<endl;
return 0;
}
8. 汉诺塔问题
【题目描述】
有三座塔A,B,C,开始时A上有n个盘子,盘子大小不等,大在下小在上。要将盘子从A座移到C座,每次只能移一个,并且在移动的过程中始终保持大在下小在上。
输入盘子的数量n,输出移动的步骤。
(提示:利用递归完成)
【输入格式】
一行一个整数 n
【输出格式】
输出若干行表示每次移动的步骤
【样例输入】
2
【样例输出】
A to B
A to C
B to C
示例代码:
#include <iostream>
using namespace std;
void move(int n,char A,char B,char C)
{
if (n==1)
cout<<A<<" to "<<C<<endl;
else
{
move(n-1,A,C,B);
cout<<A<<" to "<<C<<endl;
move(n-1,B,A,C);
}
}
int main()
{
int m;
cin>>m;
move(m,'A','B','C');
return 0;
}
9. 验证歌德巴赫猜想
【题目描述】
哥德巴赫猜想:一个大于2的偶数是两个素数的和。
编写程序验证哥德巴赫猜想,输入一个大于2但是小于等于500的偶数,如果它能表示成为2个素数的和,则输出所有的可能情况(输出格式为 大素数+小素数=偶数).
【输入格式】
一行一个符合数据范围的偶数
【输出格式】
若干行表示所有表示的可能情况(注意空格分隔)
【输入样例】
24
【输出样例】
19 + 5 =24
17 + 7 =24
13 + 11 =24
示例代码:
#include <iostream>
using namespace std;
int if_prime(int n)//定义一个判断素数的函数
{
int flag=1;
for (int i=2;i*i<=n;i++)
{
if (n%i==0)
{
flag=0;
}
}
return flag;
}
int main()
{
int m;
cin>>m;
for (int i=2;i*2<=m;i++)//循环次数可以缩短一半,只需要判断一边就行
{
if ((if_prime(i))&&(if_prime(m-i)))//如果满足哥德巴赫猜想
{
cout<<(m-i)<<" + "<<i<<" ="<<m<<endl;
}
}
return 0;
}
标签:输出,return,上机,int,样例,北科,格式,程序设计,输入
From: https://blog.csdn.net/m0_66717194/article/details/143757713