大笨蛋代码:
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string>
using namespace std;
string change(int x)
{
int j;
string k;
for(j=x;j>0;j/=10)
{
k=(char)(j%10+'0')+k;
}
return k;
}
int main()
{
int n,i;
int x=0;
//char d;
string flag,c;
scanf("%d",&n);
for(i=0;i<n+1;i++)
{
scanf("%d",&x);
if(i<n)//不是最后一项
{
if(n-i!=1)//x的指数不为1
{
if(fabs(x)==1)//x前面的系数为1或-1时
{
if(x==-1)//x前面的系数为-1时
{
flag=flag+"-"+"x"+"^"+change(n-i);
}
else//x前面的系数为1时
{
flag=flag+"+"+"x"+"^"+change(n-i);
}
}
else if(x==0)//系数为0时,x的0次方还是0,不用加数
{
flag=flag;
}
else//系数既不为0也不是1、-1
{
c=change(fabs(x));//把整数化为字符,注意+'0'、-'0'这种只适用于0~9
if(x<0)//系数为负数时
{
//d=(char)(fabs(x)+'0');
//printf("%c\n",d);
flag=flag+"-"+c+"x"+"^"+change(n-i);
}
else//系数为正数时
{
//d=(char)(fabs(x)+'0');
//printf("%c\n",d);
flag=flag+"+"+c+"x"+"^"+change(n-i);
}
}
}
else//x的指数为1,不用输出^1
{
if(fabs(x)==1)
{
if(x==-1)
{
flag=flag+"-"+"x";
}
else
{
flag=flag+"+"+"x";
}
}
if(x==0)
{
flag=flag;
}
if(fabs(x)>1)
{
c=change(fabs(x));
if(x<0)
{
//d=(char)(fabs(x)+'0');
//printf("%c\n",d);
flag=flag+"-"+c+"x";
}
else
{
//d=(char)(fabs(x)+'0');
//printf("%c\n",d);
flag=flag+"+"+c+"x";
}
}
}
if(i==0&&x>0)//第一个系数为正数,删除第一个数前面的正号
{
flag.erase(0,1);
i=0;
}//第一个系数为负数,正常输出负号
}
else//最后一项,只有数字
{
c=change(fabs(x));
if(x>0)
flag=flag+"+"+c;
else if(x==0)
flag=flag;
else
flag=flag+"-"+c;
}
}
cout<<flag<<endl;
//printf("%s",flag);这句不对
//int a=50;
// printf("%c",a+'0');
return 0;
}