新手求助:如何用数组声明多项式并避免重复打印?
问题分析与解决方案
你推测的没错,重复打印确实是循环导致的:
- 打印三次多项式时,你编写的
for(i=0; i<4; ++i)循环会执行4次,每次都完整输出整个三次多项式,因此重复打印了4次 - 打印二次多项式的
for(j=0; j<3; ++j)循环同理,会执行3次,导致重复打印3次
另外代码里还有一个拼写错误:#include <stlib.h>应该修正为#include <stdlib.h>(stdlib是standard library的缩写,少了字母d)
修改后的代码
#include <stdio.h> #include <stdlib.h> int main(){ int a[4]; int b[3]; int i, j; printf("type 4 numbers:"); for(i=0; i<4; ++i){ scanf("%d", &a[i]); } // 移除多余循环,直接打印一次三次多项式 printf("%dx^3+%dx^2+%dx+%d\n", a[0],a[1],a[2],a[3]); printf("Type 3 numbers:"); for(j=0; j<3; ++j){ scanf("%d", &b[j]); } // 移除多余循环,直接打印一次二次多项式 printf("%dx^2+%dx+%d\n", b[0],b[1],b[2]); return 0; }
可选优化建议
如果后续需要更规范的多项式输出(比如自动跳过系数为0的项,避免出现0x^3这类冗余内容),可以用循环逐个输出每一项:
// 三次多项式的优化打印逻辑 for(i=3; i>=0; --i){ if(a[3-i] != 0){ // 非首项且系数为正,添加加号 if(i != 3 && a[3-i] > 0){ printf("+"); } // 根据次数输出对应格式 if(i == 0){ printf("%d", a[3-i]); } else if(i == 1){ printf("%dx", a[3-i]); } else { printf("%dx^%d", a[3-i], i); } } } printf("\n");
这个版本会自动处理系数为0的情况,让输出更简洁合理。
内容的提问来源于stack exchange,提问作者Bubulina1918
相关产品推荐
相关产品推荐

