m0_74118720 2022-10-08 15:08 采纳率: 92.3%
浏览 325
已结题

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

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

  • 写回答

9条回答 默认 最新

  • CSDN专家-sinJack 2022-10-08 15:12
    关注

    循环对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;
    }
    
    
    评论
  • 叶落花枯 2022-10-08 15:18
    关注
    
    #include <stdio.h>
    
    int main()
    {
        int a;
        int count=0;
        scanf("%d", &a);
        while(a)
        {
            a/=10;
            count++;
        }
        printf("%d", count);
        return 0;
    }
    
    评论
  • 斗迷飞鸟 2022-10-08 15:34
    关注

    (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

    评论 编辑记录
  • m0_72938729 2022-10-08 15:46
    关注
    
    /* 写程序用输出一个由用户输入的正整数的位数,
    例如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);
    }
    
    
    评论
  • 有问必答小助手 2022-10-08 16:19
    关注
    您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
    PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
    评论
  • _GX_ 2022-10-08 16:27
    关注
    #include <stdio.h>
    
    int main() {
      int n, count = 0;
      scanf("%d", &n);
      while (n) {
        n /= 10;
        count++;
      }
      printf("%d\n", count);
      return 0;
    }
    
    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-08 17:14
    关注
    评论
  • 门牙会稍息 2022-10-08 21:12
    关注

    #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;
    }

    评论
查看更多回答(8条)

报告相同问题?

问题事件

  • 系统已结题 10月16日
  • 已采纳回答 10月8日
  • 创建了问题 10月8日

悬赏问题

  • ¥15 win11安卓子系统打开谷歌登录不了切使用浏览器显示处于离线状态
  • ¥15 三维直角坐标系下,给定一个平面内四个点坐标,如何将四个点逆时针排序
  • ¥15 UnityWebRequest访问内网地址502
  • ¥20 Python语言来实现牛顿法(Newton's Method)解决非线性(系统)方程的问题。
  • ¥15 matlab控制工业相机采集图像
  • ¥25 R里做折线图和柱状图
  • ¥20 使用kokkos移植项目,遇到问题
  • ¥15 求该问题的Matlab代码
  • ¥15 python下使用pdpbox为何提示has no attribute 'pdp_isolate'?
  • ¥15 求java web病房管理系统项目,用netbeans做的