zoukankan      html  css  js  c++  java
  • C语言博客作业02--循环结构

    0.展示PTA总分

    1.本章学习总结

    1.1 学习内容总结

    循环基本结构

    for循环:
        for (表达式1; 表达式2; 表达式3)
        {
            循环体语句;
        }
    
    while循环:
    
        while (表达式)
        {
            循环体语句;
        }
    
    do-while循环:
        do 
        {
            循环体语句;
        } while (表达式);
    

    判断优先使用哪一种循环结构的关键:寻找题目中的条件,判断循环次数是否确定。
    若循环次数为常数,则采用for循环,反之选择while循环。

    嵌套循环

    • 嵌套循环由上述3种基本循环类型所组成的代码块。
    • 在阅读嵌套循环或写嵌套循环的过程中,十分需要注意单个循环的结构和位置,防止将各个循环之间的某些变量或条件混肴。

    重要语句

    • break; :强制循环结束
    • continue; :跳过循环体中continue后面的语句,继续下一次循环
    • while (1) :恒真循环语句
    • while (i) : 循环执行条件是i不等于0,也就是只要i不等于0,就进入while循环
    • while (!i) : 循环执行条件是i等于0,也就是只要i等于0,就进入while循环
    • pi = ch - '0' :让变量ch转化为数值并赋值给pi
    • ch = ch - 'a' + 'A' :小写转化为大写
    • ch = ch - 'A' + 'a' :将大写转化为小写
    • a++; : a值加1,而整个表达式为执行前的值
    • ++a; : a值加1,整个表达式也为执行后的值

    1.2 本章学习体会

    • 作业量加大,难度变高,需要提前预习才可以跟上老师讲的内容。
    • pta里面的题有时候只有30行左右的题目可是自己就是想不出来,逻辑思维和解决问题的能力有待提高
    • 本周代码量大概880行

    2.PTA实验作业

    2.1

    2.1.1

    数据处理:定义n, i, j, m, t整型变量,引入flag标识符作为判断是否有无素数。
    伪代码:
    输入n
    t←pow(2, n) - 1
    for t←2 to t
    do m ← pow(2, i) - 1
     for j←2 to sqrt (m)
    if m求余j等于0 then
    do 退出循环
    if j > sqrt(m) && m <= t then
    do 输出m 且flag←1
    if flag等于0 then
    do 输出None
    
    2.1.2 代码截图

    2.1.3 造测试数据
    输入数据 输出据 说明
    1 None 无梅森数
    2 3 正常数据
    6 3 7 31 多个数据,格式正确
    2.1.4 PTA提交列表及说明

    • 其实刚开始拿到这道题很懵,因为可能之前上课没有认真听,不知道引入标识符flag来判断是否有素数。在这一点上纠结了很久
    • 由于设置变量有点多且个人习惯,所以在编写程序中,我都是把变量放在后面定义,以至于在出现了有一些变量未被定义,称为未标识符

    2.2

    2.2.1

    数据处理:定义c5, c2, c1, cnt , x分别为五分硬币,二分硬币,一分硬币的数量,换法种数,零钱数额。
    伪代码:
    输入零钱数额
    for(五分硬币从19到1)
    		for(二分硬币从49到1)
    			for(一分硬币从99到1)
    				if(当各硬币的数量乘以其面值等于需兑换的总金额时){
    					输出各种硬币的数量和换法种数
    					换法种数自加一
    				}
    
    2.2.2 代码截图

    2.2.3 造测试数据
    输入数据 输出数据 说明
    9 fen5:1, fen2:1, fen1:2, total:4 count=1 一般sample
    8 fen5:1, fen2:1, fen1:1, total:3 count=1 最小金额数
    2.2.4 PTA提交列表及说明

    • 虽然这次提供的是2次正确的提交列表,但是我确实想了很久,因为虽然想到了老师上课讲的用嵌套循环再加一个等式来判断,但是我一开始在vs上用的是变量自增,
      导致我一直搞不清限制变量的常数,最后想了挺久的,才发现可以用自减,就发现自己好傻

    2.3

    2.3.1

    数据处理:定义一个int p(int a,int b)函数用来计算幂次方之和。
    伪代码:
    输入n
    for (定义i等于m加到v)
    {
    定义k等于i,sum等于0
    while (k大于0)
    {
        t=k%10;
        k=k/10;
       sum=sum+p(t,n)
    }
    if (sum=i)
    输出i
    
    2.3.2 代码截图

    2.3.3 造测试数据
    输入数据 输出数据 说明
    3 153,370,371,407 一般sample
    6 548834 一般sample
    2.3.4 PTA提交列表及说明

    • 答案错误的原因:忘记设置一个变量k代替i去进行循环里的计算,导致循环过后i的值变了,所以就错了。

    3. 代码互评

    1.

    2.

    其实这2段代码的区别主要就是在时间,距离如何计算以及对休息时间的判断。
    1.毫无疑问,第二种代码无疑简洁很多,它不仅引入了flag标识符,来判断是否休息,并且在设置变量上也有一定的技巧,使得所设置的变量减少。但是这种方法对我来说,一开始,我很难想到,所以我更记住这种简洁的方法,应用到以后更加复杂的代码中。
    2.休息时间的判断:在第一种代码中,采用数学上的求余.而第二种则是采用是否等于0,然后重新等于0来计算。第二种来说,对我是一种较新的方法。
    3.当然第二段代码也有不足之处,在于变量名使用不规范,导致我在读这段代码多花了挺长时间的。

  • 相关阅读:
    Idea快捷键
    Java学习之路--书籍推荐
    泵式等待基元
    uni-app,wex5,APPcan,ApiCloud几款国内webapp开发框架的选型对比
    前端框架2019 云开发
    select2 javascript控件 如何设置指定的值
    Github 索引
    linux
    WPF 中的 Uri 地址的不同写法
    WPF GridSplitter 使用技巧
  • 原文地址:https://www.cnblogs.com/15980807959zjl/p/11709039.html
Copyright © 2011-2022 走看看