本题我的想法是设个数组,但是先不把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) 上去,因为这样可以使我的每一步都处在一个大的块里,方便阅读。