循环

一、PTA实验作业

题目一、7-4 统计学生成绩(15 分)

本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:

  • 大于等于90分为A;
  • 小于90且大于等于80为B;
  • 小于80且大于等于70为C;
  • 小于70且大于等于60为D;
  • 小于60为E。

输入格式:

输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。

输出格式:

在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。

输入样例:

7
77 54 92 73 60 65 69

输出样例:

1 0 2 3 1

1、本题PTA提交情况

2、设计思路

定义N,i,A,B,C,D,E        // N为输进的数,A,B,C,D,E分别用来统计各个分数段的人数,i用来循环

先输入N

从 i=0 到i<=n 的循环里面输入N个数

每输进去一个i就要加1,并且判断是否满足条件

 如大于等于90分 A++;

如小于90且大于等于80 B++;

如小于80且大于等于70 C++;

如小于70且大于等于60 D++;

如小于60 E++;

最后输出各个分数段的统计结果

 

 

结构图

 

 3、代码截图


 

4、调试过程

 

 在程序的编写过程中未循环的输入分数,所以该程序在运行的过程中只能输入一个数,而不能输N个数,所以无法统计各个分数段的人数

题目二、7-15 梅森数(20 分)

形如2n​​1的素数称为梅森数(Mersenne Number)。例如22​​1=3、23​​1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了231​​1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。

本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n​​1的梅森数。

输入格式:

输入在一行中给出正整数n(n<20)。

输出格式:

按从小到大的顺序输出所有不超过2n​​1的梅森数,每行一个。如果完全没有,则输出“None”。

输入样例:

6

输出样例:

3
7
31
1、本题PTA提交列表

2、设计思路

定义x,n,i,j,z=0,y  //n为所输的最大整数,ij用于循环,y为需要判断的数

输入n

利用循环,从i=0到i=n

令y =2^i-1 

此时判断y是否为素数(判读y是否除了1和他本身以外没有其他的约数)

如果是,则该数为梅森数,将其输出

如果不是,就让i++,进入循环

直至循环结束

 

结构图

3、代码截图

4、调试过程

这题直接将所有小于2^n-1的所有数进行比较,没有满足梅森数的第一个条件2^i-1;

PTA显示运行超时,但是在DEV上运行时答案是正确的,可能该程序没有踩到PTA的测试点


 题目三、7-16 小于m的最大的10个素数 (15 分)

给定一个整数m(50<m<20000),找出小于m的最大的10个素数。

输入格式:

输入在一行中给出一个正整数m(50<m<20000)。

输出格式:

在一行中按递减顺序输出10个满足条件的素数,每个素数输出占6列。没有其它任何附加格式和字符。

输入样例:

229

输出样例:

   227   223   211   199   197   193   191   181   179   173

1、本题PTA提交列表

 

2、设计思路

先输入这个正整数m

利用循环 从i=1到i=10找小于该正整数的10个素数

先让m--;

 

判断m是否为素数(判读m是否除了1和他本身以外没有其他的约数)

 

如果是,则将其输出

 

如果不是,就让m--进入循环

 

直至循环结束

 

结构图

3、代码截图

 

 

4、调试过程

(1)

 

刚刚开始没有按照题目的要求输出答案,每个答案占了9个字节

(2)

 

与之前的错误类似,第一个输出的数前面的本来应该没有空格,将输出的方式改为%6d之后就可以解决了


 

二、与同学的代码互评

          

我是利用while循环,不断的找他的最小公倍数,然后再将这个分数除以这个最小公倍数

求出最简分数;芷逸的找的条件跟我的不同,思路是相似的,我比较喜欢她的程序

 

 

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

四、本周学习总结

1、我学会了什么

通过对循环结构的学习,

掌握了对if-else、else-if 等结构的运用以及循环嵌套的运用;

for和when都可以实现循环,for语句和while语句都是在循环前先判断条件,只有条件满足才会进入循环;

for和while都是先判断条件是否满足,在进入循环;而do-while则是先进行运算,在判断是否满足条件。

break的作用是直接跳出当前循环,continue的作用是直接进行下一次循环

掌握了switch的用法,他的作用与if分支结构的作用一致

 

一般形式:

 

switch(表达式){ 

    case 常量表达式1:  语句1;
    case 常量表达式2:  语句2;
    … 
    case 常量表达式n:  语句n;
    default:  语句n+1;(这个可以不写)

}

2、不会的地方

在编程的过程中对分数的运算不太熟练

在运用循环时条件有时写不完全

3、循环考试总结

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

7-2这道题是部分正确,经调试后发现是在判断条件时出错了,在与其他同学交流的过程中理解了该题的解法

7-5这题答案错误,一开始对题意没有理清,试后我参考了其他同学的代码并询问他的解题思路,后尝试自己敲了一遍,解决了该题

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

不是很满意,在考试过程中常常会出现一道题由于自己的粗心而存在很多编写的错误,由于一直没有运行通过而乱了思路

之后我会多加练习,对书上一些知识点进行复习



posted on 2017-12-28 19:32  huangyilin  阅读(1752)  评论(0编辑  收藏  举报