思路汇聚,对初学者的我来说值得学习。
会慢慢学习和补充。
- 总言
- 一、反向输出四位数
- 一)、法一
- 二)、法一的改编版
- 三)、法二
- 题目:
输入一个四位数,反向输出对应四位数。
- 类似题: 输出二进制位数、八进制位数、十六进制位数
笔者需要学习的一种写法。这种写法强调用“除10余10”的思维来完成数位转换过程。
#define _CRT_SECURE_NO_WARNINGS //预处理命令与标识符 #includeint main(void) { //输入四位整数: int a; printf("输入四位数:"); scanf("%d", &a); //对该整数进行一个循环,使数位反向。 int rem,i; for (i = 0; i < 4; i++) { rem=a% 10; a /= 10; printf("%d", rem); } return 0; }
由于上述代码采用了for循环,因其条件判断表达式的限制,只针对四位数有效,因此有改进空间,比如:考虑while循环等。
如下:这样写的好处在于减少了变量的使用,且比较简洁,通用性也强。
#define _CRT_SECURE_NO_WARNINGS //预处理命令与标识符 #includeint main(void) { int a; printf("输入四位数:"); scanf("%d", &a); while(a)//a为真会一直循环,直至a=0为假跳出循环。 { printf("%d", a % 10); a /= 10; } return 0; }
二)、法一的改编版
对法一再进行逻辑优化,使其更符合数学运算规则。
ps:加入定义函数纯属练习,也可以直接在main函数里完成。但考虑到当程序繁杂时,通常情况下不是所有代码都往main函数里抛,于是采取了定义函数的方法。
#define _CRT_SECURE_NO_WARNINGS //预处理命令与标识符 #include//创建一个输入正整数的函数。 int post(void) { printf("输入一个正整数:"); scanf("%d", &num); return num; } //创建一个计算反向数值的函数。 int rev(int num) { int i = 0; do{ i = i*10 + num %10; num /= 10; }while(num); return num; } int main(void) { printf("反向数值为:%d",rev(post())); return 0; }
一种比较神奇的写法(个人想过这种写法,但做题时考虑到代码不能只停留在比较简单的层面,就换了种思路)
#define _CRT_SECURE_NO_WARNINGS //预处理命令与标识符 #includeint main(void) { int a, b, c, d; printf("输入四位数:"); scanf("%1d%1d%1d%1d", &a, &b, &c, &d); printf("%d%d%d%d",d,c,b,a); return 0; }
- 法三
在这里插入代码片
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)