求教!望各位指点!解决方案

求教!望各位指点!!
输入数字
判断其是否是,不大于5位的正整数.大于5位则提示错误.
如果小于:
1.求出是几位数
2.分别打印出每一位数字.
3.按逆序打印各位数字,例如原数为123,输出应为321.

PS:编译好后,此程序也需要兼容输入字符型数据,如china也可执行.

------解决方案--------------------
楼主最好自己些个程序,如果不对就贴出来,大家帮你改正,这样你就能学到更多
------解决方案--------------------
这个好像是以前老师布置的作业
还是满简单的,楼主花点时间应该是可以做出来的
------解决方案--------------------
#include <stack>
#include <string>
#include <iostream>
using namespace std;
int main(){
string test;
stack <char> line;
getline(cin,test);
for(string::size_type first = 0;first != test.size();first++)
line.push(test[first]);


while(!line.empty()){
cout < <line.top();
line.pop();
}

return 0;
}
------解决方案--------------------
#include <stdio.h>

void infine(unsigned int infine)
{
int i;
int y;
int flag = 0;


if(infine> 100000)
printf( "error!你的输入大于5位数.\n ");
else
{
if(infine> =10000&&infine <100000)
flag = 5;
else
if(infine> =1000&&infine <10000)
flag = 4;
else
if(infine> =100 && infine <1000)
flag = 3;
else
if(infine> =10 && infine <100)
flag = 2;
else
flag = 1;
}
switch(flag)
{
case 0:

break;
case 1:
printf( "你输入的数为 1 位:%d\n ",infine);
break;
case 2:
printf( "你输入的数为 2 位:%d\n ",infine);
printf( "逆向输出为: ");
y = infine;
for( i = 0; i < flag; i++)
{

int x = y%10;
y = y/10;
printf( "%d ",x);
}
printf( "\n ");
break;
case 3:
printf( "你输入的数为 3 位:%d\n ",infine);
printf( "逆向输出为: ");
y = infine;
for( i = 0; i < flag; i++)
{

int x = y%10;
y = y/10;
printf( "%d ",x);
}
printf( "\n ");
break;
case 4:
printf( "你输入的数为 4 位:%d\n ",infine);
printf( "逆向输出为: ");
y = infine;
for( i = 0; i < flag; i++)
{

int x = y%10;
y = y/10;
printf( "%d ",x);
}
printf( "\n ");
break;
case 5:
printf( "你输入的数为 5 位:%d\n ",infine);
printf( "逆向输出为: ");
y = infine;
for( i = 0; i < flag; i++)
{

int x = y%10;
y = y/10;
printf( "%d ",x);
}
printf( "\n ");
break;
}

}


void main(void)
{
unsigned int temp;
while(1)
{


printf( "请输入一个不大于5位数的数: ");
scanf( "%d ",&temp);
printf( "\n ");

infine(temp);
}
}