#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100void DisPlay(int a[MAXSIZE], int n, int first, int flag1, int flag2, int flag3, int flag4); // a[] 系数 , flag1 正负 , flag2 是否显示系数 , flag3 是否显示 X ,flag4 是否显示指数int main(void) { int n; // n 为最高项数 int flag1, flag2, flag3, flag4; int a[MAXSIZE]; while (scanf_s("%d", &n) != EOF) { fflush(stdin); int i; for (i = 0; i <= n; i++) { scanf_s("%d", &a[i],sizeof(a[i])); fflush(stdin); } int first; first = 1; for (i = 0; i <= n ; i++) { if (first) { flag4 = 1; flag3 = 1; flag2 = 1; flag1 = 1; if ((abs(a[i]) == 1) && (i != n)) flag2 = 0; if (i == n) { flag3 = 0; flag4 = 0; } if (a[i] < 0) { flag1 = 2; } if (a[i] == 0) { flag4 = 0; flag3 = 0; flag2 = 0; flag1 = 0; } DisPlay(a[i], n - i, first, flag1, flag2, flag3, flag4); first = 0; } else { flag4 = 1; flag3 = 1; flag2 = 1; flag1 = 1; if ((abs(a[i]) == 1) && (i != n)) flag2 = 0; if (i == n) { flag3 = 0; flag4 = 0; } if (a[i] < 0) flag1 = 2; if (a[i] == 0){ flag4 = 0; flag3 = 0; flag2 = 0; flag1 = 0; } DisPlay(a[i], n - i, first, flag1, flag2, flag3, flag4); } } for (i = 0; i <= n; i++) { a[i] = 0; } } return 0;}void DisPlay(int coeff, int n, int first, int flag1, int flag2, int flag3, int flag4) { if (first) { if (flag1 == 2) printf("-"); if (flag2 == 1) printf("%d", coeff); printf("%c", 'X'); printf("^%d", n); } else { if (flag1 == 1) printf("+"); else if (flag1 == 2) { printf("-"); } if (flag2 == 1) { printf("%d", coeff); } if (flag3 == 1) printf("%c", 'X'); if (flag4 == 1) printf("^%d", n); }}