将一个数倒序有几种方法。我们先从简单的开始。
实例1
有几位数就声明几个变量,要倒序时,直接改变变量的顺序即可
1 # include <stdio.h> // 调用标准输入/输出库<stdio.h> 2 3 int main(void) 4 { 5 int a, b, c, d, e; // 声明a,b两个整数 6 7 printf("输入一个两位数: "); // 每个语句以 ';' 结尾,scanf之前的printf语句会自动换行 8 scanf_s("%1d%1d", &a, &b); // 限定每个%1d只读入1个字符。这样就保证了两位数,注意字符与字符间不能有空格 9 printf("倒序为:%d%d\n", b, a); 10 11 printf("输入一个三位数: "); 12 scanf_s("%1d%1d%1d", &c, &d, &e); // 符号 & 表示创建一个指向变量的指针 13 printf("倒序为:%d%d%d\n", e, d, c); 14 15 return 0; // 返回整数0,0表示函数正常退出,从而结束程序 16 }
注意scanf_s(用scanf也可,不过有的编译器会发出警告)在寻找整数或者浮点数的开头时,会先跳过每个空符,直到找到非空白字符
为止。也就是说,如果我们用scanf_s("%1d%1d", &a, &b)时,输入.1 . 2(.代表空格),那么scanf_s会先跳过数字开头的空格,将
1与第一个%1d匹配,开始寻找第二个%1d,遇到第二个空格,跳过(只有在读取数的开头时才会跳过空格),而如果我们输入123456,
由于每个%1d只能读入1个字符,所以两个整数分别是12, 345,6将会舍去。
----------------------------------------------------------------------------------------------
实例2
用求余的方法,分别求出个位,十位,百位数
1 # include <stdio.h> 2 3 int main(void) // int 表示函数返回的是整数值,void: 空,表示函数没有参数 4 { 5 int a, b; // 声明两个整数型变量 6 printf("输入1个两位数: "); 7 scanf_s("%2d", &a); // 限制读入两个字符,确保为两位数 8 printf("倒序为: %d%d\n", a % 10, a / 10); // % 表示求余,左为个位数,右为十位数 9 10 printf("输入1个三位数: "); 11 scanf_s("%3d", &b); 12 printf("倒序为: %d%d%d\n", b % 10, b % 100 / 10, b / 100 ); // 左为个位,中为十位,右为百位数 13 14 return 0; // 返回整数0,0表示函数正常退出,从而结束程序 15 16 17 }
注意,对于int整数的数字来说,'/' 的结果是向下取值的,也就是2.7取2,-2.7取-2(向0靠近),对于小数就没影响,
所以一般 '\' 都用于float浮点型的数字,再附上一个四位数(假如是a)的求余方法,大家应该就能知道规律了。
千位: a / 1000
百倍: a % 1000 / 100
十位: a % 100 / 10
个位: a % 10