pat乙级 1010 题解

一、整体思路

读入系数-指数对中的系数与指数,将其分别存入相应的系数数组与指数数组,分以下两种情况进行数据处理并输出对应数据

1.输出的一元多项式为零多项式,指数和系数都是 0,也即输入的一元多项式的指数为0且仅含有1组系数-指数对

2.输出的一元多项式不为零多项式,则输出其求导后的多项式的对应数据

二、关键问题

1.如何实现输入数据的读取

2.输出求导后的多项式的其中一个系数-指数对后,在什么情况下会再输出空格符

三、关键问题对应的解决方法

1.使用scanf("%d%c")结合for循环实现每次读入一个数字与其后的字符,当其后字符为\n时退出循环

2.在已经输出系数-指数对的前提条件(该对对应的指数不为0)下,应满足该对不是最后一个系数-指数对且其后仍有指数不为0的系数-指数对(以保证其后还有非零系数-指数对需要输出)

四、数据结构

使用int数组分别存储系数与指数

五、一些小细节

1.输入数据的读取方式值得注意,合理的输入读取方式会大大简化对数据的处理

代码如下:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include <stdlib.h>

int exist_zhishu_not0(int i,int j,int zhishu[1000]);

int main()

{

    int xishu[1000];

    int zhishu[1000];

    int i,j,k;

    for(i=0,j=0,k=0;;i++)

    {

        int number;

        char zifu;

        scanf("%d%c",&number,&zifu);

        if(i%2==0)

        {

            xishu[j]=number;

            j++;

        }

        else

        {

            zhishu[k]=number;

            k++;

        }

        if(zifu=='\n')

        break;

    }

    if(j==1&&zhishu[0]==0)

    printf("0 0");

    else

    {

        for(i=0;i<j;i++)

        {

            if(zhishu[i]!=0)

            printf("%d %d",xishu[i]*zhishu[i],zhishu[i]-1); 

            if(zhishu[i]!=0&&i!=j-1&&exist_zhishu_not0(i,j,zhishu))

            printf(" ");

        }

    }

    return 0;

}

int exist_zhishu_not0(int i,int j,int zhishu[1000])

{

    int k;

    for(k=i+1;k<j;k++)

    {

        if(zhishu[k]!=0)

        return 1;

    }

    return 0;

}


版权声明:本文为qq_44506092原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。