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

    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10095
    我在这个课程的目标是 熟练地掌握运用C语言,锻炼思维逻辑能力,为以后其他语言的学习打好基础.
    这个作业在那个具体方面帮助我实现目标 学习循环结构程序设计与用穷举法解决问题
    参考文献 《C语言程序设计》《C Primer Plus》百度百科 伪代码基本写法

    1.PTA实验作业

    1.1输出三角形字符阵列

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

    1.1.1数据处理

    数据表达:用了变量letter,i,j,n.letter通过赋值得到,n通过直接输入得到,i,j作为循环控制变量.letter类型为字符型,i,j,n全为整型.
    数据处理:letter表示大写字母,i,j作为循环控制变量,n表示输入的正整数.
    所用表达式:letter='A';letter=letter+1;
    流程结构:

    Begin
    输入一个正整数n
    for i←1 to n
    {
       for j←i to n-i+1
       {
           printf("%c ",letter);
           letter←letter+1
       }
       printf("
    ");
    }
    End
    

    1.1.2实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    4 使用题目数据
    1 A 使用最小n
    6 使用最大n
    2 随机n

    1.1.4 PTA提交列表及说明


    1.编译错误:int main()写成了int mian()编译错误:定义的函数名在调用时,函数名拼写错误
    2.格式错误:输出格式有误,应将printf("%c",letter);改为printf("%c ",letter);.

    1.2梅森数

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

    1.2.1数据处理

    数据表达:用了变量i,j,n,item,count.n通过直接输入得到,item,count的通过赋值得到,类型全为整型.
    数据处理:n表示输入的正整数,i,j表示循环控制变量,item表示for循环中每一项的值,count表示梅森数的个数.
    所用表达式:count=0;item=pow(2,i)-1;item%j0;count++;count0;
    流程结构:

    Begin
    输入正整数n
    for i←2 to n
    {
       item←pow(2,i)-1
       for j←2 to sqrt(item)
       {
          if(item%j==0)
          break;
          if(j>sqrt(item))
          {
             printf("%d
    ",item);
             count++;
          }
       }
       if(count==0)
       printf("None");
    End
    

    1.2.2试验代码截图

    1.2.3造测试数据

    输入数据 输出数据 说明
    6 3 7 31 使用题目数据验证
    1 None 使用最小n
    19 3 7 31 127 8191 131071 524287 使用最大n
    4 3 7 随机值n

    1.2.4PTA提交列表及说明


    1.部分正确:没有考虑到完全没有梅森数的情况,少了if(count==0)printf("None");.

    1.3同构数

    一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数.
    输入格式:在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符.
    输出格式: 1 5 6 25 76 376 625

    1.3.1数据处理

    数据表达:用了变量i;类型为整型.
    数据处理:i是循环控制变量.
    所用表达式:ii*i%10||iii%100||i==ii%1000;i=1;i++;
    流程结构:

    Begin
    for i←1 to 1000
    {
       if(i==i*i%10||i==i*i%100||i==i*i%1000)
       printf("%6d",i);
    }
    End
    

    1.3.2实验代码截图

    1.3.3造测试数据

    输入数据 输出数据 说明
    1 5 6 25 76 376 625 使用题目数据

    1.3.4PTA提交列表及说明

    2.代码互评

    我的代码:

    同学(1)的代码:

    代码差异:
    1.在判定是否是素数的for语句的语句二不同,我的是for(j=2;j<=sqrt(item);j++);而同学(1)的是for(j=2;j<=number/2;j++);
    2.在判定是否有梅森数时所用条件语句不同,我定义了flag=0;当没有一个梅森数时flag0,printf("None");而同学(2)定义了count=0;当有梅森数时就递增1;当count0时,printf("None");
    我的代码:

    同学(2)的代码:

    代码差异:
    1.由于我通过计算已知n=1时,没有梅森数,所以我没有表明n=1的情况,而同学(2)表明了n=1的情况,思路更加清晰.但n=2的情况与下面的for语句重复了,可以删去.
    2.我运用了for循环的嵌套,而同学(2)是for循环中加入一个while语句,表达方式不同.
    3.由于同学(2)先将n=1时列举出来了,可以不添加一个flag=0或者count=0去区别.

    3.学习总结

    3.1学习进度条

    周数/日期 这周所花的时间 代码行 学到的知识点简介 目前比较疑惑的问题
    第三周(10/08--10/12) 12个小时 300行左右 定义函数,if-else,for循环语句 输入与输出格式,空语句
    第四周(10/14--10/18) 15个小时 250行左右 for循环语句,基础的循环程序设计,数据的输出宽度 数据的输出宽度概念不太清晰,表达式的定义,空语句的定义
    第五周(10/23--10/26) 12个小时 350行左右 自定义函数的声明与调用,break跳出循环,while()循环语句 自定义函数的应用
    第六周(10/30--11/01) 18个小时 500行左右 if-else的嵌套,学习逻辑运算,条件语句,字符类型以及字符型数据的输入与输出 对字符型数据的输入与输出了解太少,缺乏练习,没有理解到getchar()字符输入函数与putchar()字符输出函数以及它们的运用
    第七周(11/05--11/07) 24个小时 720行左右 使用switch语句的三种情况,在switch语句中使用break语句,数组的定义与使用 continue语句的使用,for语句的嵌套循环
    第八周(11/12--11/15) 19个小时 810行左右 学习使用while和do-while语句实现次数不确定的循环,使用break语句处理多循环条件,以及了解while,do-while,for三种语句的差异 ASCII码和char类型和int类型的转换,进制数转化的多种方式
    第九周(11/19--11/21) 16个小时 600行左右 学习了for循环的嵌套以及了解break语句和continue语句的用法和区别 静态数组和动态数组的区别
    第十周(11/26--11/28) 17个小时 680行左右 使用穷举法解决问题 当存在数据溢出情况时,数据的定义与取值范围选取

    3.2累积代码行和博客字数

    3.3学习内容总结和感悟

    3.3.1学习内容总结

    3.3.2学习体会

    在本次作业完成过程中,我产生了一个[errror]Id returned 1 exit status错误,这是我之前从来没有看见过的错误,经过代码分析,我发现是我的int main()错打成为int mian()而导致的错误,在网上百度这个错误点时,发现该错误可能有如下原因:
    1.库函数拼写错误。如:printf,scanf,等
    2.定义的函数名在调用时,函数名拼写错误
    3.在执行函数时可能函数体本身的问题
    4.可能有程序正在运行

    此外,在pta刷题经常遇见数据溢出的情况,当发生整型数据溢出时就要考虑换整型变量符号.还有一个问题就是----就我而言,我对于ASCII码的运用与计算太过于生疏.

  • 相关阅读:
    git使用
    Git常用命令梳理
    git fetch 更新远程代码到本地仓库
    理解RESTful架构
    漫谈五种IO模型(主讲IO多路复用)
    python 单下划线/双下划线使用总结
    闰秒导致MySQL服务器的CPU sys过高
    闰秒问题
    Java线上应用故障排查之一:高CPU占用
    ZooKeeper安装与配置
  • 原文地址:https://www.cnblogs.com/wllrky/p/11939206.html
Copyright © 2011-2022 走看看