設計函數求一元多項式的導數。(注: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 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; }
