POJ1555解题报告

来源:互联网 发布:双防火墙网络环境搭建 编辑:程序博客网 时间:2024/06/11 05:00

思路:方法很笨,一项一项判断,但有一点需要注意那就是输出的时候的第一项,虽然题目说'+'和'-'前后都有空格,但若第一个字符为负的时候,'-'的前后是没有空格的.

编程语言: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;
}



0 0
原创粉丝点击