自定义一个函数,求一个正整数最高的若干位。

这篇博客介绍如何编写一个名为`left`的函数,该函数接收一个正整数`num`、其实际位数`maxd`和需要获取的高位数`d`作为参数,返回`num`的最高`d`位。当`d`超出有效范围时,函数返回-1。示例中展示了如何利用循环结构实现这一功能,并给出了测试用例来验证函数的正确性。
摘要由CSDN通过智能技术生成

本题要求自定义一个函数,求一个正整数(0~99999)最高的若干位(1-5)。

自定义left函数,有三个形参num、maxd和d,返回num的最高d位的整数;maxd是num的实际位数,如left(12345,5,2)的结果是12。

如果d的值大于maxd或小于1,函数返回-1(本题d的测试用例在一位数到五位整数之间)。

函数接口定义:

   int left(int num, int maxd, int d=1);

num 是用户传入的参数,是int值,表示要处理的正整数;

maxd 是用户传入的参数,是int值,表示num的实际位数;

d 是用户传入的参数,是int值,表示要取num的最高位数,只能是1-5,默认为1;

函数调用结束后得到num的最高d位的整数,如果d的值不是1-5,返回-1。

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:
#include<iostream>
#include<cmath>
using namespace std;

int nf(int num);
int left(int num, int maxd, int d=1);
int main()
{
    int num,d,maxd;
    cin >> num >> d;
    maxd = nf(num);  //求num的位数,如nf(123)的值是3,nf(1358)的值是4 
      cout << num << "是" << maxd << "位整数" << endl;
      cout << num << "的最高位是" << left(num,maxd) << endl;
      int newnum = left(num,maxd,d);
      if(newnum<0 )
            cout << "无高" << d << "位整数!" << endl;
    else
          cout << num << "的高" << d << "位是" <<  newnum << endl;     

    return 0;
}
//本函数使用循环结构语句实现求一个整数的实际位数,如调用nf(12345)的值为5
int nf(int num)
{
      int n=1;
      num = num>=0 ? num : -num; 
   while(num/10>0)
   {
           n++;
        num /= 10;
       }    
       return n;
}
/* 请在这里填写答案 */

输入样例1:

1234 2

输出样例1:

1234是4位整数
1234的最高位是1
1234的高2位是12

输入样例2:

1234 5

输出样例2:

1234是4位整数
1234的最高位是1
无高5位整数!
/* 请在这里填写答案 */
int left(int num, int maxd, int d)
{
     if(d>maxd||d<1)return -1;
     else
     {
          for(int i=0;i<maxd-d;i++)
          {
              num=num/10;
          }
          return num;
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值