c盘大小计算公式(用C语言进行编程)

本来计划一个暑假多刷一些关于PAT的题目,以及提升一下自己的编程能力。

结果,暑假倒是过去了,也步入研二了,但是这些文章呢,一直迟迟没有写出来。

我感觉非常不好意思,所以,从今天开始,我又回来继续写这些关于编程的文章了。

一方面呢,是为了提升自己的实力,另一方面呢,也是为了让更多小伙伴能跟我一起提升编程技术。

今天这道题目呢,是收录在PAT乙级中的第1010题,也就是一元多项式求导。

题目要求如下:

1、以指数递降的方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数),但这个括号里的内容,其实并无太大作用,其实可以忽略这个,因为在这道题目里,它并没有要求对整数的绝对值进行一个判断。

2、要求以与输入相同的格式来输出结果,也就是输出导数多项式的非零项系数和指数,但是结尾不能有多余空格,以及要特别注意一点:“零多项式”的指数和系数都是0,表示为0 0。

我来根据题目给的例子,来讲清楚这道题目的实现原理。

实现原理分析

c盘大小计算公式(用C语言进行编程)(1)

我一直认为,在正式开始做编程题之前,理清逻辑是非常重要的。

而流程图恰好能帮助我们来理清逻辑。

绘出流程图,理清楚程序逻辑

c盘大小计算公式(用C语言进行编程)(2)

如上图所示,这就是该程序的流程图。

代码实现

根据该流程图,我们就能梳理清楚如何写代码。

1、要输入非零项指数和系数,也就是需要用到一个scanf函数来分别输入指数和系数。

而且是要在循环输入,这里呢因为没有指定输入指数和系数的数量,所以可以用到一个while(1)作为默认值,以及之后进行一个if语句判断,如果回车enter之后,那就退出该循环。

可以用到if(getchar()!='\n')来进行回车输入判断。

2、对零多项式进行一个判断,我们可以注意到,求导之前的一元多项式,是有常数项的,也就是-2x^0,求导之后得到的指数系数分别为0和-1,常数项的导数为0。

还有零多项式的指数和系数都为0,我们只需要考虑系数为0的情况,因为指数为0的时候,这个数就直接为0了。

c盘大小计算公式(用C语言进行编程)(3)

3、这也是我在之前的几篇文章中一直会提到的,就是最后一列没有空格的问题,完全可以新定义一个变量count,然后开始进行记录,如果>0的时候,就输出空格,就是每一次输出之后加上空格,直到最后一次为止是没有空格的。

在做这道题目的时候,我也遇到过许多问题:

错误踩点

比方说我没有对printf("0 0")进行一个额外判断,要注意,这种情况,只有当number2为0的时候,且还要满足一个条件,也就是在输出结果最终为0的时候,不要出现重复的0,也就是需要把0给隐藏。

问题代码部分:

//一元多项式求导 #include<stdio.h> int main(){ int number1 = 0; int number2 = 0; int count = 0; while(1){ scanf("%d %d", &number1, &number2); if(number2==0){//这部分代码是存在问题的,所以需要更改。 printf("0 0"); } if(number2!=0){ if(count>0){ printf(" "); } printf("%d %d", number1*number2, number2-1); count ; } //这里就是需要特别关注的地方了,为什么需要用到count来进行计数,就是为了解决空格 //空格问题需要在这里来进行解决,因为我们在第一次输出结果的时候 //是从最开始开始的,比方说从12 3这样是一对,那么下一对-10 1与这一对之间是有一个空格隔开的 //所以需要用到一个count //至于上面的printf("0 0");部分,就是当count为初始值的时候,也就是不满足count不为零的时候 if(getchar()=='\n'){ break; } } return 0; }

c盘大小计算公式(用C语言进行编程)(4)

c盘大小计算公式(用C语言进行编程)(5)

正确结果与代码实现

//一元多项式求导 #include<stdio.h> int main(){ int number1 = 0; int number2 = 0; int count = 0; while(1){ scanf("%d %d", &number1, &number2); if(number2==0){ if(count==0){ printf("0 0"); } } if(number2!=0){ if(count>0){ printf(" "); } printf("%d %d", number1*number2, number2-1); count ; } if(getchar()=='\n'){ break; } } return 0; }

测试结果

c盘大小计算公式(用C语言进行编程)(6)

c盘大小计算公式(用C语言进行编程)(7)

很显然结果是正确的,但是呢,在具体做题的时候我会遇到许多问题,需要静下心来一点点来解决,最终成功完成这道题目了。

总结

总的来说,这道题目其实难度并不大,但是需要细心细心再细心,不然就会出很多错误,特别是注意用到while循环,以及用条件语句对回车结束循环进行判断。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页