程序分析:
1. 首先先判断输入的数 x 是否为不多于5位数的正整数;
2. 求 x 有几位,最好的办法办法就是让 x %10 每模一次记录一次,最后记录的结果就是 x 的位数;
3. 在正序输出之前 x 就变成另外一个值了,所以在正序输出程序开始时,需要留下 x 的一个备份 y ,在算完位数之后把原来备份 y 赋值给 x ,这样子才可输出它的每一位上的数字;
4. 此时引入权重index,它的初始值是1000,接着用 x%index 就可得到正序输出的每一位的数字;
5. (同3一样) 在逆序输出之前 x 也变成另外一个值了,所以在逆序输出程序开始时,也需把原来备份 y 赋值给 x ;
6. 若想得到逆序的值,也很好办,我们用 x%10 就依次得到了个位、十位、百位、千位、万位的值,刚好满足了题目的要求。
下面是我写的两种方法,仅供参考:
法一:(因为当时正在学switch语句就用的它,我写的比较麻烦)
#include<stdio.h> int main() { int x; int i, u, v, w, s, t; printf("请输入值:"); scanf_s("%d", &x); if (x < 0 || x / != 0) //也可写x>99999 { printf("enter data error\n"); return NULL; } u = x % / 10000; v = x % 10000 / 1000; w = x % 1000 / 100; s = x % 100 / 10; t = x % 10; for (i = 1; x > 1; i++) { x = x / 10; } printf("共有%d位数\n", i); printf("顺序输出后的结果为:"); switch (i) { case 1:printf("个位:%d", t); break; case 2:printf("十位:%d,个位:%d\n", s, t); break; case 3:printf("百位:%d,十位:%d,个位:%d\n", w, s, t); break; case 4:printf("千位:%d,百位:%d,十位:%d,个位:%d\n", v, w, s, t); break; case 5:printf("万位:%d,千位:%d,百位:%d,十位:%d,个位:%d\n", u, v, w, s, t); break; } printf("逆序输出后的结果为:"); switch (i) { case 1:printf("个位:%d", t); break; case 2:printf("十位:%d,个位:%d\n", t, s); break; case 3:printf("百位:%d,十位:%d,个位:%d\n", t, s, w); break; case 4:printf("千位:%d,百位:%d,十位:%d,个位:%d\n", t, s, w, v); break; case 5:printf("万位:%d,千位:%d,百位:%d,十位:%d,个位:%d\n", t, s, w, v, u); break; } return 0; }
讯享网
调试结果如下:


法二:(简单直观)
讯享网#include <stdio.h> int main() { int n; printf("请输入数:"); scanf_s("%d", &n); int m = n;//m是备份 if (n <= 0 || n > 99999) { printf("enter data error\n"); return 0; } //1. 获取位数 int count = 0; while (n != 0) { n /= 10; count = count + 1; } printf("位数是 %d\n", count); int index = 1; //权重 for (int i = 0; i < 4; i++) { index = index * 10; } //2.正着打印 n = m; //0 -> 12345 while (n != 0) { printf("%d", n / index); n = n % index; index = index / 10; } printf("\n"); //3.逆着打印 n = m;//0->12345 while (n != 0) { printf("%d", n % 10); n /= 10; } printf("\n"); return 0; }
调试结果如下:



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/63267.html