首页 > 编程知识 正文

031010(C语言函数)

时间:2023-05-06 20:22:26 阅读:86894 作者:3346

我计划暑假刷很多关于PAT的主题,然后提高编程能力。

结果,暑假过去了,进入了研二,但这些文章怎么也写不出来。

因为很惭愧,所以从今天开始,我又回去继续写这些关于编程的文章了。

一方面是为了提高自己的实力,另一方面也是为了更多的伙伴和我一起提高编程技术。

今天的主题是PAT乙级收录的1010号主题,也就是一元多项式求指引。

主题要求如下:

虽然用指数函数递减的方式输入多项式的非零项系数和指数(绝对值都在1000以下的整数),但是这个括号内的内容,实际上没有什么效果。 其实可以无视这个。 因为,在这个题目中,没有对整数的绝对值进行一个判断。

2、要求以与输入相同的形式输出结果,也就是输出导数多项式的非零项系数和指数,但最后不能有多余的空格。 另外,请特别注意“零多项式”的指数和系数都为0,为0。

根据主题给出的例子,阐明这个主题的实现原理。

实现原理分析

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

流程图有助于我们整理逻辑。

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

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

代码实现

根据这个流程图,可以整理代码的写法。

1、输入非零项的指数和系数时,也就是说为了分别输入指数和系数,需要scanf函数。

另外,在循环中输入。 这里没有指定输入指数和系数的数量,所以可以使用while(1)作为默认值。 另外,之后进行if语句的判断,返回enter后结束循环。

if(getchar (可以使用!='n ' ) )进行换行输入的判断。

2、如果对零多项式作出一个判断,就会发现导前的一元多项式有常数项,也就是-2x^0,导后得到的指数系数分别为0和-1,常数项的导数为0。

此外,零多项式的指数和系数均为0。 只考虑系数为0的情况。 因为指数为0时,这个数就直接变成0。

3、这是我在之前的几篇文章中一直提到的,是最后一列没有空间的问题。 可以完全重新定义变量count并开始记录。 0时,输出空格。 为每个输出添加一个空格,直到最后没有空格。

做这个题目的时候,我也遇到过很多问题:

错误踩点

例如,我没有对printf('0) )做出附加判断。 请注意。 这种情况必须满足以下条件:只有在number2为0时,且输出结果最终为0时,必须隐藏0,以避免出现重复的0。

问题代码部分:

//一元多项式求导

# #包括stdio.h

int主()。

int编号1=0;

int编号2=0;

int计数=0;

wile(1) {

扫描(' % d % d )、编号1、编号2 );

if(number2==0)//这部分代码有问题,需要更改。

printf('0);

}

if (编号2!=0}{

if (计数0 ) {

printf (' );

}

打印机(% d % d )、编号1 *编号2、编号2-1 );

出局;

//这里是特别值得注意的地方,为什么必须在计数中使用count,是为了解决空间

//空间问题需要在这里解决。 我们最初输出结果的时候

//从开头开始,例如123那样是一对的话,在下一对-10和这一对之间空出空间

//

所以需要用到一个count //至于上面的printf("0 0");部分,就是当count为初始值的时候,也就是不满足count不为零的时候 if(getchar()=='n'){ break; } } return 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){ 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; }

测试结果

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

总结

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。