/*
~scanf("%d%d",&x,&y);
思路:0、先读入两组数,分别存到连个数组中;
1、将两个数组按照算法要求转变成一个数组
2、分三大类进行输出:0)a[i](i>1); 1) a[1]; 2) a[0]。
a[i]:if(a[i]>0); 再细分if(a[i]==1)
a[1]:if(a[1]>0); 再细分if(a[1]==1)
a[0]:if(a[0]>0); 再细分if(a[0]==1)
利用flag的值来控制“+”的输出,主要控制第一项输出前面不要有“+”。
*/
#include <stdio.h>
int a[105],b[105];
int main(){
int x,y;
while (~scanf("%d%d",&x,&y)){
a[x]=y;
if (x==0) break;
}
while (~scanf("%d%d",&x,&y)){ //注意这种读入方式
b[x]=y; //i代表系数,a[i]代表冥次
if (x==0) break;
}
for (int i=0;i<=100;i++)
a[i]=a[i]+b[i];
int flag=0; //主要确定首项“+”的添加与否
for (int i=100;i>1;i--){
if (a[i]){ //if(a[i])就是判断a[i]是不是0,是0则if(a[i])为假,否则进入if子语句
if (a[i]>0){
if (a[i]==1){
if (flag==0){
printf("x%d",i);
flag=1;
}
else printf("+x%d",i);
}
else{
if (flag==0){
printf("%dx%d",a[i],i);
flag=1;
}
else printf("+%dx%d",a[i],i);
}
}
else{
if (a[i]==-1)
printf("-x%d",i);
else printf("%dx%d",a[i],i);
}
}
}
if (a[1]){
if (a[1]>0){
if (a[1]==1){
if (flag==0){
printf("x");
flag=1;
}
else printf("+x");
}
else{
if (flag==0){
printf("%dx",a[1]);
flag=1;
}
else printf("+%dx",a[1]);
}
}
else{
if (a[1]==-1)
printf("-x");
else
printf("%dx",a[1]);
}
}
if (a[0]>0){
if (flag==0){
printf("%d",a[0]);
flag=1;
}
else
printf("+%d",a[0]);
}
if (a[0]<=0){
printf("%d",a[0]);
}
printf("\n");
return 0;
}
C语言作业-7-1多项式加法
最新推荐文章于 2023-10-12 19:14:10 发布