C语言第四次博客作业--嵌套循环

时间:2022-09-24 22:42:53

一、PTA实验作业

题目1:编程打印空心字符菱形

1. 本题PTA提交列表

C语言第四次博客作业--嵌套循环

2. 设计思路(流程图)

C语言第四次博客作业--嵌套循环

3.本题调试过程碰到问题及解决办法

  • 思考过程:将问题拆解为菱形问题和字母变化问题两部分

    1>先解决大体菱形问题,需注意高度height为总高,并不是菱形边长。

    2>菱形分为上下两部分,空格和字符规律性变化。

    3>一个大循环解决总高,再嵌套两个循环进去上下两部分。

    4>在上下两部分中,控制输出的空格个数与具体的字符。

  • 部分正确:第一次提交每一行的字母变换不正确。

    解决办法:利用循环变量i每次递增的性质使每次字母递加。

  • 嵌套顺序错误:应该是先判断上上半部分还是下半部分,再判断是否该输出空格或字母。

  • 代码太过复杂:尤其是下半部分的循环条件,并不是一下子想出来的,而是用DEV调试很多遍试出来的,花了很长的时间,自己也不是很清楚。感觉自己的代码缺少合理性,让人看不懂,并不能很直观明确的反映出各种条件和循环。第一眼看到这个题觉得菱形不是很困难,但当开始做起来的时候发现字母变化才是难点,自己坐在电脑前研究了三四个小时,才将大体弄出来。

  • 调试过程:

    C语言第四次博客作业--嵌套循环

C语言第四次博客作业--嵌套循环

C语言第四次博客作业--嵌套循环

题目2:梅森数

1. 本题PTA提交列表

C语言第四次博客作业--嵌套循环

2. 设计思路

  • 第一步:定义整型变量n,i,j放循环变量,result放输出结果
  • 第二步:输入正整数n
  • 第三步:if语句判断n。
  • 第四步:若n等于1,输出None
  • 第五步:若n大于等于2小于20,进入循环
  • 第六步:循环变量i赋值为1,循环条件为i小于等于n
  • 第七步:赋值result等于pow(2,i)-1
  • 第八步:进入下一个循环,j赋值为2,循环条件为j小于等于result
  • 第九步:进入if判断是否为素数,若result对j取余等于0,跳出循环。若j小于result/2且result不等于1,输出result.
  • 第十步:j递加,重复第九步。
  • 第十一步:i递加,重复第七八九十步。
  • 第十二步:循环结束。

3.本题调试过程碰到问题及解决办法

  • 题目理解不到位:只关注到怎么计算梅森数,忽略了它是素数的前提,第一次的代码并没有对结果是否为素数的判断,导致DEV运行结果总是会出现15,询问了同学后得知要判断素数。

    C语言第四次博客作业--嵌套循环

  • 部分正确:取最大值n和n等于2的测试点错误

    C语言第四次博客作业--嵌套循环

    解决办法:加入if语句对n等于2的条件判断,可n取最大值的错误仍然存在,并且不知道错在哪里。

  • 部分正确:取最大值n的测试点错误

    C语言第四次博客作业--嵌套循环

    解决办法:虽然在DEV上运行结果正确,但PTA仍然显示部分正确,后来在检查代码时,为了更加简洁将n等于2与大于2小于等于20合并起来,再提交答案就正确了。

  • 调试过程:

    C语言第四次博客作业--嵌套循环

C语言第四次博客作业--嵌套循环

C语言第四次博客作业--嵌套循环

题目3:歌唱比赛评分系统

1. 本题PTA提交列表

C语言第四次博客作业--嵌套循环

2. 设计思路

  • 第一步:定义整型变量 n放成绩个数,max放最大值,min放最小值,repeat重复次数,i,j放循环变量
  • 第二步:定义双精度浮点型变量grade放成绩,total放总成绩并赋值0
  • 第三步:输入重复次数repeat
  • 第四步:进入循环进行repeat次运算 ,i=1,循环条件为i小于等于repeat
  • 第五步:输入成绩个数及第一个成绩
  • 第六步:赋值total,max,min都为第一个成绩
  • 第七步:进入每一次的数据的循环,j=1,循环条件为j小于等于n-1
  • 第八步:读取下一个成绩
  • 第九步:用if语句比较max和grade的大小关系,若max小于等于grade,赋值max等于grade
  • 第十步:用if语句比较mim和grade的大小关系,若min大于等于grade,赋值min等于grade
  • 第十一步:赋值total等于total加grade
  • 第十二步:j递加,重复第八九十十一步
  • 第十二步:i递加,重复第五六七八九十十一十二步
  • 第十二步:输出成绩

