原题是这样的:
输入一个五位以内(含五位)的正整数
(1)判断它是一个几位数;
(2)请按序输出其各位数字;
(3)逆序输出其各位数字。
要求:使用指针
如输入:56439,
输出:
五位数
5,6,4,3,9
9,3,4,6,5
我已经实现输入数据,判断位数,并将每一位存到一个数组中。因为事先不知道用户要输入几位,所以数组按照有可能输入的最大数来定义,即输入五位数,,定义一个长度为5的数组a[5],把每一位装进数组中。但是假如用户输入了小于5位数的,并且这个数的中间有某一位是0,比如1004,那么这个时候数组各元素为{0,1,0,0,4},我的问题是:如何能按照题意,输出1,0,0,4 和4,0,0,1 ?
下面是我的代码段:
c
#include <stdio.h> int main(int argc, const char * argv[]) { unsigned long n = 0; //输入一个数 while (1) { printf("Input a number(0~9999): \n"); scanf("%lu", &n); if (n > 0 && n < 100000) { break; } } //判断是几位数 //每一位存入数组 int i = 0; int a[5] = {0}; int *p = &a[4]; while (n != 0) { *p = n % 10; n /= 10; i++; p--; } printf("\ndigit:%d\n\n",i); //遍历数组,输出元素 for (int i = 0; i < 5; i++) { printf("%d ", a[i]); } printf("\n"); //倒序输出元素 for (int i = 4; i >= 0; i--) { printf("%d ", a[i]); } printf("\n"); return 0; }
你都可以判断出用户输出多少位了 循环的时候就用位数来做循环依据就好了啊``!