美文网首页
第四章 函数

第四章 函数

作者: Redcarp | 来源:发表于2019-01-19 21:26 被阅读0次

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;
}

相关文章

网友评论

      本文标题:第四章 函数

      本文链接:https://www.haomeiwen.com/subject/icizdqtx.html