3.本题调试过程碰到问题及解决办法

  • 答案错误:这道题与第八题一样需要repeat,刚开始理解成对一组数据进行repeat次计算,所以并没有将输入n值放入循环内,导致PTA答案错误

    解决办法:将将输入n值放入第一个循环内。

  • 调试过程:

    C语言第四次博客作业--嵌套循环

  • 格式错误:最后输出没有加\n,若需要第二次计算,第二个n的输入位置在第一次的结果后面。所以格式错误。

    C语言第四次博客作业--嵌套循环

  • 调试过程:

    C语言第四次博客作业--嵌套循环

二、同学代码结对互评

1.互评同学名称

杨峻森

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

  • 我的代码

    C语言第四次博客作业--嵌套循环

C语言第四次博客作业--嵌套循环

  • 峻森的代码

    C语言第四次博客作业--嵌套循环

C语言第四次博客作业--嵌套循环

对比

  • 我: 这道题我用了一百三十多行代码,先用switch将各个等级的数量弄出来,再利用五个switch输出五个等级各自对应的星号。而峻森同学只用了四十多行就写出来了,主要的区别在与输出时的那部分,它很好地利用上了循环嵌套分别输出了不同等级对应的星号,而我并没有使用循环嵌套,而是第一时间想到了switch,而且后来再看代码发现也并不需要那么多switch语句来实现输出。这反映出了一个问题:我缺少简化代码的能力,总是定性思维,不会利用起各种语句的特性来简化代码,菱形那道题目也是一样的,代码最后虽然正确,但是循环体复杂难懂,没有老师课上解答的简洁明了

  • 峻森:峻森同学的代码美中不足为缺少了注释,而且变量名字也很随意。希望他能在良好的编程基础上再加一点良好的习惯。成为更强的程序员。

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

C语言第四次博客作业--嵌套循环

四、本周学习总结

1.你学会了什么?

课本中

  • 函数的定义与使用:

使用自定义函数时,需要函数声明,定义,调用,结果返回。

函数声明:

函数类型 函数名 (参数表); ps:函数声明是一句c语言,以分号结束。

函数定义:

函数类型 函数名 (形式参数表)     /*函数首部*/
{
函数实现过程 /*函数体*/
}

函数调用:

函数名 (实际参数表)

形参表:

类型1 形参1 类型2 形参2······

  • 实参与形参:

  • 实参:主调函数的参数,可以为常量,变量,表达式。

  • 形参:调用函数的参数,必须为变量。

  • 联系:将实参的值单向复制给形参的过程成为参数传递。

  • 不返回结果的函数:

函数类型为void,不直接返回一个值。

  • 全局变量:

定义在在函数外而不属于任何函数的变量为全局变量。解决了return语句只能返回一个函数结果的问题,实现了多函数间的数据交流与表示。

  • 局部变量:

定义在函数内部或复合语句中的变量为全局变量。

  • 同名情况:

局部变量与全局变量同名时,局部变量起作用。函数的局部变量与复合语句的局部变量同名时,复合语句中的起作用。

  • 静态变量:

特殊的局部变量。静态变量赋初值只在函数第一次调用时起作用,若没有赋初值,系统将自动赋值为0.

 static  类型名  变量表

做题中

  • 金字塔,菱形类打印题目:

利用循环嵌套解决,重点找出是解决空格,输出与题目输入的关系式。菱形则需要分为上下两部分来解决。

  • 循环内外语句:

在PTA最后两题中,就需要分清n值得输入在循环内还是循环外,及在哪一个循环中。若没有弄清楚,会导致循环卡住。

  • 画流程图:

解决了写算法无法表述循环嵌套的问题。

  • 伪代码:

学会了可以先写伪代码,再根据伪代码编写程序。

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

  • 对于循环嵌套还不够清楚,虽然这周题目集都是用循环嵌套会下意识使用多重循环,但要是平时做题很容易忽视掉这种循环模式,而且这种嵌套式循环会出现许多很细小的问题,例如循环内重新赋值,语句在循环内外的不同,循环条件的判断·····可能是现在代码还不够复杂,没能发现嵌套循环的方便。
  • 对菱形类题目还不够熟练,还需要多多练习。
  • 全局变量,局部变量,静态变量这三个仅仅会识别计算,并不能运用到自己的代码里。

