C语言I博客作业08
这个作业属于哪个课程 | C语言程序设计I |
---|---|
这个作业要求在哪里 | C语言I-2019秋作业08 |
我在这个课程的目标是 | 熟悉使用while和do-while结构解决问题。 |
这个作业在那个具体方面帮助我实现目标 | 在语句的学习上以及程序语言的回顾上帮助我实现目标。 |
参考文献 | 百度百科 |
一、PTA实验作业
1、韩信点兵
题目
在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:
-
按从1至5报数,记下最末一个士兵报的数为1;
-
再按从1至6报数,记下最末一个士兵报的数为5;
-
再按从1至7报数,记下最末一个士兵报的数为4;
-
最后按从1至11报数,最末一个士兵报的数为10;
请编写程序计算韩信至少有多少兵。
数据处理
数据表达:使用了整形变量n
数据处理:使用了while循环结构以及if判断语句 ,用来判断是否与题目所说的士兵数相等
伪代码:
输入数据n;
使用while语句一直循环;
循环的同时使用if语句进行判断,只要满足清空便break跳出循环;
否则变量n++继续循环;
代码截图
造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
本题无输入 | 2111 | 韩信至少有2111人 |
PTA提交列表及说明
因为在dev-c++上运行编译过许多次了,所以在PTA上直接过了。
出现的问题
Ⅰ无限循环
因为疏忽,在12行的地方忘了Break,导致此程序无限循环。
Ⅱ逻辑符使用错误&没有将n初始化
在此程序中,个人觉得应该使用&&而不是&,但是不知道为什么在dev-c++上面用&也可以编译运行成功。
n应该初始化。应该改成 int n=1;
2、jmu-c-二进制转10进制
题目
输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出 error input!
数据处理
数据表达:输入测试数据
数据处理:使用了while
循环结构以及switch
判断语句 ,用来判断 0,1 和非二进制数
伪代码:
输入数据n;
使用while语句循环,并不断输入单个字符,如果遇到换行符(即回车)就退出;
循环的同时使用switch语句进行判断,进行0、1计算和非二进制数停止;
输出结果;
代码截图
造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
100 | 4 | 二进制转十进制为4 |
1111 | 15 | 二进制转十进制为15 |
PTA提交列表及说明
出现的问题
Ⅰ选择的方法不充分
本来我是打算使用短除法的方法,进行反计算,推出十进制,但是似乎有问题
于是我便采取正方向的当方法,如果是1就 n = n * 2 + 1;
0的话就n = n * 2 + 0
这样就好了
2.代码互评
同学代码
自己代码
这个同学的代码没有明显问题,逻辑通顺可正常执行并使用。但我觉得可在while()判断中加上输入检测,如:while(op=getchar()&&op!='\n'),而不是执行了之后在进行停止检测。另外使用if-else并不简洁,可是要switch语句(因为在多情况判断中switch明显占优,所以采用通用方法)
我的代码就直接在循环语句那儿设置while (ch = getchar(), ch != '\n')然后使用switch分支结构分两种情况讨论case'1':n = n * 2 + 1; break;
case'0':n = n * 2 + 0; break;
3.学习总结
3.1学习进度条
周/日期 | 周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第3周/10月6~16 | 3天 | 181行 | if-else语句,递归,分段函数的计算 | 对这些还不是很熟练,对这些符号的使用跟空格的使用不是很清楚 |
第4周/10月10~17 | 2天 | 181行 | for循环语句与逻辑符 | 循环语句使用不够熟练,数学循环问题也有很多不明白的事情,不知道先后 |
第5周/10月18~24 | 10h | 148行 | 基本程序语言与生成乘方表与阶乘表 | 基本程序语言了解的都差不多了,有些不是特别熟练还是需要加强练习的,生成乘方表跟阶乘表这方面的内容还有很多不懂的,觉得完成作业很费力气,要查阅各种资料,可能跟我数学理解能力不强也有关系吧。 |
第6周/10月25~31 | 22h | 371行 | 多分支结构、字符型数据类型和逻辑运算符。顺便研究了几个心形的代码,觉得挺有趣。 | 就是有时候总是会丢三落四,然后也比较迷惑一些运算符使用方法,分之这一块还是不够熟练。 |
第7周/11月1~7 | 25h | 211行 | 熟悉多分支结构switch语句的使用、字符型数据类型和逻辑运算符。 | 迷惑的真的太多太多了,但是百度大发真不错,虽然没有白嫖别人的答案解释香,但是还是很有用,一学就让我停不下来的那种。对数学研究的还是不够好,所以做很多题目转不过弯来,要努力克服。 |
第8周/11月8~14 | 22h | 241行 | 熟悉使用while和do-while结构解决问题。 | 上课听的不太明白,课后也有查找资料,但是还是有很多不懂的,然后最近在做学习总结,想把自己不懂的都整理出来然后弄懂。 |
3.2累计代码行和博客字数
3.3学习内容总结和感想
3.3.1学习内容总结
3.3.2学习体会
越学到后面越觉得自己什么都没学会,每次写代码都丢三落四的,不是少这里就是少那里,最近学习态度也不够好,应该好好反省自己了。花在学习上的时间也少了,然后虽然这几天学会了一些软件的安装,准备下周把系统安装学会,但是更应该在学习这些的同时把c语言学好。看了别人作业,很多人都会了数组,而我连上课学的东西都不能够熟练运用,内心有点难受呀也有点自责。但是这只能怪自己咯,不够努力,应该向他们学习的。要端正自己的学习态度,安排好学习的时间。就算0基础也相信自己可以学好的。下周要将所学的语句以及pta作业做一个总结,不希望自己只是说说而已。我觉得自己可以做到,一定可以。不能只做一个理论玩家,毕竟实践出真知。加油吧,继续努力。
以后在写题的时候,可以先试着写一下流程图熟悉一下题目理清思路,然后再码代码。这样就不至于写的一团糟而且还让自己心烦了。