C程序设计第四章作业9
问:
输入一个小于5的正整数,求出它是几位数、分别输出每一位数字、按照逆序输出每一位数字
答:
#include<stdio.h>
int main()
{
int Number = 0, Num = 0, i = 0;
int one, two, three, four, five;//个、十、百、千、万
printf("Enter you number:\n");
scanf("%d", &Number);
Num = Number;
if (Number > 0 && Number <= 99999)
{
while (Num/=10)//直到0停止(因为是int类型所以无法除以小数,所以在余数小于10的时候就自动停止。
{
i++;
}
}
else//进入输入错误
{
setbuf(stdin, NULL);//清除输入缓冲区
printf("You enter data is error!\n");
exit();//退出
}
i += 1;//计算出输入多少位数字
printf("Number have [%d] digit number\n", i);
//分别求个、十、百、千、万
one = (int)(Number / 10000);
two = (int)(Number / 1000 - Number / 10000 * 10);
three = (int)(Number / 100 - Number / 1000 * 10);
four = (int)(Number / 10 - Number / 100 * 10);
five = (int)(Number / 1 - Number / 10 * 10);
//printf("%d,%d,%d,%d,%d\n", one, two, three, four, five);
switch (i)
{
case 1:
{
printf("You enter Number[%d]\n", five);
printf("Reverse is [%d]\n", five); break;
}
case 2:
{
printf("You enter Number [%d],[%d]\n", four, five);
printf("Reverse is [%d],[%d]\n", five, four); break;
}
case 3:
{
printf("You enter Number [%d],[%d],[%d]\n", three, four, five);
printf("Reverse is [%d],[%d],[%d]\n", five, four,three); break;
}
case 4:
{
printf("You enter Number [%d],[%d],[%d],[%d]\n", two, three, four, five);
printf("Reverse is [%d],[%d],[%d],[%d]\n", five, four, three,two); break;
}
case 5:
{
printf("You enter Number [%d],[%d],[%d],[%d],[%d]\n", one,two, three, four, five);
printf("Reverse is [%d],[%d],[%d],[%d],[%d]\n", five, four, three, two,one); break;
}
default://按理说,不可能出现错误输入。
{
printf("Ou my F**king GOD!!");
break;
}
}
return 0;
}