.编写程序,实现从键盘输入一个正整数,输出该正整数的位数。例如输入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的次数即可。
代码:
#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:
/* 写程序用输出一个由用户输入的正整数的位数,
例如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);
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!#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;
}