1010 一元多项式求导 (25 分)
设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1。)
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0
。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
这道题目不难,但是刚开始的零多项式困惑了我好久(数学太菜!),上网查了一下:原来零多项式就是结果为0的多项式。这个概念搞清楚
后就简单多了。另外还有输入时读取数据的问题,用Ctrl+Z表示文件结束符EOF。
如何告诉程序输入已经结束了呢?
在Windows下,输入完毕后先按Enter,再按Ctrl+Z键,最后再按Enter键即可结束输入。
在Linux下,输入完毕后按Ctrl+D键即可结束。
我的思路:计算系数coe与ind的成绩,如果为0则不输出;否则输出导数形式coe*ind ind-1。另外要注意每次输出时要判断是否为第一次输出
(与题目要求输出格式相符合)。最后判断一下是否有输出,如果没有输出,则给定的多项式的导数项为零多项式。
#include <bits/stdc++.h> using namespace std; int main() { int coe,ind; bool flag=false; //表示是第一次输出 while(cin>>coe>>ind) { if(coe*ind!=0) { if(flag) cout<<" "; cout<<coe*ind<<" "<<ind-1; flag=true; } } if(!flag) //没有输出过 cout<<"0 0"<<endl; return 0; }
拓展:如果在while循环中连续输入一组数据后用Ctrl+Z表示本次输入完成后,程序还要继续输入数据式,我们应该怎样设计输入输出框架?
answer:
#include <bits/stdc++.h> using namespace std; int main() { int coe,ind; while(cin>>coe) { cout<<coe<<" "; } cin.clear(); //这个要加上,将上次读入的Ctrl+Z删除。 cin>>ind; cout<<"***"<<ind<<endl; return 0; }
以上代码就可以解决!关于输入输出以后再作进一步总结……