重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
成都创新互联专注于上海企业网站建设,成都响应式网站建设,商城建设。上海网站建设公司,为上海等地区提供建站服务。全流程按需设计,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
int count = 1;
int calc(int num){
while (1 == 1) {
count++;
num /= 10;
if(num 0){ //小于0的数就变成正数
num *= -1;
}
if (num 10) {
break;
}
}
return count;
}
void main(){
int num = 0;
printf("请输入一个数:");
scanf("%d",num)
printf("数字%d是一个%d位数!",num,calc(num));
}
十进制数字个数 和长度 有多种方法 算得。
下面用两种方法计算。负数有个符号位,长度比位数多 m=1。
占内存的大小用sizeof(int) 可得,通常 32位机为4字节,64位机为8字节。
例如:
#include stdio.h
int main(){
int a=123456;
int n,m=0;
char s[60];
if (a0) m=1;
sprintf(s,"%d",a);
n = strlen(s);
printf("a has digit %d length %d\n",n-m,n);
n=0;
while (1){
a = a/10;
n++;
if (a==0)break;
}
printf("a has digit %d length %d\n",n,n+m);
printf("int has %d bytes\n",sizeof(int) );
return 0;
}
#include stdio.h
int main(int argc, char **argv)
{
int a;
int sum = 0; //这是各位数的和
int NumWidth =0;//这是位数和
scanf("%d",a);
while(a != 0)
{
sum += a%10 ; //求余可以得到这个数个位上的数字,然后把它加到sum中
a /= 10; //把这个数字除以10,然后再求余,可以得到10位
NumWidth ++;//每次循环,就可以得到位数。
}
printf("the number you input width= %d, sum = %d",NumWidth,sum);
return 0;
}
int sort(int a[])
{
int i;
for(i=0;n!=0;i++)
{
a[i]=n%10;
n/=10;
}
return i;
}
void output(int a[], int num)
{
int i;
printf("正向输出:“);
for(i=num-1;i=0;i--)
printf("%d,", a[i]);
printf("\n");
}
void output_r(int a[], int num)
{
int i;
printf(“逆向输出:“);
for(i=0;inum;i++)
printf("%d,", a[i]);
printf("\n");
}
int main()
{
int n;
int i, a[10];
scanf(%d", n);
i=sort(a);
printf("位数:%d\n", i);
output(a, i);
output_r(a,i);
}
思路:求一个正整数n的位数可以先定义一个变量num,并初始化为0,依次把该整数n除以10,直到其为0为止,并且每除一次10,变量num的个数就自加1,最后num的值就是该整数n的位数。
参考代码:
#include stdio.h
int main()
{
int n,num=0;
scanf("%d",n);
while(n){
num++;
n/=10;
}
printf("%d\n",num);
return 0;
}
/*
输出:
123456
6
*/