点击(此处)折叠或打开
-
#include <stdio.h>
-
-
int reverse_int_data(int *data)
-
{
-
int i,j,k;
-
-
//分别求出输入参数的个位、十位、百位
-
i = *data / 100;
-
j = (*data - i * 100) / 10;
-
k = *data % 10;
-
-
//根据个、十、百进行反序
-
*data = k * 100 + j * 10 + i;
-
-
return 0;
-
}
-
-
//此函数是为了判断输入的整数是几位数,最后的返回结果是一个位数;
-
int check_data_bit(int data)
-
{
-
int bit = 1;
-
-
//如:123,第一次求123 / 10 = 12,第二次 12 / 10 = 1;第三次 1 / 10 = 0;
-
while(data / 10)
-
{
-
data = data / 10;
-
bit ++;
-
}
-
-
return bit;
-
}
-
-
-
int main(int argc, const char *argv[])
-
{
-
int i,j,k,tmp;
-
int data = 0;
-
int bit,ret;
-
-
printf("Please input a three bit like 123 int num:\n");
-
-
again:
-
//注意:只要有外界输入,最好进行参数的合法性检查,提高程序的健壮性
-
//scanf函数的返回值是输入的数字字符的个数,比如输入123,则返回3
-
//遇到非法字符(非数字字符),则立即返回0
-
ret = scanf("%d",&data);
-
if(!(ret > 0 && ret < 10))
-
{
-
printf("the invalid input,please input again:\n");
-
-
//为了不影响下一次的读入是上次缓存中的值,进行清缓存工作
-
while(getchar() != '\n');
-
-
goto again;
-
}
-
printf("the data = %d\n",data);
-
-
bit = check_data_bit(data);
-
-
//若输入的不是三位数,会提示用户重新输入,提高程序的安全性
-
if(bit != 3)
-
{
-
printf("the input number isn't a 3 bit number,please input again:\n");
-
goto again;
-
}
-
printf("the data is a %d bit number\n",bit);
-
-
//对输入的数字进行反序
-
reverse_int_data(&data);
-
printf("after the rever,the data = %d\n",data);
-
-
return 0;
- }
点击(此处)折叠或打开
-
ubuntu@ubuntu:~/interview/c_study$ ./a.out
-
Please input a three bit like 123 int num:
-
654
-
the data = 654
-
the data is a 3 bit number
- after the reverse,the data = 456