请让我知道最简单的方法来计算整数位数。 场景是我将从用户处输入一个长整数。如果整数的长度等于11,则显示一条消息成功,否则显示一条错误消息。最后,如果出现错误消息,我想中断程序,屏幕上不应显示其他指令。
到目前为止,我已经尝试使用while和if语句在下面的代码中执行此操作,但程序确实在运行,但未提供所需的输出。
printf("Enter your Account Number :\n");
scanf("%ld", &accno);
while(accno != 0)
{
++count;
}
count = count;
if (count == 11){
printf("You are existing customer of bank.");
}else{
printf("Sorry you are not a customer of our bank");
}
答案 0 :(得分:1)
方法1:数学
实际上,使用log
函数(以10为基数),存在一种数学上聪明的方法来查找任意数字的数字:
#include<stdio.h>
#include<math.h>
int numlen(unsigned long long n){
if(n==0) return 1;
return (int)(ceil(log10((double)(n)))); //sorry for the multiple castings, as ceil/log both take in and return doubles
}
这种方法虽然速度较慢,但是在数学上很漂亮。
编辑:我完全同意@chux的评论,由于强制转换和浮点精度问题,此方法不是整数解决方案的最佳选择。但是,它仍然是解决问题的最数学上最合适的方式。
方法2:循环
int numlen(unsigned long long n){
int len = 0;
if(n<10) return 1;
while (n) {
n /= 10;
len++;
}
}
方法3:递归
有关基于递归的答案,请参阅@Rutendo答案
方法4:只需检查一下? (仅您的应用程序) 由于您只需要检查数字是否为11位数字,因此只需检查整数是否在10000000000和99999999999(含)之间即可。
int isElevenDigits(unsigned long long n){
if(n>=10000000000 && n<=99999999999) return 1;
else return 0;
}