C语言判断任意正整数的位数

方法一
采用while循环,所有外部执行一次,当输入0 时,错误的输出0位

#include <stdio.h>
int main(void) {
	int x;
	int n=0;
	printf("请输入一个任意位数的正整数\n");
	scanf("%d",&x);
	n++;
	x /=10;
	while(x>0) {
		n++;
		x /=10;
	}
	printf("你输入的是 %d 位数。\n",n);
	return 0;
}

方法二
采用do while循环,当我们输入0时,会正确的输出1.

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

方法三

#include <stdio.h>
int main(void) {
	int n,m,t;
	scanf("%d",&n);
	if(n<0)
		printf("请输入正整数!\n");
	if(n<=9&&n>=0)
		m=1;
	else {
		m=0;		
		while(n>=1) {
			n=n/10;
			++m;
		}
	}
	printf("%d\n",m);
	return 0;
}

方法四

#include <stdio.h>
int main(void) {
	int n,m,t;
	scanf("%d",&n);
	if(n<0)
		printf("请输入正整数!\n");
	if(n<=9&&n>=0)
		m=1;
	else {
		m=0;		
		while(n>=1) {
			n=n/10;
			++m;
		}
	}
	printf("%d\n",m);
	return 0;
}

方法五
我们在方法四中加入正整数的判断,并且逆序打印,这里没有删除高位的0

#include <stdio.h>
int main(void) {
	int a[100],j=0,l,n,x,m=0;
BEGIN:
	printf("请输入一个正整数.\n");
	scanf("%d",&n);
	if(n<0) {
		printf("请输入正整数!");
		goto BEGIN;
	} else
		while(n!=0) {
			x=n%10;
			a[j]=x;//把数存在数组中就任由你处置了
			j++;
			n=n/10;
			m++;
		}
	printf("您输入的数的位数是%d\n",m);
	printf("逆序打印为:");
	for(l=0; l<j; l++)
		printf("%d",a[l]);
	printf("\n");
return 0;
}

方法六
这里我们运行符合,但是,在位数上占了1

#include <stdio.h>
#include <string.h>
int main(void) {
	int m=0;
	int i=0;
	int j=0;
	printf("输入一个整数:\n");
	scanf("%d",&m);
	char ch[32]= {0};
//itoa()函数把整数转换成字符串,并返回指向转换后的字符串的指针
	itoa(m,ch,10);
	printf("位数为:%d\r\n",strlen(ch));
 
	for( i=0; i<j; j--)
	printf("%c;",ch[j-1]);
	printf("\r\n");
	return 0;
}

发布日期:

所属分类: 易语言 标签: