zoukankan      html  css  js  c++  java
  • C语言—第二次作业

    1.本章学习内容

    1.1思维导图

    1.2本章学习体会即代码量学习体会

    1.2.1学习体会

    在本章中对循环的内容进行了加深训练,学习了一种解决问题的方法循环嵌套,也学到了伪代码的运用,在描述算法是运用伪代码往往能然阅读者更能明白代码的功能。目前对伪代码的运用还不是很熟练,用伪代码描述算法也有点不习惯

    1.2.2代码累计

    2.PTA总分

    2.1截图PTA中循环结构2次题目集的排名得分


    2.2我的总分

    总分:290

    3PTA实验作业

    3.1PTA题目1

    从读入的整数数据中,统计大于零的整数个数和小于零的整数个数。用输入零来结束输入,程序中用变量 i 统计大于零的整数个数,用变量 j 统计小于零的整数个数。

    3.1.1算法分析

    输入多个不为零的数
    while(n!=0)  do
    if(n>0)  then
    i++    //计算正数的个数
    else
    j++    //计算负数的个数
    end if
    end while
    输出i和j的值
    

    3.1.2代码截图

    3.1.3测试数据

    3.1.4PTA提交列表及说明

    • Q1:刚开始出现答案错误
    • A1:感觉在编译器上并没有什么问题,后来发现输入的数值应该是先输入再判断而不是先判断再输入
    • Q2:运行超时
    • A2:在判断n等于0时输入结束时所用语句有错误。

    3.2PTA题目2

    乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?

    3.2.1算法分析

    输入比赛结束的时间
    int rd=0 td=0 flag=0   //初始化乌龟、兔子所走的路程
    for time=1 to T do
    time1=0   //初始化兔子休息的时间
    rd+=9   //乌龟没分钟走3米
    if(flag==0)  then //flag=0代表兔子没在休息
    rd+=9
    end if
    if(time%10==0) then
           if(rd>td)  then   //兔子跑得比乌龟远开始休息    
           while(time1<30&&time1+time<T)  do   //判断兔子休息的时间不超过30分钟,并且判断比赛的总时间不超过限制
           td+=3
           time1++
           end while
           time=time1+time
    end for
    if(rd>td) then
    兔子赢了输出兔子跑的路程
    end if
    if(rd<td)  then
    乌龟赢了输出乌龟走的路程
    end if
    平局输入任意一个所走的路程
    

    3.2.2代码截图


    3.2.3测试数据

    3.2.4PTA提交列表即说明

    • Q1:之前几次错误基本都是由于没有考虑到在兔子睡觉时比赛结束这一例子
    • A1:前几次都是如果兔子比乌龟跑得远的话乌龟走的路程直接加上90而兔子的不变,后来才再加上一层循环逐分钟判断总时间是否会超过比赛的时间

    3.3PTA题目3

    本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n次方−1的梅森数。

    3.3.1算法分析

    输入n表示范围
    初始化flag=0  flag1=0
    for(i=2 to n )  do
    number=pow(2,i)-1
    flag=0    //用于判断是否是素数
    for(x=2  to number)  do
    num1=number%x    
    if(num1==0)   then   //判断是否为素数
    flag=1     
    end if
    end for
    if(flag=0)  then
    是素数则输出
    flag1=1
    if(flag1=0)
    输出None   //范围内没有满足要求的数
    

    3.3.2代码截图

    3.3.3测试数据

    3.3.4PTA提交列表即说明

    • Q1:出现答案错误n=1时出现问题
    • A1:当n=1时程序无输出,经调试过后发现最后一个判断范围内是否有满足条件的数放在了第一个for里面出现了n=1时不会进入第一个循环从而导致无输出,将第一个for‘的范围缩小就解决了’

    代码互评

    4.1代码截图


    4.2二者的不同

    龟兔赛跑这一问题中同学的代码在兔子睡觉时计算时间更简便,让读者更容易读懂这一代码的功能,代码的长度也更为简短

  • 相关阅读:
    Poj 2017 Speed Limit(水题)
    Poj 1316 Self Numbers(水题)
    Poj 1017 Packets(贪心策略)
    Poj 1017 Packets(贪心策略)
    Poj 2662,2909 Goldbach's Conjecture (素数判定)
    Poj 2662,2909 Goldbach's Conjecture (素数判定)
    poj 2388 Who's in the Middle(快速排序求中位数)
    poj 2388 Who's in the Middle(快速排序求中位数)
    poj 2000 Gold Coins(水题)
    poj 2000 Gold Coins(水题)
  • 原文地址:https://www.cnblogs.com/porphyra/p/9866721.html
Copyright © 2011-2022 走看看