[英]How to count digits of numbers in C?
我一直在嘗試解決這個問題,即要計算數字的總位數,我的代碼正在部分工作。 對於第一次嘗試它工作得很好,但是在第二次嘗試中,該計數與以前的計數相加。 請幫忙。
#include<stdio.h>
int main()
{
int num,x,i,n,count=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&num);
while(num!=0)
{
count++;
num=num/10;
}
printf("%d\n",count);
}
return 0;
}
您的代碼有兩個問題:
count
,並且 0
位數為零 第一個問題的原因之一是您沒有限制變量的范圍,而是預先聲明了所有變量。 相反,您應該在需要它們的最緊密范圍內聲明它們: i
應該在循環頭中聲明,而count
應該在for
循環內聲明和初始化。
至於處理零的問題,請添加一種特殊情況,當輸入零時將其打印為1
,或切換為do
/ while
循環。
該計數與以前的計數相加。
開始(結束)之前,將其(重新)設置為0
:
for (i = 1; i <= n; i++)
{
count = 0;
正如StoryTeller 所說 ,一種更干凈的方法是在需要它們的范圍內定義變量:
#include <stdio.h>
int main(void)
{
int n = 0; /* Have it initialised, just in case scanf() fails. */
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
int num = 0; /* Have it initialised, just in case scanf() fails. */
scanf("%d", &num);
/* Scope of counting: */
{
int count = 0;
while (num != 0)
{
count++;
num = num / 10;
}
printf("%d\n", count);
}
}
return 0;
}
您需要在每個循環中將count
重置為0
。
這段代碼應該可以正常工作:
#include<stdio.h>
int main()
{
int num,x,i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
int count=0; // rest the count on each loop
scanf("%d",&num);
while(num!=0)
{
count++;
num=num/10;
}
printf("%d\n",count);
}
return 0;
}
如果要計算十進制數,可以嘗試以下操作:
#include<stdio.h>
long count_digits(long number) {
return number >= 10 ?
count_digits(number/10) + 1
: 1;
}
int main()
{
long num = 123456789;
long num2 = 1234567891234567888;
printf("%d\n", count_digits(num));
printf("%d\n", count_digits(num2));
return 0;
}
輸出:
9 19
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.