思路:方法很笨,一项一项判断,但有一点需要注意那就是输出的时候的第一项,虽然题目说'+'和'-'前后都有空格,但若第一个字符为负的时候,'-'的前后是没有空格的.
编程语言:C语言
代码如下:
#include<stdio.h>
int main(void)
{
int i, low, high, first;
int num[9];
while (scanf("%d%d%d%d%d%d%d%d%d",
&num[8], &num[7], &num[6], &num[5], &num[4],
&num[3], &num[2], &num[1], &num[0]) != EOF)
{
first = 1;
low = 0;
while (num[low] == 0 && low<9)
low++;
high = 8;
while (num[high] == 0 && high >= 0)
high--;
if (low>high)
{
printf("0\n");
continue;
}
for (i = 8; i >= low; i--)
{
if (num[i] != 0)
{
if (first == 1)
{
first = 0;
if (i == 0) printf("%d", num[i]);
else if (i == 1)
{
if (num[i] == -1) printf("-x");
else if (num[i] == 1)printf("x");
else printf("%dx", num[i]);
}
else
{
if (num[i] == -1)
printf("-x^%d", i);
else if (num[i] == 1)
printf("x^%d", i);
else
printf("%dx^%d", num[i], i);
}
}
else
{
if (num[i]>0)
{
if (num[i] == 1)
{
if (i == 0)
printf(" + 1");
else if (i == 1)
printf(" + x");
else
printf(" + x^%d", i);
}
else
{
if (i == 0)
printf(" + %d", num[i]);
else if (i == 1)
printf(" + %dx", num[i]);
else
printf(" + %dx^%d", num[i], i);
}
}
else
{
if (num[i] == -1)
{
if (i == 0)
printf(" - 1");
else if (i == 1)
printf(" - x^");
else
printf(" - x^%d", i);
}
else
{
if (i == 0)
printf(" - %d", 0 - num[i]);
else if (i == 1)
printf(" - %dx", 0 - num[i]);
else
printf(" - %dx^%d", 0 - num[i], i);
}
}
}
}
}
printf("\n");
}
system("pause");
return 0;
}