C语言第四次博客作业--嵌套循环的更多相关文章

  1. C语言第四次博客作业

    一.PTA实验作业 题目1.梅森数 1.本题PTA提交列表(要提交列表,不是结果) 2. 设计思路(此处用流程图最好) 1.定义三个变量n,num,count,且初始化count为1 2.读取一个数n ...

  2. OO第四次博客作业!

    oo第四次博客作业 一.测试与正确性论证比较 测试只是单方面片面的证明对于当前的输入程序是正确的,测试只能证明程序有错误,不能说明程序是对的. 正确性论证是程序达到预期目的的一般性陈述,是通过规范化的 ...

  3. OO第四单元博客作业

    OO第四单元博客作业 BUAA_1706_HugeGun 目录 第四单元作业架构设计 四个单元架构设计及OO方法理解 四个单元测试理解与实践演进 课程收获 一点建议 第四单元作业架构设计 ### 第十 ...

  4. C语言第七次博客作业--一二维数组

    一.PTA实验作业 题目1:找鞍点 1. 本题PTA提交列表 2. 设计思路 定义n,i,j,ii,jj,a[7][7],flag,max 输入n for i=0 to i=n for j=0 to ...

  5. OO第四次博客作业(第四单元作业及期末总结)

    (注意:本文写作顺序与作业要求不完全一致,但涵盖了作业的所有要求) 一学期的BUAA特色OO课程结束了. PART 1  我想先写我这一学期的感想 从第一单元满怀期待地写完多项式求值到最后看着60分不 ...

  6. C语言最后一次博客作业

    1.当初你是如何做出选择计算机专业的决定的? 一开始选专业的时候,说实话我很纠结也很迷茫,对我来说,中学时代,似乎就只要考好试,做好题就可以了,对于未来想要做啥并没有那么多的规划和想法,偶尔跟基友畅聊 ...

  7. OO第四次博客作业--第四单元总结及课程总结

    一.总结第四单元两次作业的架构设计 1.1 第一次作业 类图如下: 为了突出类.接口.方法.属性.和参数之间的层次结构关系,我为 Class 和 Interface 和 Operation 分别建立了 ...

  8. C语言第五次博客作业--函数

    一.PTA实验作业 题目1:使用函数判断完全平方数 1. 本题PTA提交列表 2. 设计思路 3.本题调试过程碰到问题及PTA提交列表情况说明. 部分正确 :将else的情况放入for循环内,导致循环 ...

  9. C语言博客作业--嵌套循环

    一.PTA实验作业 题目1:7-4 换硬币 2 .设计思路 第一步:定义3个整型变量i,j,k用于循环,定义3个整型变量x,count,total分别用于储存零钱数额,换法个数,硬币数量: 第二步:输 ...

随机推荐

  1. 关于DOM对象与JQuery对象的那些事

    这个问题源自上一次的工作室讨论班,主题是"jQuery选择器的使用",在讨论班的结尾,我留了一个思考题:  jQuery获取到的对象和直接调用原生Javascript方法获得的对象 ...

  2. [原创] 【2014.12.02更新网盘链接】基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装

    [原创] [2014.12.02更新网盘链接]基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装 joinlidong 发表于 2014-11-29 14:25:50 ...

  3. CocosCreator反射在Android中的使用

    CocosCreator反射在Android中的使用 新建一个CocosCreator项目,然后点击构建 构建完成之后,即可用AndroidStudio打开构建的项目 使用AndroidStudio打 ...

  4. Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、

    查询所有表名:select t.table_name from user_tables t;查询所有字段名:select t.column_name from user_col_comments t; ...

  5. Machine Learning and Data Science 教授大师

    http://www.cs.cmu.edu/~avrim/courses.html Foundations of Data Science Avrim Blum, www.cs.cornell.edu ...

  6. destoon程序中qq号码,手机号,msn必选项实现方法

    最近发现好多客户,信息不完全!还是把qq号码,手机号,msn设为必选项比较好!下面以把qq设为必选项为例找到模板 template/default/member/edit.htm 找到 functio ...

  7. hdu 3507 Print Article(斜率优化DP)

    题目链接:hdu 3507 Print Article 题意: 每个字有一个值,现在让你分成k段打印,每段打印需要消耗的值用那个公式计算,现在让你求最小值 题解: 设dp[i]表示前i个字符需要消耗的 ...

  8. openlayers4 入门开发系列之风场图篇

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  9. 转化.vdi到.vmdk

    OracleVirtualBox转化.vdi到.vmdk E:\Genymotion-deployed\CentOS_7_64>"D:/Program Files/Oracle/Vir ...

  10. Eclipse配置问题

    1.eclipse中通过search打开第二个文件时第一个文件自动关闭问题: 解决方案: window-preferences-general-search找到第一行的一个选项  reuse edit ...