C语言任意输入一个有五位数字的正整数,逆序输出每一数位上的数字 如输入12345 输出5 4 3 2 1

如题所述

第1个回答  2017-06-16

输入一个整数,将其每位剥离,并记录在一个数组中,此时每位数即是逆序排列的。

#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;
}

执行结果

相似回答