首页 > 解决方案 > 如何在C中打印每个第二个数字

问题描述

我的任务是打印 C 中给定 long 的每隔一个数字。我的代码如下所示:

long credit;
int mod, mod1, var;

int main(void)
{
    credit = get_long("n: \n");
    for (mod = -1; credit > 0; credit /= 10)
    {
        mod = credit % 10;
        for(mod1 = 1; mod1 <= mod; mod1+=2)
        {
            for (var = 1; var <= mod1; var++)
            {
                if(var == mod)
                {
                    printf("%i ", var);
                }
             }
         }
     }
     return 0;
} 

不幸的是,它只打印给定长度的奇数。不管中间有多少个偶数。我想知道我选择的方式(嵌套 for 循环 + if 语句)是否是正确的做法。

注意:我不是在寻找现成的解决方案。我正在寻找提示,因为我想自己发现解决方案。

标签: cfor-loopnested

解决方案


好吧,您可以通过取模 10 来获得最后一位数字,然后您可以通过将该数字除以 100 来去除 2 位数字,如果您这样做直到数字等于 0,您就会得到每个第二位数字,如下所示:

x /= 10; //just offsetting it by one more digit (so you get even and not odd numbers)

while(x > 0)
{
    printf("%lld", x % 10);
    x /= 100;
}

推荐阅读