首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言一元多項式求導:輸入輸出格式精準處理

     編輯:程式設計綜合問答

題目要求

輸入:以指數遞減方式給出非零項的係數與指數(整數,絕對值 ≤ 1000),空格分隔。
輸出:同格式輸出導數非零項;零多項式輸出 0 0;結尾不得有多餘空格。

數學原理

項 a * x^n 的導數為 a*n * x^(n-1)。常數項(n=0)導數為 0,直接丟棄。

算法流程

  1. 循環讀取 coef, exp,直到 EOF。
  2. 若 exp != 0,計算 new_coef = coef * exp, new_exp = exp - 1,存入結果列表。
  3. 輸出時按讀入順序(本身即指數遞減)遍歷結果列表,用 printf 控制空格:第一項前無空格,其後每項前加一空格。
  4. 若結果列表為空(原多項式為常數或零),輸出 0 0。

參考代碼

#include <stdio.h>
#include <stdlib.h>

#define MAX_TERMS 1000

int main() {
    int coef, exp;
    int out_coef[MAX_TERMS], out_exp[MAX_TERMS];
    int cnt = 0;

    while (scanf("%d %d", &coef, &exp) == 2) {
        if (exp != 0) {
            out_coef[cnt] = coef * exp;
            out_exp[cnt] = exp - 1;
            cnt++;
        }
    }

    if (cnt == 0) {
        printf("0 0");
    } else {
        for (int i = 0; i < cnt; i++) {
            if (i) printf(" ");
            printf("%d %d", out_coef[i], out_exp[i]);
        }
    }
    return 0;
}

測試樣例

輸入輸出
3 4 -5 2 6 1 -2 012 3 -10 1 6 0
5 00 0
1 5 -1 50 0 (合併後係數為0)

注意細節

  • 輸入可能包含負係數、負指數(題目說絕對值 ≤ 1000),邏輯通用。
  • 不需要合併同次項,題目保證輸入指數遞減且不重複。
  • 結尾無空格:用 if (i) printf(" ") 技巧實現。

這道題核心在於「讀一項、算一項、存結果、最後格式化輸出」,代碼極其精簡,是文件/流式處理的典型範例。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved