参考如下:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int count = 1; // 位数
int m = n; // 复制一份,便于计算
while (m > 9)
{
m = m / 10;
count++;
}
printf("%d 是个 %d 位数", n, count);
return 0;
}
题主的代码,修改如下,供参考:
#include <stdio.h>
int main()
{
int x, i, n = 5;
scanf("%d", &x);
for (i = 10000; i >= 1; i /= 10)
{
if (x / i > 0) {
printf("%d是%d位数\n", x, n);
break;
}
else
n--;
}
return 0;
}
//求一个数字是几位数,并将其逆序打印(不多于5位数)
//判断这个数字是不是回文数
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,e,f;//分别代表个、十、百、千、万
long x; //未知数
cin>>x;
a=x%10; //个
b=(x/10)%10; //十
c=(x/100)%10; //百
d=(x/1000)%10; //千
e=(x/10000)%10; //万
f=(x/100000)%10; //十万
if(f!=0)
cout<<"error"<<endl;
else if(e!=0)
{
cout<<"5位数,逆序为:"<<a<<b<<c<<d<<e<<" ";
if(a==e&&b==d)
cout<<"是回文数"<<endl;
else
cout<<"不是回文数"<<endl;
}
else if(d!=0)
{
cout<<"4位数,逆序为:"<<a<<b<<c<<d<<" ";
if(a==d&&b==c)
cout<<"是回文数"<<endl;
else
cout<<"不是回文数"<<endl;
}
else if(c!=0)
{
cout<<"3位数,逆序为:"<<a<<b<<c<<" ";
if(a==c)
cout<<"是回文数"<<endl;
else
cout<<"不是回文数"<<endl;
}
else if(b!=0)
{
cout<<"2位数,逆序为:"<<a<<b<<" ";
if(a==b)
cout<<"是回文数"<<endl;
else
cout<<"不是回文数"<<endl;
}
else if(a!=0)
{
cout<<"1位数,逆序为:"<<a<<" ";
cout<<"是回文数"<<endl;
}
return 0;
}