如何找到领先号码

时间:2013-12-25 11:06:32

标签: c function

我想编写一个识别整数的前导数字的函数。我很困惑并且缺乏知识来为这个过程编写函数。有人可以帮助我吗?

7 个答案:

答案 0 :(得分:3)

简单而天真的解决方案是将数字转换为字符串,并获取字符串的第一个字符并将其转换回数字。

另一个解决方案是在循环中除以10,直到结果为零,同时记住数字的最后数字。当结果为零时,最后一位是整数的第一位数。

答案 1 :(得分:1)

这可以通过两个步骤轻松完成。

  1. 将数字更改为字符串。

  2. 返回字符串的第一个字符。

答案 2 :(得分:0)

int num = 12345;

// left most digit:
int digit = abs(num);
while (digit > 9) {
   digit /= 10;
}

// right most digit:
int digit = abs(num) % 10;

答案 3 :(得分:0)

如果您通过使用算术而不是字符串和循环感觉更舒适,请尝试以下方法: 计算基数10对数的整数部分 将源数除以10的幂来计算日志的整数部分

{
    int value = abs(978);

    int valuelog = (int)log10(value);
    int leadingDigit = value / (pow(10,valuelog));

    printf("%d", leadingDigit);
}

例978:     日志10(978) - > 2.990; int 2     pow(10,2) - > 100     978 / 100-> 9.78; int 9

答案 4 :(得分:0)

#include <stdio.h>

int lead(const int number) {
    int divider = 10;
    while (number/divider) {
        divider *= 10; 
    }
    return number/(divider/10);
}

main()
{
    int number = 678;
    int leadNumber = lead(number);
    printf("%d",leadNumber); 
}

答案 5 :(得分:0)

int lead_int(const int n) {
    return (abs(n) < 10) ? abs(n) : lead_int(n /10);
}

在这篇文章中看到评论后编辑(包括abs()),并将其作为一个内置函数。

答案 6 :(得分:0)

你可以通过将整数转换为字符串并返回第一个字符来实现。

或者你可以做一个简单的程序,如下所示。

int a;
scanf("%d",&a);
while(a/10>0)
{
 a=a/10
}
printf("leading no. of given input is %d\n",a);