设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1。)
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0
。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
分析:
本体实际上没什么难度,主要就是一个对输入进行处理的问题。先看代码:
#include<cstdio>
int main(){
int m, n, flag = 1;
while(~scanf("%d %d", &m, &n)){
if(n != 0){
if(flag){
printf("%d %d", m * n, n - 1);
flag = 0;
}else{
printf(" %d %d", m * n, n - 1);
}
}
}
if(flag) printf("0 0");
}
scanf返回成功读入数据的项数,遇到错误或end of file时返回EOF(-1),~是按位取反,-1的反码为0,即可跳出循环。也可写为scanf("%d %d", &m, &n) != EOF。本题没有必要建立数组or结构体去存储,直接输出就是很好的方法。flag用于控制格式,同时解决零多项式的问题。