一、整体思路
读入系数-指数对中的系数与指数,将其分别存入相应的系数数组与指数数组,分以下两种情况进行数据处理并输出对应数据
1.输出的一元多项式为零多项式,指数和系数都是 0,也即输入的一元多项式的指数为0且仅含有1组系数-指数对
2.输出的一元多项式不为零多项式,则输出其求导后的多项式的对应数据
二、关键问题
1.如何实现输入数据的读取
2.输出求导后的多项式的其中一个系数-指数对后,在什么情况下会再输出空格符
三、关键问题对应的解决方法
1.使用scanf("%d%c")结合for循环实现每次读入一个数字与其后的字符,当其后字符为\n时退出循环
2.在已经输出系数-指数对的前提条件(该对对应的指数不为0)下,应满足该对不是最后一个系数-指数对且其后仍有指数不为0的系数-指数对(以保证其后还有非零系数-指数对需要输出)
四、数据结构
使用int数组分别存储系数与指数
五、一些小细节
1.输入数据的读取方式值得注意,合理的输入读取方式会大大简化对数据的处理
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int exist_zhishu_not0(int i,int j,int zhishu[1000]);
int main()
{
int xishu[1000];
int zhishu[1000];
int i,j,k;
for(i=0,j=0,k=0;;i++)
{
int number;
char zifu;
scanf("%d%c",&number,&zifu);
if(i%2==0)
{
xishu[j]=number;
j++;
}
else
{
zhishu[k]=number;
k++;
}
if(zifu=='\n')
break;
}
if(j==1&&zhishu[0]==0)
printf("0 0");
else
{
for(i=0;i<j;i++)
{
if(zhishu[i]!=0)
printf("%d %d",xishu[i]*zhishu[i],zhishu[i]-1);
if(zhishu[i]!=0&&i!=j-1&&exist_zhishu_not0(i,j,zhishu))
printf(" ");
}
}
return 0;
}
int exist_zhishu_not0(int i,int j,int zhishu[1000])
{
int k;
for(k=i+1;k<j;k++)
{
if(zhishu[k]!=0)
return 1;
}
return 0;
}