C语言I博客作业08

这个作业属于哪个课程 <C语言程序设计II>
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-3/homework/11628
这个作业的目标 <学会for的嵌套,学会使用break和continue>
这个作业在哪个具体方面帮助我实现目标 <帮助我解决一些可以穷举的问题>
参考文献 <C语言程序设计书,百度文献,同学代码>
学号 20209174

四、作业格式

1.1题目1
根据读入的字符和边长,勾画字符菱形。

输入格式:
输入数据含有若干组的数据,每组数据包括一个可见字符c和一个整数n(1≤n≤30)。 以键盘输入^Z或遇到文件结束符时结束数据输入。

输出格式:
输出以c为填充字符,边长为n的菱形,每个菱形之后都输出一个换行符。

1.1.1数据处理

数据表达:实验用了变量你i,j,k,n,c变量的值的值通过scanf函数输,数据类型为字符型和整型。
数据处理:该程序的流程结构为while循环语句和for的嵌套。

1.1.2 实验代码截图

1.1.3 造测试数据

  • 输入 A 5 B 3
    输出
  • 输入 T 2 Q 3
    输出

1.1.4 PTA提交列表及说明

 多种错误:开始没有注意将输出的换行符号放在了for循环里面了,还有直接将第三个for循环放到了第二个for循环里面。
 多种错误:通过使用while循环,在输入的两组数据之间有很多的空行,导致下面一组数据的排列也有一点错误。
 解决方法:根据书本上的内容和网络上类似的代码,仔细了解了一下for嵌套循环的使用,第二次我发现只是输出结果出现了问题,所以想着从输入两组数据那里解决。

1.2 题目2
7-6 Wifi密码 (15分)
下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答,每两日一换。谢谢合作!!~”—— 老师们为了促进学生学习也是拼了…… 本题就要求你写程序把一系列题目的答案按照卷子上给出的对应关系翻译成 wifi 的密码。这里简单假设每道选择题都有 4 个选项,有且只有 1 个正确答案。

wifi.jpg

输入格式:
输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行按照 编号-答案 的格式给出一道题的 4 个选项,T 表示正确选项,F 表示错误选项。选项间用空格分隔。

输出格式:
在一行中输出 wifi 密码

1.2.1 数据处理

数据表达:实验用了变量有:n,a,b。变量的值的值通过scanf函数输入,数据类型为整型.
数据处理:实验用到的了while的循环语句和switch语句。通过循环判断输入多组数据,用switch进行判断。

1.2.2 实验代码截图

1.2.3 造测试数据

输入 输出 说明
如图一 13224143 样例
如图二 1433223 一般样例
如图三 241342 一般样例



1.2.4 PTA提交列表及说明

  • 编译错误:没有将a,b使用字符型输入,没有想到用switch语句,用的是if语句,一直想着四个四个一起输入,四个四个一起判断。
  • 答案错误:while里面的条件错误,导致没有输入40个数据。
  • 解决方法:通过观察发现只要四个选项有对应T的就可以将其转化成数字输出,可以只要一个一个的判断,后来通过一些类似代码发现,switch语句刚好比较适合。

2.代码互评(5分)

找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。

同学代码截图


自己代码截图

1,2,3方式罗列2份代码不同地方。

  • 1.第一位同学通过两段并列的代码,第一段先判断素数是否超过100,若超过输出OVERFLOW,没超过,则执行另一段输出没有超过100个的素数。
  • 2.第二位同学所写的代码与我的相比更为复杂一点,他是先判断再输出。
  • 3.我的代码相对与两位同学的短一点,我是通过先判断输入的数的大小,是否可以取到100个素数,如果可以就继续运行,我也可以想第一位同学那样设置一个计数,来判断是否超过素数是否超过100.

3学习总结(15分)

3.1 学习进度条(5分)

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
5/11.17—11.21 10h 720 对分支语句的深入,数据类型char,运算符 思路不够清晰
6/11.23-11.27 10h 720 再一次对分支结构的深入,了解了switch分支结构。 一些微小的错误特别难发现
7/11.30-12.5 10h 750 对循环结构的深入,了解了while和do-while语句。 还不能够灵活运用for while do-while
9/12.13-12.17 10h 750 for的嵌套 continue 语句的使用 for的嵌套使用思路还不够清晰
3.2 累积代码行和博客字数(5分)

3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结
对于怎么样使break停止多段循环for循环,可以通过设置简单的人工标致,比如在循环开始之前设置一个flag=0,当程序运行到需要跳出整个循环的时候,在这个循环里面使flag=1,这样就可以跳出多段循环,循环外面再设置一个flag=0,如果它不满足这个跳出的条件,也就可以继续运行。也可以使用goto,实现跳出多个循环。

3.3.2 学习体会

  • 1、本周主要学习了for的嵌套的使用,对于需要多段for循环的嵌套,我感觉我还有点点难理解,可能刚刚写出来,但等下子,又会忘记是什么意思了,特别不熟练。
  • 2、在本周做题的过程中,遇到了一个特别不能理解的问题,就因为一个空格的问题,想了特别久。就是在打印菱形的题中如果在输入的时候,输入数据后面没有一个空格,(我用的是while循环使用EOF最为结束符)两组数据中间会出现一个大的空行。
  • 3、对于每一个程序都可以找到一种更简单的方法,你写的代码可能是别人的几倍长,这就需要我们通过学习更多的知识,掌握更多的方法,帮助我们找到更为简单一点的方法。
posted @ 2020-12-17 20:36  北辰陌  阅读(253)  评论(8)    收藏  举报