一、题目和题意分析
设计函数求一元多项式的导数。x^n [n为整数] 的一阶导数为nx^(n−1)。
输入格式: 以指数递降方式输入多项式非零项系数和指数(*绝对值均为不超过 1000 的整数*)。数字间以空格分隔。
输出格式: 以与输入相同的格式输出导数*多项式非零项的系数和指数*。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0
0。
输入样例: 3 4 -5 2 6 1 -2 0
输出样例: 12 3 -10 1 6 0
二、解题思路
如果是零多项式,则输出0 0,否则输出多项式非零项的系数和指数。
#include <stdio.h> #define MAX 1000
struct Info {
int pre;
int expo;
}; int main(int argc, char *argv[])
{
struct Info A[MAX];
int j, flag; j = ;
while ( scanf("%d %d", &A[j].pre, &A[j].expo) != EOF ) {
/* 输入非零项系数和指数 */
A[j].pre *= A[j].expo;
if ( A[j].expo != ) {
A[j].expo -= ;
} else {
A[j].expo = ; /* constant */
} /* 输出导数多项式非零项的系数和指数 */
if ( A[j].pre == && A[j].expo == ) {
// pre,expo equal to 0
if ( j == ) {
printf("0 0");
break;
} else {
continue;
}
} else if ( A[j].pre != ) {
// pre not equal to 0
if ( j == ) {
printf("%d %d", A[j].pre, A[j].expo);
} else {
printf(" %d %d", A[j].pre, A[j].expo);
}
}
j++;
} return ;
}