循环

题目1:7-10 打印沙漏

1.PTA提交列表

2.设计思路

先将沙漏最中间的一行的固定的一颗星扣掉,再把所需用到的其他星星上下成对的减去,算出最后余下的星数。再把沙漏上下看成对称图形,上半部分每行依次减少两个星,而增加一个空格符,而且题目恰好第一行的星数恰好等于沙漏的总行数,每输入完当行的最后一颗星要换行,下半部分与上半部分相反,可利用绝对值来实现循环。

3.代码截图

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

 

 

一开始第一个for循环语句的小于号后多打了个等号,程序多循环了,导致沙漏形状不对。

 

题目2:7-29 打印九九乘法表

1.PTA提交列表

2.设计思路

本题较上题来说较为简单,只需要使用循环嵌套,将乘法表的行和列一起表示。

3.代码截图

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

 

刚开始不理解题目中的“其中等号右边数字占4位、左对齐。”。所以导致格式错误。

 

题目3:7-15梅森数

1.PTA提交列表

2.设计思路

本题需使用<math.h>来进行乘方,运用循环嵌套的和判断来筛选素数,使i=2为初值,不能为1,否则后面循环直接跳出,并在i循环用不断取余来判断,当j等于meisen时,那么这个数将不是素数,否则是。如果遇到素数那么则count加上1,如果大循环到最后,count仍然为0,则输出None,每输出一个数之后都要回车换行。

3.代码截图

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

 

画蛇添足地将if(meisen<=meisen_max)后面多添加了个减1使得一些临界条件的值取不到,(如:输入3的时候正确答案是3和7,而错误答案变为只有3)。

 

三、同学代码互评

1互评同学名称:

我的代码

互评同学代码

我的代码比较投机取巧,直接用教过的数学方法进行运算。

而世坤的代码则十分符合题目要求,并且使用了子函数进行运算。

我的代码简单,而世坤的代码更加有水平。

相比较而言我觉得世坤的代码更好。

 

最终排名:

 学习总结

1、学会了基本的函数。

2.使用continue和break.

continue:直结束当下的循环,进入下一次循环.

break:直接跳出当前循环

多重嵌套只对最近的的循环体有效

3.switch语句。

(1):一般形式为

(2)switch(表达式){

case 常量表达式1:语句段1;break;

case 常量表达式2:语句段2;break;

... ...

case 常量表达式n:语句段n;break;

default 语句段n+1;break;
}

4.循环嵌套(最重要):

用while进行循环:while(表达式)语句,当表达式为非0值时,执行while语句中的内嵌语句。特点是先判断表达式,后执行语句.

用for进行循环:如for(i=0;i<3;i++)i=0是初始化部分;i<3是循环判断条件部分(当满足此条件时才进入执行for循环中的语句);i++是执行完循环体语句后的操作。

我觉得要是知道 循环次数 可以 用for,
要是不知道循环的次数,但是知道循环的终止条件 , 则用while.

自我评价

对于一些基本的题目以及循环嵌套能有较为清晰的思路,但有时循环嵌套内的代码仍会有问题,对于较难题还是比较无能为力。

仍需研究的题目:7-8,7-9,7-38,7-39

 

 

数组

 

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

 

1、程序提交列表

 

 

2、设计思路

 

此题目需要将数组右移b次,先将数组最后一个数提出来,赋值给last,再将上一个值依次赋给下一个,再将last的值赋给第一个数,实现一次右移。将此过程循环k次,就能实现数组的右移。每次循环时,在除了最后一个数之后输出空格。

 

 

3、代码截图

 

 

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

 

 

没注意最后一个数后面没有空格。

 

 

 

题目二: 7-5 英文单词排序

 

1、程序提交列表

 

 

2、设计思路

 

调用<string.h>的strlen计算出各个单词长度,再将各个单词按冒泡排序法进行排序。

 

 

3、代码截图

 

 

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

 

 

直接在while执行循环条件,循环无法跳出,

 

改正后,仍有错误:先进行i++再跳出,与正确地先跳出而不多进行一次i++也有不同,最后导致部分单词变成乱码。

 

 

 

题目三:7-20 输出GPLT

 

1、程序提交列表

 

 

2、设计思路

 

