我想编写一个识别整数的前导数字的函数。我很困惑并且缺乏知识来为这个过程编写函数。有人可以帮助我吗?
答案 0 :(得分:3)
简单而天真的解决方案是将数字转换为字符串,并获取字符串的第一个字符并将其转换回数字。
另一个解决方案是在循环中除以10,直到结果为零,同时记住数字的最后数字。当结果为零时,最后一位是整数的第一位数。
答案 1 :(得分:1)
这可以通过两个步骤轻松完成。
将数字更改为字符串。
返回字符串的第一个字符。
答案 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);