7-16 一元多项式求导(20 分)(有关while(scanf(\"%d\",&n)!=EOF))

旧街凉风 提交于 2019-11-29 19:33:11

 

7-16 一元多项式求导(20 分)

 

设计函数求一元多项式的导数。

输入格式:

以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

输出格式:

以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0 

 

解题思路:1.一开始还以为这道题蛮简单的,刷刷刷就写了个用数组做的,然后有一个测试点运行超时

                  2.然后就换了一边输入一边输出,但是还是有个测试点:“无常数项的一般情况 ”通不过,然后在网上找了别人的代码

                    我发现他们都有写一句  while(scanf("%d",&n)!=EOF)  这丫什么鬼,然后又去网上找了

scanf的返回值由后面的参数决定

 

scanf("%d%d", &a, &b);

 

如果a和b都被成功读入,那么scanf的返回值就是2

 

如果只有a被成功读入,返回值为1

 

如果a和b都未被成功读入,返回值为0

 

如果遇到错误或遇到end of file,返回值为EOF

这句话主要解决

“测试输入包含若干测试实例。当N为0时,输入结束,该实例不被处理。”

                     好吧,其实还是有一些不懂,暂且先记着吧

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main()
 5 {
 6     int xi,zi;  //系数,指数
 7     int flag=0;
 8     while(scanf("%d %d",&xi,&zi)!=EOF){
 9         if( zi ){
10            if( flag )
11                 printf(" ");  //如果不是第一个数就先输出一个空格
12            else
13                 flag =1;
14            printf("%d %d",xi*zi,zi-1);
15         }
16         else break;
17     }
18     if( flag==0 ){
19         printf("0 0");
20     }
21     return 0;
22 }

 

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!