最后附上我的菜鸡代码,虽然很长但实测没有bug
#include<stdio.h>
int main(){
int n,flag=0;
int a[100];
scanf("%d",&n);
for(int i=n;i>=0;i--){
if((i==n)&&(n>1)){
scanf("%d",&a[i]);
if(a[i]>0){
flag=1;
if(a[i]==1)printf("x^%d",i);
else printf("%dx^%d",a[i],i);
}
else if(a[i]<0){
flag=1;
if(a[i]==-1)printf("-x^%d",i);
else printf("%dx^%d",a[i],i);
}
}
else if(i>1&&i<n){
scanf("%d",&a[i]);
if(a[i]>0){
if(a[i]==1&&flag==1)printf("+x^%d",i);
else if(a[i]>1&&flag==1) printf("+%dx^%d",a[i],i);
else if(flag==0)printf("%dx^%d",a[i],i);
flag=1;
}
else if(a[i]<0){
flag=1;
if(a[i]==-1)printf("-x^%d",i);
else printf("%dx^%d",a[i],i);
}
}
else if(i==1&&n>1){
scanf("%d",&a[i]);
if(a[i]>0){
if(a[i]==1&&flag==1)printf("+x");
else if(flag==0&&a[i]==1)printf("x");
else if(flag==0&&a[i]>1)printf("%dx",a[i]);
else if(a[i]>1&&flag==1) printf("+%dx",a[i]);
flag=1;
}
else if(a[i]<0){
flag=1;
if(a[i]==-1)printf("-x");
else printf("%dx",a[i]);
}
}
else if(i==0&&n>1){
scanf("%d",&a[i]);
if(a[i]!=0&&flag==0)printf("%d\n",a[i]);
else if(flag==1&&a[i]<0)printf("%d\n",a[i]);
else if(flag==1&&a[i]>0)printf("+%d\n",a[i]);
else printf("\n");
}
else if(n==1&&i==1){
scanf("%d",&a[i]);
if(a[i]>0){
flag=1;
if(a[i]==1)printf("x");
else printf("%dx",a[i]);
}
else if(a[i]<0){
flag=1;
if(a[i]==-1)printf("-x");
else printf("%dx",a[i]);
}
}
else if(n==0){
scanf("%d",&a[i]);
printf("%d",a[i]);
}
}
}