循环

一、PTA实验作业

【7-6、统计素数并求和】

1、PTA提交列表

2.、设计思路

由于1不是素数,所以输入1时要从2开始运算。count为素数个数,sum为素数和,初始都定义为0。外层用i作为循环共(M-N)次,内层用k作为循环共(i-2)次。外层循环提供一个数,内层循环判断所给数字是否为素数,若不是素数则进行下一个数的判断,若是素数则对count加一并将这个素数加入sum中。最后输出count和sum。

3、本题代码

4、本题调试过程碰到问题及PTA提交列表情况说明

错误点:1、判断素数条件不明导致循环无法结束

    2、未考虑M=1时的情况

【7-16 小于m的最大的10个素数】

1、PTA提交列表

2、设计思路

输入m的值后将num定义为0,运用循环嵌套,外层循环提供实数,内层循环判断该数是否为素数,若不是判断下一个数,若是输出并给num加一,当num为10时结束程序。

3、本题代码

4、本题调试过程碰到问题及PTA提交列表情况说明

错误点:1、循环条件不明导致循环无法跳出

    2、输出格式错误,应为%6d

【7-22 求组合数】

1、PTA提交列表

2、设计思路

定义fact函数,通过从1开始的循环相乘计算给定常数的阶乘值并返回;主函数输入m和n的值后调用fact函数经行x值的计算,最后输出x。

3、本题代码

4、本题调试过程碰到问题及PTA提交列表情况说明

错误点:1、未考虑用函数导致程序冗长,出错多而且无法运行

    2、fact函数用于计算阶乘,为避免数字过大应用double定义,与主函数中x一致

    3、输出格式没有注意空格,而且要用%.0f输出x的值

二、同学代码结对互评

  互评同学:廖祥祥

  互评题目:7-16

  代码比较:

              

左侧为廖祥祥同学的代码,右侧为我的代码。我们对于跳出循环的方式不同,我的比较直接易懂,祥祥的比较简洁明了。相比起来我更喜欢廖祥祥同学的代码风格。

三、PTA最后排名

四、学习总结

  1、学会了用while,for进行循环

    掌握了循环的嵌套

    学习如何用switch进行选择

  2、不足:对switch的用法不熟练

      对goto的用法不熟练

      对循环嵌套仍有一定疑问,如内外层循环的循环条件,break的使用,何时跳出循环等

  3、不会的题目:7-8,7-9,7-18,7-24,7-34

函数

 

一、PTA实验作业

 

【7-3 求幂之和】

 

1、本题PTA提交列表

 

 

2、设计思路

 

 

输入n后运用循环,计算2的i次方以及加起来的合,最后输出y。

 

3、本题代码

 

 

4、本题调试过程碰到问题及PTA提交列表情况说明

 

错误点:1、对math函数调用不熟练

 

    2、输出格式错误,等号前后有空格

 

    3、没有运用函数

 

【7-4 验证“哥德巴赫猜想】

 

1、本题PTA提交列表

 

 

2、设计思路

 

 

定义js函数,判断给定数是否为素数,若是返回k=1,若不是返回k=0。运用主函数中循环依次找给定偶数的两个素数和,若符合判断条件直接输出并跳出循环。

 

3、本题代码

 

 

4、本题调试过程碰到问题及PTA提交列表情况说明

 

错误点:1、break使用不当导致循环无法跳出

 

    2、输出格式错误,等于号和加号前后都有空格

 

 

 

【7-8 求n以内最大的k个素数以及它们的和】

 

1、本题PTA提交列表

 

 

2、设计思路

 

 

输入m与k,定义num=0,flag=0。运用循环嵌套,外层循环提供实数,内层循环判断所给实数是否为素数,若为实数则判断i与x是否相等,若不等则继续外层循环,若相等则判断flag值是否为零,以此来控制输出格式,最后用num控制外层循环跳出。循环结束后再进行输出完成程序。

 

