问题描述
coef为0的时候,我用continue不打印,但是只有printTerm(a)出来,printTerm(b)部分不出来。
当我删除(if & continue)语句时,同时出现printTerm(a)和printTerm(b),看来这里的(if & continue)语句有问题。
我该如何解决这个问题?
int main() {
a[0].coef = 2;
a[0].expon = 1000; // 2x^1000
a[1].coef = 1;
a[1].expon = 2; // x^2
a[2].coef = 1;
a[2].expon = 0; // 1
b[0].coef = 1;
b[0].expon = 4; // x^4
b[1].coef = 10;
b[1].expon = 3; // 10x^3
b[2].coef = 3;
b[2].expon = 2; // 3x^2
b[2].coef = 1;
b[2].expon = 0; // 1
printTerm(a);
printTerm(b);
return 0;
}
void printTerm(polynomial *p) {
int i=0;
printf("polynomial : ");
while(p[i].expon != -1) {
if(p[i].coef == 0) continue;
printf("%dx^%d",p[i].coef,p[i].expon);
i++;
if(p[i].expon != -1 && p[i].coef > 0) printf(" + ");
}
printf("\n");
}
解决方法
因为只有在 i
不等于 0 时才增加 p[i].coef
。
如果 p[i].coef == 0
它跳过增量部分并且函数陷入无限循环,总是检查相同的数组项。
编辑:
解决这个问题的方法:
而不是 if(p[i].coef == 0) continue;
使用:
if (p[i].coef == 0)
{
i++;
continue;
}
这种方式 while 循环会评估下一个数组项,而不是卡在同一项上。