C语言题目-多项式加法多项式加法(10分)题目内容:一个多项式可以表达为x的各次幂与系数乘积的和,比如:2x6+3x5+12x3+6x+20现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。程序要处理的幂最大为100。输入格式:总共要输入两个多项式,每个多项式的输入格式如下:每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。输出格式:从最高幂开始依次降到0幂,如:2x6+3x5+12x3-6x+20注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。输入样例:625331216020625321216020输出样例:4x6+6x5+12x3+12x2+12x+40时间限制:500ms内存限制:32000kb代码#includestdio.h//此程序需要分3种情况,一、幂为0;二、幂为1;三、幂大于1inta[105],b[105];intmain(){intx,y;while(~scanf(%d%d,&x,&y)){//存储第一个多项式的数据,当幂为0时停止输入a[x]=y;if(x==0)break;}while(~scanf(%d%d,&x,&y)){//存储第二个多项式的数据,当幂为0时停止输入b[x]=y;if(x==0)break;}for(inti=0;i=100;i++)a[i]=a[i]+b[i];//将两个多项式的系数相加保存到数组a[i]中intflag=0;//用此数来区分输出的式子是否是第一个数字,是第一个式子flag就为0,不是第一个式子flag就为1for(inti=20;i1;i--){if(a[i]){//系数不为0if(a[i]0){//系数大于0的情况if(a[i]==1){//系数等于1的情况if(flag==0){//输出的式子是第一个式子printf(x%d,i);flag=1;}elseprintf(+x%d,i);//输出的式子不是第一个式子}else{//系数大于1的情况if(flag==0){printf(%dx%d,a[i],i);flag=1;}elseprintf(+%dx%d,a[i],i);}}else{//系数小于0的情况if(a[i]==-1)printf(-x%d,i);elseprintf(%dx%d,a[i],i);}}}if(a[1]){if(a[1]0){if(a[1]==1){if(flag==0){printf(x);flag=1;}elseprintf(+x);}else{if(flag==0){printf(%dx,a[1]);flag=1;}elseprintf(+%dx,a[1]);}}else{if(a[1]==-1)printf(-x);elseprintf(%dx,a[1]);}}if(a[0]0){if(flag==0){printf(%d,a[0]);flag=1;}elseprintf(+%d,a[0]);}if(a[0]=0){printf(%d,a[0]);}printf(\n);return0;}