c语言 输入任意一个整数,判断其是几位数?

c语言 输入任意一个整数,判断其是几位数。注意整数可以为负。

不会C语言。给出几个算法,代码是fortran的,供参考。

第一种,用整数除法。对于整数a,连续用10除,直到商为零。除法的次数,即为位数。

这个算法对于正负整数和零都能获得正确的结果。

第二种,用对数函数直接计算。对a取绝对值,再计算10为底的对数,所得结果取整数部分,再加1,即为位数。由于log10函数的变量不能是整数,需要a*1.0转换为实数。又由于log10的变量不能是0,因此针对a=0的情形,通过max将其转换成1.0。

第三种,逐个数数字的个数。将a取绝对值,写入字符串,统计字符串中不为空(为数字)的字节数,即为位数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-09

可以使用循环语句,具体代码如下

#include<stdio.h>

int main()

{

int n, c=0;

scanf(”%d”,&n);

while(n!=0)

{

n=n/10;

c++;

}

printf(“这个整数有%d位数\n”,c)

return 0;

}

比较简单的一个题目,运用while循环就可以实现

第2个回答  2021-11-09

#include<stdio.h>

int main()

{ int n=1;

  char c;

  while((c=getchar())==' '||c=='-');

  while((c=getchar())>='0'&&c<='9')n++;

  printf("这是一个%d位数\n",n);

  return 0;

}

第3个回答  2021-11-08

#include <stdio.h>

int func(int n)

{

    int i=0;

    do

    {

        i++;

    }while(n/=10);

    return i;

}

int main()

{

    int n;

    scanf("%d",&n);

    printf("%d\n",func(n));

    return 0;

}

第4个回答  2021-11-09
#include<stdio.h>
#include<math.h> //使用绝度值必须要引入此头文件,因为你说还要考虑负数,所以考虑使用绝对值来做
//统计有多少个数字
int calc(int num){
int count=0;
num=abs(num); //使用绝对值,保证判断的时候不管什么情况,都是正数
if(num==0){
count++;
}else{
while(num!=0){
num%10;
count++;
num/=10;
}
}
return count;
}
void main(){
int n;
printf("请输入一个整数:");
scanf("%d",&n);
printf("数字%d是一个%d位数!\n",n,calc(n));
}
相似回答