先用strlen或者while计算出句子长度k,循环k次,每次遇到GPTL(gptl)时分别加上去后跳出,分别统计出GPTL(gptl)的个数,然后依次输出GPTL,当GPTL都为0时跳出循环。

 

 

 

3、代码截图

 

 

 

4、本题调试过程碰到的问题及Pta提交列表情况

 

 

 

 

粗心将题目GPTL的顺序弄乱。

 

 

 

二、本周目集的pta最后排名

 

 

 

 

三、同学代码结对互评

 

1、互评同学:黄世坤

 

2、我的代码

 

 

黄世坤的代码

 

 

3、我和他的都能快速的出结果。我的代码只用一个数组,世坤的代码运用了两个数组。

 

 

 

四、本周学习总结

 

1、我学会了

 

数组
1、数组元素下标可以是任何整型常量、整型变量或任何整型表达式。 
2、可以对数组元素赋值,数组元素也可以参与运算,与简单变量一样使用。 
3、使用数值型数组时,不可以一次引用整个数组,只能逐个引用元素。
字符型
1、较为熟练的使用strcmp,strlen,strcpy,strcat;
2、使用gets、puts更快捷的输入跟输出

 

 

 

2、不足

 

7-7,7-9,7-15,7-16,7-25,7-28,7-29还需研究

 

对于字符串题目没有数字类题目熟练。

 

 

 

 

函数

题目一:7-3 求幂之和

1、

程序提交列表

2、设计思路

先输入n,让一开始sum为0,每次循环sum加上2^i,每次循环i+1,当i>n的时候退出循环。

3、代码截图

4、本题调试过程碰到的问题及pta提交列表情况

没注意题目的输出格式要把“result = ”包含在内。

 

 

题目二:验证“哥德巴赫猜想”

1、程序提交列表

(总是有一步弄不对,在后面有提到)

2、设计思路

先输入整数num,设两个素数为p和q,使p=2为初值,并在p的循环中添加i=2(不能为1,否则后面循环直接跳出),让p不断除以i取余,每次循环i都加1,当i=p时,都没有跳出循环,则该p是一个素数,q为num减去p得到,同样拿q做之前p的循环,当k(初值为2,理由同i)=q时,则q也是素数,若q判断出来不为素数,则让p继续加一,进行上述运算。最后输出结果。

3、代码截图

4、本题调试过程碰到的问题及pta提交列表情况

这项错误只有在pta上出现,当num为2*10^8时,结果不对,但在devc++上可以算出。

 

 

题目三: 7-6 圆形体积计算器

1、程序提交列表

2、设计思路

先输入n=1或2或3判断进行哪一种体积运算,再利用3个子函数分别进行体积运算,除了输入的n不是1、2、3,否则程序结束。

 

3、代码截图

4、本体调试过程碰到的问题及pta提交列表情况

 

定义 pi的小数点位数太少,(这里有参考网上的错误分析,因为pta上的错误点与此不符)。

 

二、pta最后排名

 

三、同学代码结对互评

1、互评同学名称

曾钰尧

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

我的代码:

 

同学代码:

两个人的代码在判断素数这一部分基本上思路都一样。

我在输出的时候如果这是第一个数(count=1)就只需输出该数,当后续数(count!=1)则输出“+”以及该数,同时count每加一次,sum进行一次累加。

钰尧输出的时候如果该数不是最后一个数的话(count<n-1),当count=n-1(即最后一个数),输出“该数=sum”。

两种方法不好说明哪种有优势,但我还是更喜欢和习惯自己的1输出方式。

 

四、本周学习总结

1、我学会了:

1、熟练地运用子函数解决问题,正确地运用子函数能提高函数的利用效率。

2、分清了实参(在运行时把值传递给函数)和形参(通知系统要预留内存位置),两者应一一对应。

3、return是个好东西,返回值,这个返回值是和函数的类型有关的,函数的类型是什么,他的返回值就是什么.

4、开始使用static静态变量,在编译时赋初值,每次调用时不在赋初值,只保留调用结束时变量的值。

 

2、本周的内容我还不会的:

1、对于递归函数的运用还相当的不熟练。

还需研究的题目:7-11,7-7

posted on 2017-12-29 23:45  无尽空虚丶  阅读(778)  评论(0编辑  收藏  举报