设计函数求一元多项式的导数。
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。
输入样例: 3 4 -5 2 6 1 -2 0
输出样例: 12 3 -10 1 6 0
这道题的题意是,输入要两个两个数一起看,每两个数可以看做分别是一个变量x的系数和指数,然后求导。其实很简单的题,因为是两个数要一起看,所以我们可以首先想到定义一个结构体。
求导的规律就是,系数和指数相乘,指数减一。
还有注意上面给出的样例,如果系数为0,求导以后就没有输出了,所以,还要注意的是:
当系数和指数为0的时候,就没有输出。
#include
#include
#include
#define MAX 10001
typedef struct shu
{
int xi;
int zhi;
}Shu;
int main()
{
Shu nums[MAX];
int n = 0,xi,zhi,i;
char isEnd;
while(1)
{
scanf("%d%d",&xi,&zhi);
isEnd = getchar(); //因为这里没有限制输入的数字,所以我们可以通过判断数字后面是不是换行符
//来判断是否结束输入
if(zhi != 0 && xi != 0)
{
nums[n].xi = xi*zhi;
nums[n].zhi = zhi-1;
n++;
}
if(isEnd == '\n')
break;
}
printf("%d %d ",nums[0].xi,nums[0].zhi); //注意输出的格式,最后一个数字后面没有空格
for(i=1;i<n;i++)
{
printf(" %d %d",nums[i].xi,nums[i].zhi);
}
return 0;
}