本题我的想法是设个数组,但是先不把2、3、7存进去,数组初始全为0,然后进行判断,哪个数能被n整除,我们再把它存入数组

  存完后遍历一下,只要数组元素不为0,就打印出来,由于之前就是升序判断,那么此处也是升序打印。

  最后需要上个保险,如果n不能被任何数整除的话,说明没有任何数存入数组,则数组第一个元素必然为0。此时我们加个判断,顺理成章打印“n”。

int main()
{
    int n, i=0;
    scanf("%d", &n);
    int can[3]={0};
    while(1)
    {
        if(!(n%2))
            can[i++] = 2;
        if(!(n%3))
            can[i++] = 3;
        if(!(n%7))
            can[i++] = 7;
        break;
    }
    for(i=0;i<3;i++)
    {
        if(can[i])
            printf("%d ", can[i]);
    }
    if(!can[0])
        printf("n");
    return 0;
}

  PS:有一点补充,关于我为什么要写个 while(1) 上去,因为这样可以使我的每一步都处在一个大的块里,方便阅读。