PTA实验报告(循环 数组 函数)

一.循环PTA实验作业

题目一.7-2 求平方根序列前N项和

1.本题PTA提交列表

2.设计思路

本题调用了sqrt数学函数计算平方根,其次只用了一层循环,计算平方根之后使用循环累加计算总和sum。

借助了中间值item去接收每一次的平方根值,再将其累加到sum中。

程序较为简单明了,使用for循环较为简单。

3.本题调试过程碰到问题及PTA提交列表情况说明。

 

 (1) for循环使用错误。

因为for语句只控制紧跟其后的一条语句,

而在第一次的提交过程中没有在for语句后加中括号,

没有将for语句后的循环括起来,这就导致了答案错误。

(2)格式错误。

PTA是一个很严谨的平台,这次的错误我找了很久经过同学的提醒知道,在输出的时候格式错误。

在输出的时候sum后应加一个空格,“=”后也应加一个空格,这样再次提交就对了。

这个错误警醒自己一定要按照题目要求去做,要仔仔细细地读懂题目。

4.代码截图。

 题目二.7-7 计算阶乘

1. 本题PTA提交列表

2. 设计思路

本题使用了两层循环。

外循环用来将每次的阶乘累加在sum中,内循环用来计算阶乘值记录在item中。

在外循环里有一个非常重要的就是对每次的item赋初值,以免上次的item值仍然存在而导致答案错误。

外循环和内循环嵌套使用是一个重要的关于循环的知识点。

3.本题调试过程碰到问题及PTA提交列表情况说明。

本题由于在Dev中修改运行了直接复制粘贴在PTA上,所以没有什么较大的错误。

由于粗心而在Dev中出现了如下错误:

经过检查后发现,字母拼写出错了。此后还出现了很多类似的错误,总结出关于这种错误一般是由于单词拼写出错。

4.代码截图。

题目三.7-32 求1到100的和

1.本题PTA提交列表

2. 设计思路

使用一层循环将一到一百累加起来,储存在sum中,最后输出。

本题是较为简单的循环体,但还是要细心去做。

3.本题调试过程碰到问题及PTA提交列表情况说明。

(1)由于粗心导致答案错误。

本题刚开始提交错误,自己找了半天没找出来错误,在Dev上也没有提示。

又提交了第二次还是答案错误,我找了同学帮我查找了一下错误,printf语句中出现错误。

  printf("sum = %d",&sum);

sum前不应加&,由于粗心打了上去,在寻找错误中浪费了很长时间。

所以,以后在打代码的时候一定要细心,一方面为了正确性,另一方面为了防止浪费时间。

 二、同学代码结对互评

1.互评同学:朱佳楠

2.我的代码、互评同学代码截图

朱佳楠同学的代码:

我的代码:

3.我和朱佳楠同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?

不同在于:朱佳楠同学使用的是while循环,我使用的是for循环。

各自优势:朱佳楠同学的代码更加简洁,在变量的定义中只用了一个字母,这样出错率很低。如果在变量的定义中变量的名称太长的话会导致在之后的查错中浪费很多时间。

我更喜欢朱佳楠同学的代码。

三、截图本周题目集的PTA最后排名。

四、本周学习总结(2分)

1.我学会了简单的循环结构去编写程序,还掌握了一些循环嵌套的使用。

2.本周的内容,你还不会什么?

如果程序中要求三个三个以上的循环结构会有些吃力,对有些题目还是不会写。

比如7-28 7-31 7-34等题目都不会写。

3.循环结构考试总结

(1).哪题做错了,怎么改?

7-6这道题是部分错误。

具体的原因还不知道。准备再多问几个同学或者老师看看如何修改。

(2).考试结果满意么,怎么改进?

较为满意,尽力就好。

希望自己还是要多看书多打代码。

 

 

二.数组PTA实验作业

题目一.7-1 数组元素循环右移问题

1.本题PTA提交列表

2.设计思路

使用数组去储存一个数列,进而再用数组的性质去完成题目要求。

本题做了挺长时间的,刚开始一直想用一个循环去完成右移,不管怎么样都不对。

后来再想了想,用两个循环来实现右移会比较容易。

使用内循环完成右移一次,再用外循环来实现题目所要求的循环右移n次。

而且在内循环中,使用递减比累加更加容易,用item接受a[n-1]的值,在内循环结束的时候将item的值赋给新组成数组的a[0]。

3.本题调试过程碰到问题及PTA提交列表情况说明。

(1).段错误。

刚开始一直不知道错在了哪里。后来经过搜索知道段错误一般就是给系统预留的空间不够题目所要求的储存空间的大小。

刚开始定义了整型数组a[10],后来改成a[100]就正确了。

其实在后来学了动态分配空间之后,如果使用动态分配空间就不会有这样的问题了。

(2).在题目完成后,我想试试在内循环中如何用累加的方式而不是递减的方式去实现右移一次,发现很麻烦而且答案错误,最终还是采用了递减的方式。

4.代码截图。

题目二.7-4 查找整数

1. 本题PTA提交列表

2. 设计思路

使用数组储存N个整数,再在数组中使用for循环寻找与x相等的数,如果找到就输出其在数组中的下标i,然后退出循环。

如果没找到就输出"Not Found"。

3.本题调试过程碰到问题及PTA提交列表情况说明。

本题出没有太大的错误,有些小错误在Dev上调试过之后直接复制在PTA上了。

在画流程图的时候发现在代码中定义的flag可以省去,在找到x的值的时候直接输出下标然后退出循环,如果没找到,i的值一直进行累加,当累加到n的时候直接输出"Not Found",就无需flag的存在了,代码也会很简洁一点。

4.代码截图。

题目三.7-10 矩阵运算

1.本题PTA提交列表

