用C语言实现以下:输入一个不多于4位数的正整数,要求如下:1、求出它是几位数; 2、输出每一位数

2025-04-08 22:56:58
推荐回答(3个)
回答1:

为了能够顺序地输出一个数的各个位对应的数,我用的是递归调用的方法实现的,例如:
Input a number:1234
1 2 3 4
This number has 4 bits!
程序如下:
#include
int getBit(int n)
{
int k;
static int count=1; //定义一个静态变量count保存某个数的位数,相当于全局变量
k=n%10; //对变量n取余并用k保存
n/=10; //将n除以10表示减少一位
if(n){ //如果n>0则执行
++count;//位数增1
getBit(n); //递归调用,最后能够逆序输出所取的余数,这样就能得到一个数顺序的位数
}
printf("%4d",k);
return count; //返回位数
}
void main()
{
int num,count;
do{
printf("Input a number:");
scanf("%d",&num);
}while(num<=0||num>=10000); //如果n不满足条件则继续循环
count=getBit(num);
printf("\nThis number has %d bits!\n",count);
getch();
}

回答2:

#include

int main()
{
int inputData; // 存储这个不大于4位的整数
int temp; // 用于存放余数
int count = 1; // 计数
printf("请输入一个不多于4位的正整数:");
scanf("%d",&inputData);
if ( inputData > 9999 )
{
printf("输入不合要求,退出程序");
return 0;
}
temp = inputData;
while( inputData >= 10 )
{
temp = inputData%10;
inputData = (inputData- temp)/10;
printf("%d ",temp);
count++;
}
printf("%d\n",inputData%10);
printf("这个正整数为:%d位\n",count);
return 0;
}

回答3:

char num[4],*p=num;
gets(num);
printf("%d位数",strlen(num));
while(*p)printf("%c\n",*p++);