0

我有

for (i = 1; i < max_i; i++) {
  e[i] == 1 ? printf("%ld", p[i]) : printf("%ld^%ld", p[i], e[i]);
}

在一个循环中,但随后需要在元素之间写入乘号(但不是第一个)。我不想

e[1] == 1 ? printf("%ld", p[1]) : printf("%ld^%ld", p[1], e[1]);
for (i = 2; i < max_i; i++) {
  e[i] == 1 ? printf(" * %ld", p[i]) : printf(" * %ld^%ld", p[i], e[i]);
}

所以我写了一个快速的一次性函数

void
show_pe(int p, int e)
{
    if (e == 1)
        printf("%ld", p);
    else
        printf("%ld^%ld", p, e);
}

尽管弄脏了命名空间,但它很好地删除了重复项。但是现在我看到以下函数具有我的快速函数未涵盖的类似代码。我需要

void
show_e_p(int p, int e)
{
    if (e == 1)
        printf("%ld", p);
    else
        printf("%ld*%ld", e, p);
}

void
show_pe_outside(int p, int e)
{
    if (e == 1)
        printf("a(%ld)", p);
    else
        printf("a(%ld)^%ld", p, e);
}

和许多其他人。但是由于这些只会使用两次,相隔两行,这似乎很浪费(并且将代码与其自然位置分开,这很少是一件好事)。肯定有更好的办法!想法?

4

1 回答 1

2

暗示:

do {
  code block to be executed
} while (condition);

即 - 考虑改变你的循环,使重复的​​代码不再重复..

于 2014-03-05T05:23:15.470 回答