PAT 乙级 1010 C语言

来源:互联网 发布:怎样在u盘上编程 编辑:程序博客网 时间:2024/06/06 04:46

1010

题目:一元多项式求导 (25)

设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)
输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔
输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例
12 3 -10 1 6 0


注意:要特别注意如果结果是“零多项式”,需要输出“0 0”
难点:判断输入结束 ( 因为没有给出输入数据的个数)
思路
* 循环:
{
…….. 系数= 系数 * (指数-1)
…….. 指数 -= 1
…….. if(系数不为0) 输出
…….. 判断循环是否结束(下一个字符是否为‘\n’)
}
*如果是零多项式(没有非0系数),输出“0 0”

代码入下:

#include<stdio.h>#include<stdbool.h>int main(void){        int fac,exp;        char ch;        _Bool isFirst = true;        while(scanf("%d %d",&fac,&exp))        {                   fac *= exp;                exp -= 1;                if(fac)                {                        if(isFirst)                        {                                printf("%d %d",fac,exp);                                isFirst = false;                        }                        else                                printf(" %d %d",fac,exp);                }                //如果输入流中下一个字符是'\n',结束输入                if(ch = ungetc(getchar(),stdin)=='\n')                        break;        }        if(isFirst)                printf("0 0");        printf("\n");        return 0;}

小结
  ungetc(int ch, FILE * stream)函数可以把一个(或多个)字符退回到stream指针代表的文件流中。
这个小技巧可以帮助我们查看文件流中的下一个字符,从而决定相应的操作(比如结束输入)

原创粉丝点击