1.在给定的数中从右边查找第K位数字
【问题描述】设计一个函数int digit(long n,int k),它返回整数n从右边开始第k个数字的值,若不存在第k个数字则返回-1。
【输入形式】输入两个实参
【输出形式】对应位的数值
【样例输入】
【样例输出】
【样例说明】
【评分标准】正确输出即可通过,请上传源文件,名称4-3.cpp。
#include<iostream>
#include<cmath>
using namespace std;
int digit(long n,int k)
{
int a;
double c;
c=pow(10,(-1)*(k-1));//c是代表10^n次方
n*=c;
if(n>=1)
a=n%10;
else//当数据为零点几的时候用这个语句处理
a=-1;
cout<<a;
return 0;
}
int main()
{
long n;
int k;
cin>>n>>k;
digit(n,k);
return 0;
}
2.不同进制间的转换
【问题描述】设计一个函数toOcr(int n),实现把输入的一个十进制数转换为八进制数
【输入形式】十进制数。
【输出形式】与之对应的八进制数。
【样例输入】126
【样例输出】176
【样例说明】直接输出数据,不要有其他输出语句,如需测试请使用cerr。
【评分标准】 给出一个十进制数,正确输出八进制对应的数,文件名为 4-9.cpp。
#include<iostream>//将十进制数转换为八进制数
using namespace std;
int toOcr(int n)
{
int a;
if(n==0)
{
return 0;
}
else
{
a=n%8; //当n=8和16时要怎么循环?
n/=8;
toOcr(n);//递归
cout<<a;//如何将一组数倒着输出来?
//提问啊啊啊~ a是如何被倒着输出来的?循环是如何进行的?
}
return 0;
}
int main()
{
int n;
cin>>n;
toOcr(n);
return 0;
}
3.找出亲密对数
【问题描述】求数n之内的亲密对数。所谓“亲密对数”,即A的所有因子(包含1但不包含其本身)之和等于B,而B的所有因子之和等于A。
【输入形式】某个数字n。
【输出形式】此数字n之内的亲密对数。
【样例输入】 400
【样例输出】220 284
【样例说明】输出结果每行输出一对亲密数,剔除重复的,按每行第一个数的大小排序。
【评分标准】 根据输入的N值,正确列举出N值内的亲密对数,提交文件名为4-12.cpp。
#include<iostream>
#include<cmath>
using namespace std;
int qinmiduishu(int a)//求因子和
{
int q,r,m=0;
q=a/2;
for(r=1;r<=q;r++)
{
if(a%r==0)
{
m+=r;
}
}
return m;
}
int main()
{
int sum,n,a;
cin>>n;
for(a=2;a<n;a++)
{
sum=qinmiduishu(a);
if(a==qinmiduishu(sum)&&a<sum)//一定要搞清楚了之后再处理条件
//为什么不考虑a>=sum的情况?
{
cout<<a<<" "<<sum<<endl;
}
}
return 0;
}
网友评论