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


    0.展示PTA总分


    1.本章学习总结

    1.1 学习内容总结

    • for循环结构:第一个是初始化,第二个是条件语句,第三个是自处理语句。 循环时第一个语句只使用一次,然后判断是否满足第二个语句,满足则进入循环体。直到不满足循环体再跳出。
    • while循环结构:先对while()括号内的条件进行判断,若为真则进入循环,否则跳出循环。
    • do-while循环结构:先执行循环体中的表达式的内容,之后再进行循环条件的判断,决定是否进行下一次的循环。
    • while循环结构与do-while循环结构的区别:while和do-while的区别在于判断条件的先后,while先判断,程序有可能不进入循环;do-while是后判断,无论是否满足条件都只是会进行一次循环。因此,同样的条件,两种循环的输出结过可能不同。
    • break:在执行循环语句时,break也起到控制循环的作用。当满足执行break的条件时,break强制循环结束,不再执行循环体中break之后的内容,并直接跳出循环。一般来说,在循环语句中,我们会用if与break搭配,当条件满足时,起到跳出循环的作用。break只跳出一层循环
    • comtinue:当执行到comtinue语句时,continue会跳过循环体中continue下面的语句,并结束本次循环,并进入下一次循环。
    • break只能用于switch和循环语句,而continue只能用于循环语句。

    1.2 本章学习体会

    • 循环嵌套难度大于选择和分支结构,需要耐心地读题,并合理使用循环语句。
    • 题量太多,不会做就很烦躁,但是在和同学讨论过后完成还是很开心。
    • 这两周代码量在900行左右。

    2.PTA实验作业

    2.1简单计算器

    2.1.1 伪代码

    int digit, sum, num = 0;
       /定义sum来累加计算产生的值/
    char op = '0';
    scanf("%d", &sum);
    while (op != '=')
    {
    	scanf("%c", &op);
    	/先将op定义为0,让它进入for循环,然后通过if语句来决定进行的运算法则和进行运算的数字/
    if (num == 1)/如果num没有被赋值为1,则输入了错误的字符/
    	printf("ERROR");
    else
    	printf("%d
    ", sum);
    

    2.1.2 代码截图

    2.1.3 造测试数据

    输入数据 输出数据 说明
    1+2*10-10/2= 10 数据正常
    1+2*10-10/2= ERROR 数据异常

    2.1.4 PTA提交列表及说明

    1.编译错误:打了中文的分号
    2.答案错误:刚开始没有理解数字和字符是一个个进去的,在询问同学之后,理解了输入时,sum第一次被赋值为1

    2.2梅森数

    2.2.1 伪代码

    {

    if /若输入n=1,即可判定没有梅森数/
    else
    	for/通过for循环输出一个个2的n次方减一的数字/
    	{
    	
    		for/通过for循环来判断是否为素数/
    		}
    
    	}
    

    2.2.2 代码截图

    2.2.3 造测试数据

    输入数据 输出数据 说明
    6 3 7 31 数据正常
    1 none 数据正常

    2.2.4 PTA提交列表及说明


    1部分正确:刚开始只写了j<=shu1.0/2,反复调试多次才发现,当输入n=2的时候,就无法输出任何值,应改为for (j = 2; j <= shu1.0 / 2+1; j++)
    2.部分正确:由于n=1放在循环中不好讨论,直接放在开头,即if (n == 1){printf("None");}

    2.3二进制转10进制

    2.3.1 伪代码

    char ch;
    int sum = 0;
    int flag = 0;/定义ch为字符,sum用来存储二进制转十进制的值的累加,falg用于不符合条件时跳出while循环/
    while (ch != ' ')
    {
    }/然后用switch语句,sum = sum * 2 + ch - '0'可以将一串二进制的字符转化为数字并且转化为十进制,/
    }
    if (flag == 0)
    {
    printf("%d", sum);
    }

    2.3.2 代码截图

    2.3.3 造测试数据

    输入数据 输出数据 说明
    11111111 255 数据正常
    34 error input! 数据异常

    2.3.4 PTA提交列表及说明

    1.答案错误:不知道二进制转十进制要怎么写,也不知道ch-'0'可以将字符转为数字。
    2.部分正确:除一和零以外的数字没有考虑,导致输入其他数字时循环无法执行,也得不出结果。

    3.代码互评

    • 同学代码

    • 我的代码

      评价:1.我在循环中使用了pow函数,导致提交时运行超时,而同学使用for函数,将pow函数表达出来。
      2.在输入N后,数的范围已经被确定,同学用for函数去算数的范围,其实直接将范围用N的表达式写出即可。
      3.其余的思路一致。

  • 相关阅读:
    使用Spring的MailSender发送邮件
    使用Spring的MailSender发送邮件
    C# List源码分析(二)
    EasyUI闪屏,EasyUI页面加载提示:原理+代码+效果图
    EasyUI闪屏,EasyUI页面加载提示:原理+代码+效果图
    Android Studio快捷键指南(本文持续更新)
    EventBus3.0使用总结
    hihoCoder #1054 滑动解锁
    hihoCoder #1069 最近公共祖先·三
    hdu 4411 Arrest
  • 原文地址:https://www.cnblogs.com/hzhong/p/11706936.html
Copyright © 2020-2023  润新知