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的一些有趣的语法,比如这个笑脸。 😄 😄 😄
posted @ 2019-11-15 23:16  kame呦呦  阅读(303)  评论(6编辑  收藏  举报