1010 一元多项式求导(C语言版 + 注释 + 巧妙的描述题)

设计函数求一元多项式的导数。(注:x​n​​(n为整数)的一阶导数为nx​n−1​​。)

输入格式:

以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。

输出格式:

以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0

关键之处:

  • 别想着用链表处理多项式太复杂了。以一个系数、一个指数为一组,每次输出一组的结果即可。
  • “零多项式”的情况单独输出。

代码:

#include <stdio.h>

int main(void) {
	int coef, exp, count;
	char ch;
	
	count = 0;    //用来处理行末不留空格以及“零多项式”的情况。
	while ( 1 ) {
		scanf("%d %d", &coef, &exp);    //每次处理一个系数、一个指数。
		if ( exp ) {    //指数不为0,才对它求导。
			if ( count++ != 0 )		printf(" ");    //除了第一组,其他前面都留空格。
			printf("%d %d", coef * exp, exp - 1);
		}
		if ( (ch = getchar()) == '\n' )		break;    //遇到回车,退出循环。
	}
	if ( count == 0 ) 	printf("0 0");    //如果上面的循环没有执行,说明是零多项式。
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/YelloJesse/article/details/82263169