• C博客作业02--循环结构


    0.展示PTA总分


    1.本章学习内容

    1.1学习内容总结

    while循环

    while
    {
    语句;
    }
    语句;
    

    说明:

    1.首先判断while后面括号内的语句是否为真,若为真则进入循环,执行大括号内的语句,若为假,则跳过while循环执行循环体外的语句。
    2.若在while的大括号内执行了break语句,则循环立刻终止,跳出循环去执行循环体外的语句。
    3.一直循环到while后面小括号的表达式为假,循环才结束。
    

    do while循环

    do
    {
    循环语句;
    }while(循环条件);
    

    说明:

    1.先无条件执行一次循环体内的语句然后再判断循环条件的真假,除此之外与while循环结构一致。
    2.特别注意在循环条件后面加上一个分号,表示循环的结束。
    

    嵌套循环

    int i,j,n;
    for(i=0;i<n;i++)
    {
    for(j=0;j<i;j++)
    {
    }
    }
    

    说明:

    1.外层循环一次,内层循环一轮。
    2.如果在内层循环遇到break语句,则跳出内层循环,外层循环继续。
    

    while,do while和for循环的使用场合

    1.如果已经知道循环次数,则选择使用for循环更适合。
    2.在不知道循环次数的情况下,更适合使用while循环或者do while循环,如果有可能一次循环都不执行,应该考虑使用while循环,如果至少循环一次,应该考虑使用do while循环。
    

    break语句和continue语句

    1.在没有循环结构的情况下,break不能用在单独的if-else语句中。
    2.在多层循环中,一个break语句只能跳出当前循环。
    3.continue语句的作用是跳过循环体后面的语句,继续下一次循环。
    4.continue语句和break语句的区别在于,break语句结束循环,而continue语句只是跳过后面的语句继续循环。break语句除了可以中止循环,还用于switch语句,而continue语句只能用于循环。
    

    1.2本章学习体会

    • 本章我们学习了while循环,do while循环,for循环还有嵌套循环,感觉比之前的顺序、分支结构难。特别是嵌套循环,不容易看懂,因为用到的变量比较多,结构也是比较复杂,需要用的大括号多,一不小心漏掉一个就会编译错误,检查起来比较麻烦。所以,代码规范很重要,一个大括号占一行才不容易出错。另外,打代码特别需要耐心,可能要改很多次才提交正确,平时写代码的时侯细心一点,就能避免一些不必要的错误。
    • 代码量为800行左右,离目标还差一大截。

    2.PTA实验作业

    2.1 7-9 龟兔赛跑

    2.1.1伪代码

    输入比赛时间T
    do
    {
        if(十分钟后兔子还是比乌龟快)
    {
        if(30分钟后比赛没有结束)
    {
    tortoise = tortoise + 3 * 30;
    time = time + 30;
    }
    else没有到30分钟比赛结束
    {tortoise = tortoise + (T - time) * 3;
    	break;
    }
    }
    tortoise = tortoise + 3;
    rabbit = rabbit + 9;
    time++;
    }while(比赛时间不等于比赛结束用时)
    输出比赛结果及胜利者所跑距离
    

    2.1.2代码截图


    2.1.3造测试数据

    输入数据 输出数据 说明
    242 @_@ 726 正常数据
    9 _ 81 小于十分钟
    30 -_- 90 临界数据

    2.1.4PTA提交列表及说明

    • 提交之后显示答案错误,一时真看不出来哪里错,后来重新看一遍题目,是把兔子和乌龟每分钟前进的距离搞反了。
    • 把rabbit=rabbit+3改成rabbit=rabbit+9后提交还是不对,再检查发现输出有问题,当rabbit>tortoise 时,输出的是乌龟跑的距离。
    • 改完后提交发现输出还是有问题,再重新审题,发现输出表情后面多了一个空格。

    2.2 7-8 查询水果价格

    2.2.1伪代码

    输出菜单
    for(循环五次)
    {
    输入选择的编号
    if(输入的编号为零)
    退出,程序结束;
    switch(编号)
    {
                    case 1:price = 3.00;
    			break;
    		case 2:price = 2.50;
    			break;
    		case 3:price = 4.10;
    			break;
    		case 4:price = 10.20;
    			break;
    		case 0:break;
                    default:输入其他编号,价格为零;退出;
    }
    输出价格
    }
    

    2.2.2代码截图


    2.2.3造测试数据

    输入数据 输出数据 说明
    3 price=4.10 正常数据
    0 0数据
    6 price=0.00 非正常数据

    2.2.4PTA提交列表及说明

    • 提交多次一直都是答案错误,一开始给choice定义的是字符型,所以就把case 1改成case '[1]',然后还是错。
    • 后来把choice的类型改为整型,case '[1]'改成case 1,结果提交还是有错。
    • 检查题目之后在for循环内,switch语句外加一个判断编号是否为零的if语句,提交还是有错啊。
    • 重新检查每一次输出都有菜单出来,于是把输出菜单放到for循环外面。

    2.3 7-2 梅森数

    2.3.1伪代码

    输入一个正整数n
    if(n<20)
    {
    for(从2^2-1开始循环)
    {
    num = pow(2, i) - 1;
    for(判断素数)
    {
    if(不是素数)退出;
    if(是素数)
    {
    输出素数的值
    count++;
    }
    }
    }
    }
    if(count==0)
    输出“None”
    

    2.3.2代码截图


    2.3.3造测试数据

    输入数据 输出数据 说明
    6 3 7 31 正常数据
    2 3 特殊数据
    0 None 0数据

    2.3.4PTA提交列表及说明

    • 提交后找错发现把num= pow(2, i) - 1 写成i = pow(2, i) - 1,改完后仍然有错。
    • 再把i<n改为i<=n,感觉没什么变化,还是不对。
    • 再检查发现给j的初值是1,然后把j=1改成j=2。

    代码互评

    同学代码截图

    代码1


    代码2


    自己代码截图


    • 第一个同学所用的变量比较少,使程序变得更简化,整个思路也比较清晰,for循环里面用了三个if语句,比较容易理解。她的代码写得规范,没有什么安全问题。
    • 第二个同学的代码相对于我的就更简洁,引入了变量flag,使整个程序更简洁明了,值得学习。另外,代码的排版整洁有序,可读性强。
  • 相关阅读:
    几种简单排序算法
    【转】虚拟机下CentOS7开启SSH连接
    【转】SignalR来做实时Web聊天
    加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用
    C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)
    【C#公共帮助类】给大家分享一些加密算法 (DES、HashCode、RSA、AES等)
    对称加密与非对称加密
    PowerDesigner概念模型与物理模型相互转换及导出数据字典
    SQO2008配置管理工具服务显示远程过程调用失败
    MongoDB学习笔记-数据格式及数据类型
  • 原文地址:https://www.cnblogs.com/4-Real/p/11701654.html
Copyright © 2020-2023  润新知