2. 设计思路

 本题使用了二维数组,这是数组应用中最重要的一部分。

使用二维数组去输入一个n阶矩阵,在使用数组的性质,进而使用for循环进行计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和,累加在sum中,最后输出sum的值。

3.本题调试过程碰到问题及PTA提交列表情况说明。

 (1)break使用错误。

第一次使用了if语句去判断是否为副对角线元素,如果是就退出循环,这就导致了答案错误。

后来经过与同学讨论没有使用break语句,使用if语句,如果累加到副对角线元素则sum的值不变,即语句sum=sum。答案正确。

4.代码截图。

 

二、同学代码结对互评

1.互评同学:王慧婷

2.我的代码、互评同学代码截图

王慧婷同学的代码:

我的代码:

3.我和王慧婷同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?

不同在于:王慧婷同学代码是将矩阵除最后一列和最后一行以外的所有元素累加起来,再减去副对角线上的元素。

而我的代码是分类累加起来。

各自优势:王慧婷同学的代码用了另一种思路将代码更加简洁一些。

我更喜欢王慧婷同学的代码。

三、截图本周题目集的PTA最后排名。

 

四、本周学习总结(2分)

1.我学会了简单的数组去编写程序,还掌握了一些二维数组的使用。

2.本周的内容,你还不会什么?

如果是较为简单的二维数组程序我还可以较好的完成,稍加一些难度的二维数组完成的时候就很困难。

还有很多题目不会:7-5,7-7,7-8,7-9,7-11,7-13,7-15,7-16,7-17,7-19,7-20,7-23,7-24,7-25,7-27,7-28,7-29,7-30

3.数组考试总结

(1).哪题做错了,怎么改?

7-17这道题是部分错误。

具体的原因还不知道。准备再多问几个同学或者老师看看如何修改。

(2).考试结果满意么,怎么改进?

不满意,有很多题目没做,希望自己有时间去做一做。

 

 

三.函数PTA实验作业

题目一.7-1 求组合数

1.本题PTA提交列表

2.设计思路

本题使用了两个函数调用结构。

第一个ans(y,z) 函数的调用是为了简单地实现求组合数的公式计算,进而将计算结果储存在ans中,最后返回值。

​​第二个fact(x)函数的调用是为了计算球组合数公式计算中简单的阶乘,在计算阶乘的时候使用函数,让代码能够重复利用子函数计算,进而将计算结果储存在jc中,最后返回值。

两个函数的调用使代码简洁明了,这就体现了函数应用的重要性。

3.本题调试过程碰到问题及PTA提交列表情况说明。

 

(1).函数类型定义出错。

题目明确要求,计算阶乘的fact 函数类型为double,而我由于粗心将其类型定义为int,导致答案部分错误。

而且在调试中浪费了很多时间,重复提交了很多次。

4.代码截图。

题目二.7-3 求幂之和

1. 本题PTA提交列表

2. 设计思路

本体是较为简单的函数调用的题目。

调用函数mi(n)计算2的幂之和,在子函数中简单地实现了2的幂次方的累加,进而将累加值储存在sum中,最后返回值。

3.本题调试过程碰到问题及PTA提交列表情况说明。

 本题由于在Dev上已经调试好直接复制在PTA上,没有错误。

但是在Dev的调试中我发现自己还是很粗心,某些语句没有分号,字母拼写出错之类的问题等等,还是要勤加练习,也要更加细心。

4.代码截图。

题目三.7-5 近似求PI

1.本题PTA提交列表

2. 设计思路

本题代码的基本框架没什么问题,但由于其中计算复杂还是有一点难度。

在主函数的基本框架下调用了函数pi(eps)实现了近似求PI/2的公式,进而将值储存在pi中,返回pi的值到主函数中要乘2,最后输出PI的值。

在子函数实现近似求PI/2的时候分子和分母的计算较为复杂,我们就将其分开计算使计算过程简单明了了很多。

3.本题调试过程碰到问题及PTA提交列表情况说明。

(1)逻辑分析出错。

在子函数的调用中,循环体语句中的item>x错误。

题目中要求最后一项小于给定精度eps,而子函数调用时的x就是eps,所以根据题目要求将item>x改成item<x即可。

(2)没有保留小数点后五位。

又是由于粗心没有认真审题,题目明确要求保留小数点后五位,我却视而不见,导致答案错误。

希望自己以后打代码一定要细心再细心!

4.代码截图。

二、同学代码结对互评

1.互评同学:高涧薇

2.我的代码、互评同学代码截图

高涧薇同学的代码:

我的代码:

3.我和高涧薇同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?

不同在于:高涧薇同学只调用了一次函数,而我调用了两次函数。

各自优势:高涧薇同学的代码更加简洁明了,她只调用了一次函数。我调用了两次函数,虽然在练习中可以多练习函数的调用,但就实用意义来说高涧薇同学的代码更好。

我更喜欢高涧薇同学的代码。

三、截图本周题目集的PTA最后排名。

四、本周学习总结(2分)

1.我学会了如何使用函数调用去编写程序,还了解了一些递归调用的使用。

2.本周的内容,你还不会什么?

对于老师后来补充的递归调用实在是难以理解,还有PTA上一些题不会做。

比如7-2,7-4,7-6,7-7,7-8,7-9,7-11题目都不会

3.函数考试总结

(1).哪题做错了,怎么改?

7-8这道题是答案错误。

自己尝试了很多遍还是答案错误,找老师同学问问尽快把这道题做出来。

(2).考试结果满意么,怎么改进?

较为满意,尽力就好。

希望自己可以细心一些,答案错误的概率以粗心居高不下,不管做什么一定要细心。

希望自己还是要多看书多打代码。

posted @ 2017-12-30 09:12  Doriso  阅读(1172)  评论(0编辑  收藏  举报