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


    0.展示PTA总分


    1.本章学习总结

    1.1学习内容总结

    1.while循环语句

    基本格式如下:

    while(表达式)
    {
    循环体语句
    }
    

    与之前学习的for循环相比:
    while循环适用于循环次数未知,而for循环只能用于循环次数已知。(while同样适用于循环次数已知的情况)

    2.do-while循环语句

    基本格式如下:

    do
    {
    循环体语句
    }while{表达式};
    

    与上文的while循环相比:
    1.while语句是先判断后执行,反之,do while语句是先执行后判断。

    2.无论如何,do while的循环体语句至少会执行一次,而while循环有可能一次都不执行(即不进去循环)。

    3.循环控制语句

    break:

    (1).结束当前整个循环,执行当前循环下边的语句。忽略循环体中任何其它语句和循环条件测试。

    (2).只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来跳出。

    continue:

    (1).终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断。

    (2).结束当前循环,进行下一次的循环判断。

    (3).终止当前的循环过程,但他并不跳出循环,而是继续往下判断循环条件执行语句.他只能结束循环中的一次过程,但不能终止循环继续进行。

    4.嵌套循环

    一些小心得:
    1.写嵌套循环或较复杂的题目时,可以先将做题思路写成伪代码或者写在草稿纸上,若想到一点就写一点的话,写到后面可能会发现前面写的没有顾及全局,而满篇皆错,之后的纠错也会变得吃力。
    2.由于嵌套可能不止嵌一个,所以可以利用编译器上的+-号,如下图(PTA嵌套7-1)

    我觉得这个在差错的时候很好用,可以清晰地判断出是哪里的循环出了问题。

    1.2本章学习体会

    1.感觉从嵌套循环开始,题目愈来愈复杂,做起来比较吃力。
    2.希望老师可以多评讲下PTA或课堂派大家错的多的题目。
    3.本周代码量660。

    2.PTA实验作业

    2.1求n以内最大的k个素数以及它们的和

    2.1.1伪代码

    用函数prime()来判断是否是素数,变量sum来保存素数之和,变量count来保存素数的个数。
    输入一个数n
    for (i = n - 1; i > 1; i--)    
    if (prime(i))//调用函数
                    若是素数
    		count++;
    		if count == 1
    		输出i
                    end if
    		else
    		输出+i
    
    		sum += i;
    
    end if
    		if count == k//当达到最大次数
    		break;
                    输出sum
    int prime(int j)
                    判断是否素数
    

    2.1.2代码截图



    2.1.3.造测试数据

    2.1.4 PTA提交列表及说明


    1.答案错误:判断函数时写的代码出错,一开始没有用flag,导致多输出一些不是素数的数。

    2.2.2求幂级数展开的部分和

    2.1.1伪代码

    输入一个实数x
    	sum = 1 + x;
    
    	while (1)
    		molecular = pow(x, i);
    		denominator *= i;
    		i++;
    		item = molecular / denominator;//每一项=分子/分母
    		sum = sum + item;
    		if (fabs(item) < 0.00001)//判断是否循环结束
    			break;
    end if
    end while
    	输出sum
    	return 0;
    

    2.2.2代码截图

    2.2.3.造测试数据

    2.2.4.PTA提交列表及说明


    1.编译错误:之前写的,现在真的记不清了。
    2.答案错误:一开始写的时候把表达式写在while()中且sum = sum + item;的位置写在前面,导致结果错误,后面改成了恒真的while(),觉得这样便于判断推出循环的条件。

    2.3二进制转10进制

    2.3.1伪代码

    用字符型变量d来读取输入的数字
    if (c == '1' || c == '0')
    		while (1)
    			d = getchar();
    			if (d == '1' || d == '0')
    				result = result * 2 + d - '0';//二进制满2进1
    end if
    			else if (输入回车)
    				输出result
    				break;
    end if
    			else
    				输出error input!
    				break;
    end if
    end while
    end if
    	else
    		输出error input!
    

    2.3.2代码截图

    2.3.3.造测试数据

    2.3.4.PTA提交列表及说明

    虽然PTA上我一次就过了,但是在VS上写的时候,一直出错,后来在同学的帮助下,发现是字符型的数字要-’0‘才能转化为数字进行计算,若直接用字符进行计算,是用他们的AscII码进行计算,所以会出错。

    3.代码互评

    3.1龟兔赛跑
    同学的代码:

    我的代码:

    这个同学用的是数学一元一次线性方程的方法做的,思路新颖,而我用的是常规解法,中间部分嵌套过多,看起来很杂乱,这位同学的代码值得我学习。

    3.2查询水果价格
    同学的代码:

    我的代码:

    我的代码用的是for循环,而这个同学用的是while循环,并巧妙地用i--做表达式,当i=0时就不会进入循环,这在之前的课堂派题目中有出现过,他能灵活运用到自己代码中,值得我的学习。

  • 相关阅读:
    创建user keywords
    robotframework中list和dict variables
    安装sshlibrary库报错:Could not find a version that satisfies the requirement
    【转】用U盘制作启动盘后空间变小的恢复方法
    docker "exec format error"
    window cmd 设置IP,关闭防火墙,开启远程桌面
    Linux iptables
    python logging 模块
    docker 命令
    python xmlrpc入门
  • 原文地址:https://www.cnblogs.com/yeanxxx/p/11707242.html
Copyright © 2020-2023  润新知