1010 一元多項式求導 (25 分) C語言


設計函數求一元多項式的導數。(注:xn​​(n為整數)的一階導數為nxn1​​。)

輸入格式:

以指數遞降方式輸入多項式非零項系數和指數(絕對值均為不超過 1000 的整數)。數字間以空格分隔。

輸出格式:

以與輸入相同的格式輸出導數多項式非零項的系數和指數。數字間以空格分隔,但結尾不能有多余空格。注意“零多項式”的指數和系數都是 0,但是表示為 0 0

輸入樣例:

3 4 -5 2 6 1 -2 0

輸出樣例:

12 3 -10 1 6 0

#include <stdio.h>
#include <stdlib.h>
#define MAX 1001
struct Term{        //也可以直接使用數組,程序會簡短一些,但用結構數組更容易理解。
    int para;
    int index;
};
int main(void)
{
    int i=0,j,k=0;
    struct Term term[MAX];
    while (scanf("%d%d",&term[i].para,&term[i].index) == 2)
    /*scanf()如果正確讀取兩個數值,返回值為2
    改為while (scanf("%d%d",&term[i].para,&term[i].index) != EOF) 也能通過,更容易理解。
    但我使用的編譯器卻無法運行,至少當前的代碼在編譯器中能運行*/
    {
        term[i].para=term[i].para*term[i].index;
        term[i].index-=1;
        i++;
    }
    if (i==1 && term[0].para==0)        //考慮特殊情況即多項式求導后為0,即只有一項且系數為0
        printf("0 0\n");
    else
    {
        for (j=0;j<i;j++)
        if (term[j].para != 0)      //若多項式出現系數為0的項,就不必輸出
        {
            if (k++ != 0)           //解決此類輸出最后不要空格的粗暴辦法,簡單有效。
                putchar(' ');
            printf("%d %d",term[j].para,term[j].index);
            
        }
    }
    system("pause");
    return 0;
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM