#递归法打印一个整数的每一位#

1. 要求:

  • 外部输入一个整数 n ;

  • 递归法打印这个整数的每一位;

2. 代码

#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include <stdio.h>
//Author: wanlin_z
//代码要求: 用递归法打印一个整数的每一位;

void print_nums(int n)
{
	if (n / 10 != 0)
	{
		print_nums(n / 10);
	}
	printf("%d  ", n % 10);
}
int main()
{
	int n = 0;
	printf("输入一个需要打印的整数>:");
	scanf("%d", &n);
	//调用函数打印这个整数的每一位:
	print_nums(n);
	return 0;
}

3. 问题

有个问题就是,按照这个代码执行,如果输入一个负整数,那么打印的每一位都带个负号(for exemple:输入-123,打印:-1 -2 -3)。这算是bug吗?求教各位大佬修改意见,不胜感激!

c++·c
84 views
Comments
登录后评论
Sign In
·

如果把输入的数字存为字符串类型,那么打印起来就简单多了吧。(而且输入负数的时候,负号也会打印出来,例如-1234——>- 1 2 3 4)

#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include <stdio.h>
#include <string.h>

int main()
{
	char input[10] = { 0 };
	printf("请输入你想打印的数字>:");
	scanf("%s", input);
	int i = strlen(input);
	int j = 0;

	for (j = 0; j < i; j++)
	{
		printf("%c ", input[j]);
	}

	return 0;
}
·
#include <stdio.h>

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

int main()
{
    int n = 0;
    printf("输入一个需要打印的整数>:");
    scanf("%d", &n);
    if (n < 0)
    {
        printf("- ");
        n = -n;
    } 
    print_num(n);
    return 0;
}