You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求助:如何用数组声明多项式并避免重复打印?

问题分析与解决方案

你推测的没错,重复打印确实是循环导致的:

  • 打印三次多项式时,你编写的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:10:34