wsx666946 发表于 2022-6-16 11:09:06

整形值用递归转化为字符问题

#include<stdio.h>
void print(int n)
{
    if (n > 9)
    {
      print(n / 10);
    }
    printf("%d ", n % 10);
}
int main()
{
    int i = 1234;
    print(i);
    return 0;
}
想知道为什么大于10的/10 ,小于10的求余就算是转化了呢?

傻眼貓咪 发表于 2022-6-16 11:09:07

用递归:#include <stdio.h>

void show(int num) {
        if (!num) return;
        show(num / 10);
        printf("%d", num % 10);
}

int main() {
        int num = 12345;
        /*
        char str;
        snprintf(str, 6, "%d", num);
        printf("%s", str);
        */
        show(num);
}

wsx666946 发表于 2022-6-16 11:14:09

{:10_266:}{:10_266:}{:10_266:}

傻眼貓咪 发表于 2022-6-16 11:26:41

为什么不直接转换呢?

傻眼貓咪 发表于 2022-6-16 11:30:57

#include <stdio.h>

int main() {
        int num = 12345;
        char str;
        snprintf(str, 6, "%d", num);
        printf("%s", str);
}

风车呼呼呼 发表于 2022-6-16 11:34:45

1234
print(123)                                        打印4
[ print(12)   打印3 ]                        打印4
{ [ print(1)打印2 ]           打印3}            打印4
{ [ 打印1   打印2 ]           打印3}           打印4
页: [1]
查看完整版本: 整形值用递归转化为字符问题