浙大C语言慕课的题目,需要考虑多项式输出的各种特殊情况。
/*
* 这个题目应该用%+d这种方式显示正负号。
*
*
*/
#include <stdio.h> int main(void) { //系数和幂 int a, n; //最大的幂 int maxN; //用来统计多项式的个数 int cnt; //定义一个数组,元素索引作幂,元素值作系数 int num[101] = { 0, }; cnt = 0; // while (cnt < 2) { scanf("%d %d", &n, &a); //如果某个幂次的系数为0,就不出现在输入数据中了 if (n != 0 && a == 0) { continue; } num[n] += a; if (n == 0) { cnt++; } } maxN = 0; for (int i = 100; i >= 0; i--) { if (num[i] != 0) { maxN = i; break; } } for (int i = maxN; i >= 0; i--) { //结果为0 if (maxN == 0 && num[0] == 0) { printf("0 "); break; } //系数不为0 if (num[i] != 0) { //最高幂前没有“+”号,系数为负数自带运算符,系数为正数时,加上“+”号 if (i != maxN && num[i] > 0) { printf("+"); } if (i > 1) { //系数不为1的情况 if (num[i] != 1) { printf("%d", num[i]); } printf("x%d", i); } else if (i == 1) { if (num[i] != 1) { printf("%d", num[i]); } printf("x"); } else { printf("%d ", num[i]); } } } return 0; }