这是包含我的代码的文件(Google Docs链接(的链接 -
#include<stdio.h>
int len(int);
void main()
{
int n,p;
printf("enter number");
scanf("%d",&n);
p=len(n);
printf("length of entered number is %d",p);
}
int len(int num)
{
int i,c,b;
for(i=1;i<=50;i++){
b=10*i;
if(num<b) {
return(i);
break;
}
}
}
计算b=10*i;
没有逻辑上的意义。您是否要筹集10个给定的 power ?
解决此问题的正常方法是将其反复除以10,直到达到0(使用整数算术(,并计算所做的划分数量。那是原始数字中的数字数。此方法也不容易受到整数溢出的影响:
unsigned digits = 0;
for (; num /= 10; ++digits);
return digits;
int len(int num){
int i = 0;
if(num == 0)
return 1;
while(num!=0){
num = num / 10;
i++;
}
return i;
}
在这里,我们将num除以10,直到达到0,并且每次循环执行,我们会增加计数i++
frontMatter我无法识别您的答案,但我认为以下代码会根据您的标题有用。
#include<stdio.h>
#include<conio.h>
void main()
{
char a[50000];
int i,c=0;
printf("enter number:");
fflush(stdin);
gets(a);
for(i=0;a[i]!=' ';i++)
{
if(a[i]>=0 || a[i]<=9)
{
c++;
}
}
printf("n %d digit number",c);
getch();
}