公子缠乡 发表于 2021-4-4 00:23:56

正序输出

本题要求实现一个函数,对一个整数进行按位顺序输出。

函数接口定义:
void printdigits( int n );
函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。

#include <stdio.h>
void printdigits( int n )
{
        int z=n;
        int count;
        while(n>0)
        {
                n/=10;
                count++;
        }
        int c=count;
        int a,i;
                for(i=0;i<c;i++)//保存数据的逆序
                {
                        a=z%10;
                        printf("a[%d]=%d ",i,a);
                        z/=10;
                }
        for(c=c-1;c>=0;c--)//正序输出
        {
                printf("\n%d",a);
        }
}

int main()
{
    int n;
    scanf("%d", &n);
    printdigits(n);
    return 0;
}
求问 这种写法为什么是错的?

jackz007 发表于 2021-4-4 01:10:02

本帖最后由 jackz007 于 2021-4-4 01:18 编辑

      变量 count 欠初始化
      int count = 0       ;
      用递归函数实现,代码超级简单!
#include <stdio.h>

void printdigits(int n)
{
      if(n) {
                printdigits(n / 10)   ;
                printf("%d\n" , n % 10) ;
      }
}

int main()
{
    int n            ;
    scanf("%d", & n) ;
    printdigits(n)   ;
}
      编译、运行实况
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
12345678
1
2
3
4
5
6
7
8

D:\00.Excise\C>x
10086
1
0
0
8
6

D:\00.Excise\C>

公子缠乡 发表于 2021-4-4 15:22:18

代码的确简单,但我还理解不了。好难啊
页: [1]
查看完整版本: 正序输出