输入一个整数,将其每位剥离,并记录在一个数组中,此时每位数即是逆序排列的。
#include <stdio.h>
#define ARRAY_LEN 100 /*数组长度*/
void numToDigit (int num, int arr[]) { /*将数字按位剥离并存储在数组中,该算法剥离出的每位数即是逆序排列的*/
int i,j,n;
for (i = 0, n = num; n>0; i++) {
arr[i] = n%10; /*除以10取余数,以取出最后一位数字*/
n = n/10; /*除以10取整数,以丢弃最后一位数字*/
arr[i+1] = '\0'; /*数组结束符号,便于后续统计位数*/
}
}
int digitCount (int arr[]) { /*统计位数*/
int i,count;
for (i = 0, count = 0; arr[i] != '\0'; i++)
count++;
return count;
}
void printArr (int arr[], int len) { /*打印数组*/
int i;
for (i = 0; i<len; i++)
printf("%d\t",arr[i]);
printf("\n");
}
int main(void) {
int num,len,arr[ARRAY_LEN];
printf("请输入一个正整数:\n");
scanf("%d",&num);
printf ("======================================================\n\n");
printf("每一位数字逆序输出:\n");
numToDigit (num, arr);
len = digitCount (arr);
printArr (arr, len);
return 0;
}
执行结果