多项式输出

it2022-05-05  153

题目: 心得:第二次遇到这道题了,所以需要好好对待。之前是畏难心理,觉得很麻烦,时过境迁,心态有了很大的改变,虽然实力并没有很大的提高。但是我会继续加油的。

/* 日期:2019.7.18 题目:多项式输出 作者:城主 思路:输入第一个数来确定最高阶数,先用数组 保存每一阶数的系数,现在主要是考虑输 出的多种情况对系数的讨论,按照题目的 规则输出。 */ #include<iostream> using namespace std; int main() { int array[101]={0}; int n; cin>>n; int i=0,j=0; for(i=0;i<=n;i++) { cin>>array[i]; } for(i=0,j=n;i<n,j>=1;i++,j--)//不把指数n=0考虑进去 { if(i==0&&array[i]!=0)//第一项不为0, { if(j==1)//考虑指数为1 { cout<<array[i]<<"x"; } else { cout<<array[i]<<"x^"<<j; } continue; } if(array[i]==0)//系数为0 { continue; } if(array[i]!=0)//系数不为0 { if(array[i]>=1)//正数情况 { cout<<"+"; if(array[i]>1)//系数不为1 { cout<<array[i]; } if(j==1) { cout<<"x"; } else { cout<<"x^"<<j; } continue; } else//负数情况 { if(array[i]<-1)//系数不为-1 { if(j==1)//指数为1 { cout<<array[i]<<"x"; } else { cout<<array[i]<<"x^"<<j; } } else { cout<<"-"<<"x^"<<j;; } continue; } } } if(array[n]!=0)//常数项 { if(array[n]>0) { cout<<"+"<<array[n]; } else { cout<<array[n]; } } cout<<endl; return 0; }

第一次的思路,没有AC,所以需要找理由。感觉好像行数太多了。既然是模拟题,可以采用边输入边判断的方式。缩短代码,使思路清晰一些。 以下为修改后的文稿,接受不完美,才会有美丽。

/* 日期:2019.7.18 题目:多项式输出 作者:城主 思路:输入第一个数来确定最高阶数, 学会从最简单情况分析。 */ #include<iostream> #include<cmath> using namespace std; int main() { int num; int sum; cin>>sum; int i=0; char c; for(i=1;i<=sum;i++) { cin>>num; if(num==0) continue; c=(num>0)?'+':'-';//确定符号 if(i>1||(i==1&&num<0)) cout<<c; num=abs(num); if(num>1) cout<<num;//系数不为1 cout<<"x"; if((sum-i+1)>1) cout<<"^"<<sum-i+1;//指数不为1 } cin>>num;//常数项 if(num!=0) { c=(num>0)?'+':'-';//确定符号 num=abs(num); cout<<c<<num<<endl; } return 0; }

最新回复(0)