PTA 7-1 一元多项式求导 —— C语言做法

1.题目

设计函数求一元多项式的导数。

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

输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。

输入样例: 3 4 -5 2 6 1 -2 0
输出样例: 12 3 -10 1 6 0

2.分析题意

这道题的题意是,输入要两个两个数一起看,每两个数可以看做分别是一个变量x的系数和指数,然后求导。其实很简单的题,因为是两个数要一起看,所以我们可以首先想到定义一个结构体。
求导的规律就是,系数和指数相乘,指数减一。
还有注意上面给出的样例,如果系数为0,求导以后就没有输出了,所以,还要注意的是:
当系数和指数为0的时候,就没有输出。

3.代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#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;
}

猜你喜欢

转载自blog.csdn.net/qq_46293423/article/details/105819045
今日推荐