新人求解如何让输出数据之间上下行之间无空

#include
int main()
{
int n,i,num=0;
scanf("%d",&n);
for(i=10;i<=99;i++)
{
if(i%n==0)
{
printf("%-5d",i);
num=num+1;
}
if(num%5==0)
{
printf("\n");
}

  }
  printf("\n%d",num);
  return 0;

}
输入2
输出如下
10 12 14 16 18

20 22 24 26 28

30 32 34 36 38

40 42 44 46 48

50 52 54 56 58

60 62 64 66 68

70 72 74 76 78

80 82 84 86 88

90 92 94 96 98

45

#include "stdio.h"
int main()
{
int n,i,num=0;
scanf("%d",&n);
for(i=10;i<=99;i++)
{
if(i%n==0)
{
printf("%-5d",i);
num=num+1;
}
if(num%5==0 && (i - 1)%n==0 && i!=10)
{
printf("\n");
}
}
  printf("\n%d",num);
  return 0;
}

图片说明

以后提问,请格式化好了再发出,方法如下

图片说明

问题解决请点我回答右边的采纳,谢谢

就跟昨天的一样啊,因为for循环在18的时候num为5,输出空行,在19的时候,num依然为5,所以又输出了一个空行,

这里添加了一个flag开关,每次num变动,打开flag,输出换行后,关闭flag

 #include <stdio.h>
int main()
{
    int n, i, num = 0;
    int flag = 0;
    scanf("%d", &n);
    for (i = 10; i <= 99; i++)
    {
        if (i%n == 0)
        {
            printf("%-5d", i);
            num = num + 1;
            flag = 1;

        }
        if (num % 5 == 0&&flag)
        {
            printf("\n");
            flag = 0;
        }
    }
    printf("%d", num);
    return 0;
}