3、本题代码

 

 

4、本题调试过程碰到问题及PTA提交列表情况说明

 

错误点:1、没有利用flag控制输出导致输出格式错误

 

    2、外层循环条件错误导致循环无法跳出

 

    3、没有运用函数

 

二、同学代码结对互评

 

  互评同学:吴旷麟

 

  互评题目:7-3

 

  代码比较:

 

         

 

左侧为我的代码,右侧为吴旷麟同学的代码。可以看出我俩的思路大致相同,但是他运用函数解决问题,比较方便。相比之下我更喜欢吴旷麟同学的方式。

 

三、PTA最后排名

 

 

四、本周学习总结

 

  1、学会了如何使用子函数来写程序

 

    局部变量和全局变量的用法和作用范围

 

  2、不足:对在子函数中调用别的子函数还不熟练

 

        对静态变量的使用还有疑惑

 

        对一些特殊子函数情况处理不熟练,如有多种结束函数途径的话,多个return应如何写

 

  3、不会的题:7-2,7-9

数组

 

一、PTA实验作业

 

【7-1 数组元素循环右移问题】

 

1、本题PTA提交列表

 

 

2、设计思路

 

 

先通过循环给数组赋值,然后运用循环嵌套,外层循环m次并给k赋值,最后给a[0]赋值,内层循环将每一个数向后移动一位。整个循环将每一位数向后移动一位并把最后一位移至第一位。最后通过循环输出移动后的数组。

 

3、本题代码

 

 

4、本题调试过程碰到问题及PTA提交列表情况说明

 

错误点:1、嵌套循环条件及赋值错误导致数组移位错误

 

    2、忽略”序列结尾不能有多余空格“,导致输出格式错误,将最后一个数分开输出即可

 

【7-6 冒泡法排序】

 

1、本题PTA提交列表

 

 

2、设计思路

 

 

输入N,K后,通过循环输入数组,后运用循环嵌套,外层循环确定循环次数为K次,内层循环依次判断相邻两个数的大小并把大的那个数放在后面。当循环结束后用循环输出排序后的数组。

 

3、本题代码

 

 

4、本题调试过程碰到问题及PTA提交列表情况说明

 

错误点:1、外层循环条件出错导致循环次数过多

 

    2、忽略”尾不得有多余空格“导致输出格式有误

 

【7-12 选择法排序】

 

1、本题PTA提交列表

 

 

2、设计思路

 

 

通过循环输入数组,运用循环嵌套,外层循环确定循环次数(n-1)并对x赋值k,内层循环通过依次比较相邻两数确定最大数的下标并赋值给x,之后外层循环进行a[x]与a[k]的交换,进行(n-1)次后完成排序。最后通过循环输出排序后的数组。

 

3、本题代码

 

 

4、本题调试过程碰到问题及PTA提交列表情况说明

 

错误点:1、没有在内层循环之前给x赋值,导致交换出错。外层循环内内层循环之前需再定义一个x,然后才能完成两个数的交换

 

    2、忽略"行末不得有多余空格",导致输出格式出错

 

二、同学代码结对互评

 

  互评同学:吴振迪

 

  互评题目:7-6

 

  代码比较:

 

 

左侧为吴振迪同学的代码,右侧为我的代码。可以看出我俩的思路大致相同,但是最后的输出方式不同,吴振迪的比较简明直接,我的比较繁琐易懂。相比之下我更喜欢吴振迪的方式。

 

三、PTA最后排名

 

 

四、本周学习总结

 

  1、学习了一维数组、二维数组的定义与运用,并熟练掌握

 

    了解了应对不同种类的数组题型时的处理方法

 

    学习了对于string函数中strcpy()、strcmp()、strcat()、strlen()的运用

 

  2、不足:string使用仍不熟练,容易写错导致程序出错

 

  3、不会的题:7-7,7-15,7-16,7-25,7-28,7-29,7-30