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

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-4
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-4/homework/11451
    这个作业的目标 掌握使用for循环语句实现指定次数的循环程序设计
    学号 20209217

    1.PTA实验作业(15分/题)

    从PTA题目集中选出3个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题2分。

    1.1 求简单交错序列前N项和 (15分)

    题目内容描述:本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。

              输入格式:
              输入在一行中给出一个正整数N。
    
              输出格式:
              在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范 
              围。
    
              输入样例:
              10
              输出样例:
              sum = 0.819
    

    1.1.1实验代码截图

    1.1.2数据处理

    介绍实现本题过程中,你的数据表达、数据处理是怎么做的。

    数据表达:所用变量:i,k,N,flag,sum;这些变量的值的来源:N是自定义的,i是每循环一次后在原有的基础上加1,k=1 + 3 * (i - 1),flag=-flag,sum = sum + flag * 1.0
    / k;类型:整型,双精度浮点型。
    数据处理:数据用到的表达式:k=1 + 3 * (i - 1);sum = sum + flag * 1.0 / k;flag=-flag;流程结构:循环结构。

    1.1.3 PTA提交列表及说明

    根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。

    • Q1:当看到编译错误后,回头再检查了一遍,觉得没什么问题
    • A1:将sum = sum + flag * 1.0 / [1 + 3 * (i - 1)]变换了一下,定义了一个k,并将表达式改成k=1 + 3 * (i - 1);sum = sum + flag * 1.0 / k答案才正确

    1.2 求分数序列前N项和 (15分)

    题目内容描述:本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

             输入格式:
             输入在一行中给出一个正整数N。
    
             输出格式:
             在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
    
             输入样例:
             20
             输出样例:
             32.66
    

    1.2.1 实验代码截图

    1.2.2 数据处理

    介绍实现本题过程中,你的数据表达、数据处理是怎么做的。

    数据表达:所用变量:N,i,a,b,c,d,sum;这些变量的值的来源:N是自定义的,i是每循环一次后在原有的基础上加1,d=b;c=a + d;b=a;a=c;sum=sum + a / b;类型: 整型,双精度浮点型。
    数据处理:数据用到的表达式: d=b;c=a + d;b=a;a=c;sum=sum + a / b;流程结构: 选择结构、循环结构。

    1.2.3 PTA提交列表及说明

    根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。

    • Q1:答案出现错误
    • A1:试了很多遍后,发现表达式d=b;c=a + d;b=a;a=c;的顺序排错了,后将顺序调整后最终答案才正确

    1.3 求平方根序列前N项和 (15分)

    题目内容描述:本题要求编写程序,计算平方根序列√1+√​2+√3+⋯的前N项之和。可包含头文件math.h,并调用sqrt函数求平方根。

              输入格式:
              输入在一行中给出一个正整数N。
    
              输出格式:
              在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后两位。题目保证计算结果不超过双精度范围。
    
              输入样例:
              10
              输出样例:
              sum = 22.47
    

    1.3.1 实验代码截图

    1.3.2 数据处理

    介绍实现本题过程中,你的数据表达、数据处理是怎么做的。

    数据表达:所用变量:N,i,sum;这些变量的值的来源:N是自定义的,i是每循环一次后在原有的基础上加1,sum=sum + sqrt(i);类型: 整型,双精度浮点型。
    数据处理:数据用到的表达式: sum=sum + sqrt(i); 流程结构: 循环结构。

    1.3.3 PTA提交列表及说明

    根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。

    • Q1:显示段错误
    • A1:发现犯了一个低级错误,变量名N面前缺了一个取地址运算符&
    • Q2:显示格式错误
    • A2:发现在输出语句的里面多按了一个空格,删除多余空格后才显示正确

    2.阅读代码(-5——5分)

    找一份优秀代码,理解代码功能,并讲出你所选代码有点及可以学习的地方。
    来源:https://www.nowcoder.com/ta/acm-solutions?query=&asc=true&order=&page=2
    链接:https://www.nowcoder.com/ta/acm-solutions/review?tpId=20&tqId=11234&query=&asc=true&order=&page=8
    问答题:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
    输入描述
    第一行是测试数据
    输出描述
    对输入的每组数据M和N,用一行输出相应的K。
    输入例子
    1
    7 3
    输出例子
    8

         #include<stdio.h>
         int fun 
         {
             if(m==0||n==1)
                 return 1; 
             if(n>m)
                 return fun(m,m);
             else
                 return fun(m,n-1)+fun(m-n,n);
         }
         int main()
         {
             int T,m,n;
             scanf("%d",&T);
             while(T--)
             {
                 scanf("%d%d",&m,&n);
                 printf("%d
    ",fun(m,n));
             }
         }
    
    此代码功能:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
    学习的地方:认识了fun函数,C语言中,fun函数是用调用主函数的。它是指用来定义一个函数或是方法,这版样在引用权时可以用fun表示。比如fun(int x,y), 
               fun(int x,y) 有上面的出现,必然在主函数里有调它,fun没有其它意思,只是在调时用到这个单词,上面的意思是调用主函数中的数值。if(m==0||n==1)中 
               的“||”表示“或”的意思。while(T--)中,T--是自减运算,是每次T自身减1,while(T--)就是当T自身减到0就退出循环。
    

    3.学习总结(15分)

    3.1 学习进度条(5分)

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第三周 4天 156 for语句 在综合表达式中,不知道为什么不能用"[ ]"

    3.2 累积代码行和博客字数(5分)

    时间 博客字数 代码行数
    第一周 638 12
    第二周 562 97
    第三周 2058 156

    3.3 学习感悟(5分)

    1.感觉题目越来越难了,要花费更多的时间才能解决,但在通过自己一步一步解决问题的过程中的感觉真的很爽;
    2.在写一些逻辑性比较强的代码时,不要一股脑的去编写,要把思绪理清楚再写;
    3.对for语句越来越熟练了;
    4.要继续努力学习并加强练习C语言。

  • 相关阅读:
    如何打开“USB调试”模式?
    Eclipse常用配置
    【luogu P5363】移动金币(博弈论)(DP)(数位DP)(MTT)
    【luogu P4245】【模板】任意模数多项式乘法(拆系数FFT)(MTT)
    【ybtoj高效进阶 21178】星际大战(并查集)
    【ybtoj高效进阶 21177】小小网格(杜教筛)(数论分块)(莫比乌斯反演)
    【luogu P4213】【模板】杜教筛(Sum)(数学)(整除分块)
    【luogu P6860】象棋与马(数学)(杜教筛)
    【luogu AT2376】Black and White Tree(结论)(博弈论)(二分图)
    SAM入门三题:字符串水题, LCS, P5546 [POI2000]公共串
  • 原文地址:https://www.cnblogs.com/zhge/p/13940085.html
Copyright © 2011-2022 走看看