C语言I作业08
第4章 循环结构 4.1-4.2 熟悉使用while和do-while结构解决问题
这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/9979 |
我在这个课程的目标是 | 学习do-while,while语句。 |
这个作业在那个具体方面帮助我实现目标 | 使用循环语句处理循环的题目 |
参考文献 | C语言程序设计,百度 |
1.PTA实验作业
1.1 题目名1
7-3 jmu-c-二进制转10进制
输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!
输入样例1:
11111111
输出样例1:
255
输入样例2:
34
输出样例2:
error input!
1.1.1数据处理
数据表达:char定义字符char ch
,int整型定义变量int sum=0
。
数据处理:
开始
sum←0
while ch=getchar()='\n'
do IF ch=='1' THEN
do sum←sum*2+1
ELSE ch=='0' THEN
sum←sum*2+0
ELSE 输出error input!
END IF 结束
不满足条件 输出sum
结束
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
-1 | error input! | 输入值小于0 |
23 | error input! | 非二进制字符 |
101010 | 42 | 二进制字符 |
1.1.4 PTA提交列表及说明
个数/类型 | 出错 | 改正 |
---|---|---|
1 | 没有看清楚题目要求,题目要输入字符型。 | 重新定义字符ch。 |
2 | while判断输入错误,不理解换行字符,导致进入死循环。 | 重新定义输入字符。 |
3 | if语句赋值与等值比较理解不清楚. | 将赋值改为等值比较。 |
1.2 题目名1
7-3 整除光棍
这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。
*提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 —— 比如,程序输入31,那么就输出3584229390681和15,因为31乘以3584229390681的结果是111111111111111,一共15个1。
输入格式:
输入在一行中给出一个不以5结尾的正奇数x(<1000)。
输出格式:
在一行中输出相应的最小的s和n,其间以1个空格分隔。
输入样例:
31
输出样例:
3584229390681 15
1.2.1数据处理
数据表达:整型定义x,s,m,countx=0,s=0,m=0,count=0
数据处理:
开始
x←0,s←0,m←0,count←0
输入 x
for i←1
do m←m*10+1
count←count+1
IF m>=x 跳出循环
while 真
输出 m/x
m←m%x
IF m←0 跳出循环
m←m*10+1
count←count+1
输出 count
结束
1.2.2实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1 | 1 1 | 最小光棍数 |
999 | 111222333444555666777889 27 | 输入最大x |
-1 | -1 1 | x为负数 |
1.2.4 PTA提交列表及说明
个数/类型 | 出错 | 改正 |
---|---|---|
1/部分正确 | 其实有蛮多错误的,都是运行超时。 | 不了解最小s,将while语句添加if语句判断m>=x |
2/部分正确 | 最大s错误 | 我也想知道为什么错误了,通过调试也调不出个所以然。还没有解决。 |
3/部分正确 | 最大s错误 | 通过百度,改正我的逻辑思维,不只用一个for语句循环计算第一位除数。解决 |
2.代码互评
我的代码
同学代码
相同点:同样使用 getchar 函数接收单个字符。 不同点:1.该同学使用switch语句而我使用if语句判断,使用switch语句可以避免等值比较与赋值的错误。 2.同学代码后使用 getchar 接收字符改为单个字符,不好理解。
3.学习总结
思维导图
3.1 学习进度条
周 | 这周所花的时间 | 代码行 | 学到的知识点简介 |
---|---|---|---|
一周 | 4个小时 | 50行 | 简单的打印字句 |
二周 | 5个小时 | 85行 | 提问的智慧 |
三周 | 12小时 | 132行 | if-else语句的使用,基本数字的定义,分段函数的计算 |
四周 | 6个小时 | 97行 | for循环语句的使用 |
五周 | 6个小时 | 190行 | 简单函数的定义和调用,while语句,break终止语句 |
六周 | 6个小时 | 260行 | 镶嵌型的for,if-else语句,逻辑运算,字节符的函数表达,switch语句的使用 |
七周 | 6个小时 | 300行 | 简单的数组储存问题,冒泡排序(目前还没有学懂) |
八周 | 6个小时 | 310行 | 简单的结构体 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
- 最近学习了一点点结构体大概内容如下:
struct 结构名
{
成员列表
};
调用方式与函数类似。
- 字符串的输出为 %s 而不是 %c
3.3.2 学习体会
- 学习真的一点点的累计的事情,也希望我能够坚持吧,在学习新的内容时没有自己去实践,所以之后我学习的内容我要自己去查找相关的知识内容,然后实践自己写代码。 😀
- 感觉算法很神奇,虽然对一些知识不是很了解,但是我会努力的。 💪 💪 💪
- 学习也是一件很快乐的事情,学习了一些makedown的一些有趣的语法,比如这个笑脸。 😄 😄 😄