#include <iostream>
using namespace std;
void print_(int coef, int exp, int flag1, int flag2, int flag3, int flag4) {
if (flag1 == 1)
cout << "-" ;
else if (flag1 == 2)
cout << "+" ;
if (flag2 == 1)
cout << coef;
if (flag3 == 1)
cout << "x";
if (flag4 == 1)
cout << "^" << exp;
}
int main() {
int first = 1;
int arr[100];
int i, n;
int flag1, flag2, flag3, flag4;
cout << "请输入多项式的次数n:\n";
cin >> n;
for (i = 0; i < n + 1; i++) {
cout << "输入各项系数:";
cin >> arr[i];
}
for (i = 0; i < n + 1; i++) {
//给flag1赋值,决定每一项系数前的正负号!
if (first) {
if (arr[i] > 0) {
flag1 = 0;
first = 0;
}
else if (arr[i] < 0) {
flag1 = 1;
first = 0;
}
else{
flag1 = 0;
first = 1;
}
}
else {
if (arr[i] > 0)
flag1 = 2;
else if (arr[i] < 0)
flag1 = 1;
else
flag1 = 0;
}
//给flag2赋值!
if ((arr[i] == 0 || arr[i] == 1|| arr[i] == -1) && (n - i) != 0)
//注意(n-i)=0时arr[i]为最后一项常量!
//此处使用if ((arr[i] == 0 || abs(arr[i] == 1)) && (n - i) != 0)时输入-1时保留了1!错误
// 采用((arr[i] == 0 || arr[i] == 1|| arr[i] == -1) && (n - i) != 0)时正常!why?????
//运行时系数总是1!发现此处错误:abs(arr[i])=0!错误!应使用"=="!!!
flag2 = 0;
else
flag2 = 1;
//给flag3赋值!
if ((n - i) == 0)//系数arr[i]==0时呢?
flag3 = 0;
else
flag3 = 1;
//给flag4赋值!
if ((n - i) == 1 || (n - i) == 0)
flag4 = 0;
else
flag4 = 1;
//若系数均为0则:
if (arr[i] == 0)
flag1 = flag2 = flag3 = flag4 = 0;
//输出多项式!
print_(abs(arr[i]), n - i, flag1, flag2, flag3, flag4);
}
return 0;
}
多项式显示!
最新推荐文章于 2024-09-11 15:28:58 发布