1010 一元多項式求導 (25 分) C語言
阿新 • • 發佈:2018-12-11
設計函式求一元多項式的導數。(注:xn(n為整數)的一階導數為nxn−1。)
輸入格式:
以指數遞降方式輸入多項式非零項係數和指數(絕對值均為不超過 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 structTerm{ //也可以直接使用陣列,程式會簡短一些,但用結構陣列更容易理解。 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; }