zoukankan      html  css  js  c++  java
  • C语言I博客作业10

    问题 答案
    这个作业属于那个课程 C语言程序设计IIII
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10096
    我在这个课程的目标是 熟练掌握各大语句,运算符,函数,尝试用简单的代码解决复杂的问题
    这个作业在那个具体方面帮助我实现目标 根据实际情况,选择合适的算法、合理的循环结构,熟练的编写程序
    参考文献 《C语言程序设计》

    一、PTA实验作业

    1.1输出三角形字符阵列

    题目内容
    本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列
    输入格式
    输入在一行中给出一个正整数n(1≤n<7)
    输出格式
    输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格

    1.1.1 数据处理

    数据表达:定义了三个整型变量n,i,j。n指阵列的行数,i,j是循环变量。定义了字符op.
    数据处理:给字符op赋值64,相当于"A"-1。调用scanf()函数输入n。使用嵌套循环。如果i小于n,执行外层循环,累加i的值。(外层循环会执行n次,每执行一次需要换行。)如果j小于n-i,执行内层循环,每次op的值加1,输出字母,然后累加j的值。
    

    伪代码

    1.1.2实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    1 A 最小行数
    4 A B C D
    E F G
    H I
    J
    题目示例
    6 A B C D E F
    G H I J K
    L M N O
    P Q R
    S T
    U
    最大行数

    1.1.4 PTA提交列表及说明

    • Q1:反复检查后循环的过程并没有错,但还是显示答案错误,问题出在给字符初始赋值上。
    • A1:A的ASCLL是65,进j循环时会+1,所以用char定义字符op时赋值错误,应该赋64给op.

    1.2梅森数

    题目内容
    形如2n−1的素数称为梅森数(Mersenne Number)。例如22−1=3、23−1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了231-1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。
    本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n−1的梅森数。
    输入格式
    输入在一行中给出正整数n(n<20)。
    输出格式
    按从小到大的顺序输出所有不超过2n−1的梅森数,每行一个。如果完全没有,则输出“None”。

    1.2.1数据处理

    数据表达:先定义五个整型变量n,i,m,count,number。n指输入的正整数(n<20),i,m为循环变量,count是用来累计不超过2^n−1的梅森数的数量,number是用来表示2^n−1的值。
    数据处理:调用scanf()函数输入n。使用嵌套循环。如果i的值小于或等于n,执行外层循环,则计算出对应的number的值并累加i的值。外层循环使用了一个if语句,如果m大于number/2(即number为素数),则输出number;如果m小于number/2,执行内存循环,并累加m的值。内层循环中使用了一个if语句,如果number/m的值为0(即number不是素数),执行break语句跳出循环。最后运用if语句判断,如果count=0(即没有输出一个梅森数),输出"None".
    

    伪代码

    1.2.2 实验代码截图

    1.2.3 造测试数据

    输入数据 输出数据 说明
    1 None 不存在梅森数
    2 3 只有一个且最小的梅森数
    6 3
    7
    31
    题目示例
    19 3
    7
    31
    127
    819
    1131071
    524287
    输出最多的梅森数

    1.2.4 PTA提交列表及说明

    • Q1:输入和输出都没有错误,问题出在判断条件上。
    • A1:判断素数,即判断数number能否被2number/2之间的数整除。我忘记了规定2number/2这个范围,加上这种条件答案就正确了。

    二、代码互评

    2.1.1题目截图

    2.1.2代码截图(左边是我的代码,右边是同学代码)

    • 1.我给字符op赋值64,相当于"A"-1。她定义了一个字符ch,没有进行赋值,她还比我多定义了一个变量count,用于累计内层循环的执行次数。
    • 2.我找出字母字符的ASCII码值各相差1的规律,如果判断j小于n-i,执行内层循环,每次op的值加1,输出由大写字母A开始构成的三角形字符阵列。她找出字符A与与其他字母字符的ASCII码值的关系,利用变量count,累计内层循环的执行次数,输出“A"+count。

    2.2.1题目截图

    2.2.2代码截图(左边是我的代码,右边是同学代码)

    • 1.我使用嵌套循环,分别在内外层循环嵌套了一个if语句.number表示2n−1的值.通过判断数number能否被2~number/2之间的数整除来判断该数是否为素数,如果number为素数,输出梅森数。
    • 2.因为不超过2n−1(0<n<20)的梅森数总共只有7个,他查出了符合条件的n值及其对应的2n−1的值,在for语句中嵌套了一个switch语句,直接输出。

    三、学习总结

    3.1 学习进度条

    这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第一周 6小时 29行 对C语言、markdown语法,编程有了初步的认识 对编程一窍不通,只会照着书上打
    第二周 8小时 19行 学会如何提问,安装MinGW-w64并用它编译C程序 markdown语法掌握不熟练
    第三周 10小时 96行 关系运算、if-else语句、格式化输入语句scanf(),以及常用的数学库函数 对编程中各大语句的运用不熟悉
    第四周 13小时 93行 for循环语句实现指定次数的循环程序设计 运用for语句时经常犯很多错误
    第五周 10小时 161行 用C语言编写程序 对编写函数和调用函数还有很多不熟悉
    第六周 12小时 168行 多分支结构、字符型数据类型和逻辑运算符 对各运算符的优先级和结合性,多分支结构不熟悉
    第七周 10小时 185行 熟悉多分支结构switch语句的使用 面对比较复杂的题时难以解决
    第八周 8小时 159行 使用while和do-while结构解决问题 不知道如何写伪代码
    第九周 8小时 158行 熟悉break、continue的使用,熟悉使用循环的嵌套解决问题 对复杂的嵌套循环还是有些难理解
    第十周 11小时 140行 根据实际情况,选择合适的算法、合理的循环结构,熟练的编写程序 逻辑思维能力不够,做题太吃力

    3.2 累积代码行和博客字数

    3.3 学习内容总结和感悟

    3.3.1 学习内容总结

    3.3.2 学习体会

    • 运用嵌套循环一定要注意{}扩住的范围,因为多个循环,大括号{}也很多,不理清楚就容易乱,有时候把语句放错位置等,牵一发动全身,整个循环都会乱套。
    • 嵌套循环对逻辑能力要求比较高,对我来说难度较大,我做起题目来比较吃力。在做代码互评的时候能够看到其他同学的思路,代码风格都有些大大小小的差异,对我来说帮助很大。
    • 虽然经过了多次实验课,但是当调试程序时我有时还是会不知道如何下手。实际上对程序进行调试可能比自己捧着小脑瓜子一直想要有用的多,所以调试程序的能力有待锻炼和提升。
  • 相关阅读:
    HashMap和HashTable有什么不同?
    JAVA基础查漏补缺(面向面试场景)
    JAVA--GC 垃圾回收机制----可达性分析算法
    如何优雅的设计 Java 异常
    Java多线程之捕获子线程中的异常---面试经
    Review: the foundation of the transaction、Transaction characteristics in Spring
    用Demo 去理解Java Object 的 wait() 和 notify() 方法
    决心彻底认知 Integer 和 int 对象创建的原理
    java 基础复习 -用Demo去认识String 类
    java 基础复习 -用Demo去认识数组
  • 原文地址:https://www.cnblogs.com/shenxinglou/p/11960357.html
Copyright © 2011-2022 走看看