第四章 函数
1.不同进制间的转换
【问题描述】设计一个函数toOcr(int n),实现把输入的一个十进制数转换为八进制数
【输入形式】 十进制数。
【输出形式】 与之对应的八进制数。
【样例输入】
126
【样例输出】
176
【样例说明】直接输出数据,不要有其他输出语句,如需测试请使用cerr。
#include<iostream>
using namespace std;
int main()
{
int toOcr(int n);
int i;
cin>>i;
toOcr(i);
return 0;
}
int toOcr(int n)
{
if(n>=8)toOcr(n/8);
cout<<n%8;
}
2.找出亲密对数
【问题描述】求数n之内的亲密对数。所谓“亲密对数”,即A的所有因子(包含1但不包含其本身)之和等于B,而B的所有因子之和等于A。
【输入形式】某个数字n。
【输出形式】此数字n之内的亲密对数。
【样例输入】
400
【样例输出】
220 284
【样例说明】输出结果每行输出一对亲密数,剔除重复的,按每行第一个数的大小排序。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin>>n;
int A,B;
int yinziSum(int num);
for(A=1;A<n;A++)
{
B=yinziSum(A);
if(yinziSum(B)==A&&A<B)cout<<A<<' '<<B<<endl;
}
return 0;
}
int yinziSum(int num)
{
int i,sum=0,j;
i=sqrt(num);
for(j=1;j<=i;j++)
{
if(num%j==0)sum+=(j+num/j);
else continue;
}
return (sum-num);
}
3.在给定的数中从右边查找第K位数字
【问题描述】设计一个函数int digit(long n,int k),它返回整数n从右边开始第k个数字的值,若不存在第k个数字则返回-1。
【输入形式】 输入两个实参
【输出形式】 对应位的数值
【样例输入】
58693 3
【样例输出】
6
【样例说明】无
#include<iostream>
using namespace std;
int main()
{
long n;
int k;
cin>>n>>k;
int digit(long n,int k);
cout<<digit(n,k);
return 0;
}
int digit(long n,int k)
{
int i,num;
for(i=1;i<=k;i++)
{
if(!n)return -1;
num=n%10;
n=n/10;
}
return num;
}