4 3如何实现从键盘输入一个正整数,输出该正整数的位数?

.编写程序,实现从键盘输入一个正整数,输出该正整数的位数。例如输入1234输出 4 ,输入 123456输出6。

循环对10取整遍历统计一下。

#include<stdio.h>
int main()
{
int num,i=0;
printf("输入一个正整数:");
scanf("%d",&num);
while(num!=0)
{
num=num/10;
i++;
}
printf("该数是%d位数\n",i);
return 0;
}

用输入的树除以10,累计除以10的次数即可。

img

代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int n;
    int ws = 0;
    scanf("%d", &n);
    while (n > 0)
    {
        ws++;
        n /= 10;
    }
    printf("%d", ws);
    return 0;
}


#include <stdio.h>

int main()
{
    int a;
    int count=0;
    scanf("%d", &a);
    while(a)
    {
        a/=10;
        count++;
    }
    printf("%d", count);
    return 0;
}

(1)问题分析
有多种方式可以实现计算输入正整数的位数。一种是将输入的正整数通过int数据类型存储,然后通过不断除以10直到商为零,通过累计除以10的次数计算正整数的位数。但由于int类型或long int类型所能表示的整数范围有限,这种方法无法处理位数很大的整数。另一种更简单且更高效的做法是将输入的正整数通过字符数组char[]存储,并通过strlen计算正整数的位数,这种方法可以处理非常大的整数。
(2)问题的解决代码

#include <stdio.h>
int main()
{
    char str_int[100000];  //设置输入的正整数最多可以达到100000位
    scanf("%s", str_int);  //输入正整数
    printf("%d\n", strlen(str_int));  //通过strlen计算输入正整数的位数

    return 0;
}

(3)代码运行结果截图
运行结果1:

img


运行结果2:

img


/* 写程序用输出一个由用户输入的正整数的位数,
例如26的位数为2;2341的位数为4。*/
#include "stdio.h"
void main()
{
int sum,i=0;
printf("please input a sum (sum>=0 && 整数)");
scanf("%d",&sum);
while(sum!=0)
{
sum=sum/10;
i++;
}
printf("sum是%d位数\n",i);
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
#include <stdio.h>

int main() {
  int n, count = 0;
  scanf("%d", &n);
  while (n) {
    n /= 10;
    count++;
  }
  printf("%d\n", count);
  return 0;
}

#include<stdio.h>
int main(void)
{
int num=0, count=0;
scanf("%d",&num);
while(num!=0)
{
num /= 10;
count++;
}
printf("该数是%d位数\n\r",count);
return 0;
}