大前端

前端学习之家-大前端

多项式加法(5分)

程序设计入门——C语言_中国大学MOOC(慕课) (icourse163.org)

 

#include<stdio.h>
#include<string.h>

int main(){
	int a[101]={0};
	int i,mi=0,xi,cnt=0,max=0,nax=0,flag=0;
	while(1){
		scanf("%d %d",&mi,&xi);
		a[mi]+=xi;
		if(max<mi) max=mi;
		if(mi==0){
			cnt++;
			if(cnt==2){
				break;
			}
		}
	}
	for(i=max;i>=0;i--){         
		if(a[i]!=0&&nax<i) {
			nax=i;
		}
	}

	for(i=nax;i>=0;i--){
		if(a[i]!=0){
			flag=1;
			if(i==nax){
				if(a[i]==1||a[i]==-1){
					if(i==0) printf("%d",a[i]);
					if(i==1) {
						if(a[i]==1) printf("x");
						if(a[i]==-1) printf("-x");
					}
					if(i!=1&&i!=0){
						if(a[i]==1) printf("x%d",i);
						if(a[i]==-1) printf("-x%d",i);
					} 
				} 
				else printf("%dx%d",a[i],i);
			} 
			else if(i==1){
				if(a[i]==1) printf("+x");
				else if(a[i]==-1) printf("-x");
				else printf("%+dx",a[i]);
			}
			else if(i==0) printf("%+d",a[i]);
			else{
				if(a[i]==1) printf("+x%d",i);
				else if(a[i]==-1) printf("-x%d",i);
				else printf("%+dx%d",a[i],i);
			} 
		}
	}
	if(flag==0) printf("0");
	return 0;
}

发表评论:

Copyright Your WebSite.Some Rights Reserved.