zoukankan      html  css  js  c++  java
  • C语言博客作业02--循环结构

    0.展示PTA总分


    1.本章学习总结

    1.1.1 while语句

    - 格式:
    while()
    {
    
    }
    - 表达式可以是任意合法的表达式。
    - 循环体语句只能是一条语句,但必须包含能改变循环条件真假的操作。
    - 常用于循环次数不明时。
    

    1.1.2 do-while语句

    - 格式:
    do
    {
    
    }while();
    - 先执行循环体再判断循环条件,即至少有一次循环。
    

    1.1.3. break语句

    - 可中止循环,还用于stitch语句。
    - 在中止循环时,常与if语句搭配使用。
    

    1.1.4 continue语句

    - 只用于循环。
    - 只是跳过后面语句继续循环。
    

    1.1.5 嵌套循环

    - 若某变量对外层循环初始化,则将该变量放在外层for循环之前;若某变量对内层循环初始化,则将该变量放在外层for循环之内(但仍属于外层循环的循环体),内层for循环之前。
    

    1.2 本章学习体会

    1.2.1学习心得

    本章给我的印象就是循环环环环环环,尤其是嵌套循环,环中环,套中套,整个人快傻掉,刚开始刷pta的时候几乎没有思路,直到看了超新星平台跟翁恺慕课视频,情况才有所好转。希望老师能在课堂上多一些例题,还有就是希望课堂派的预习作业能有答案详解。

    1.2.2代码量

    第一周 第二周 总计
    636 535 1171

    2.PTA实验作业

    2.1求幂级数展开的部分和

    2.1.1 伪代码

        定义x用于储存输入的值,定义一个i用于循环,定义一个factorial用于表示分母的变化并储存变化后的分母的数据,定义一个sum储存各个加数之和。
    
        令sum=factorial=1,输入x值
    
    for (i = 1;; i++)    //因为题目要求当最后一项的绝对值小于0.00001才结束循环,不好写i的极限条件,所以将该条件移至循环体内
    {
    	factorial = factorial * i;    //分母变化
    	sum = sum + pow(x, i) / factorial;    //将各个加数相加
    	if (fabs(pow(x, i) / factorial) < 0.00001)
    		break;    //依题意,当最后一项的绝对值小于0.00001时结束循环
    }
        
        输出sum值
    

    2.1.2 代码截图

    2.1.3 造测试数据

    输入数据 输出数据 说明
    0 1.0000 题目极限数据
    5 148.4132 题目极限数据
    -5 0.0067 负数

    2.1.4 PTA提交列表及说明


    - Q1:部分正确:i的极限条件判断错误。 
    - A2:百度了一下,解决了。
    - Q2:运行超时:factorial与其他数据类型不一,导致运算超时。
    - A2:将factorial定义成double型。
    

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

    2.1.2 伪代码

    定义n与k用于储存输入的数据,定义count用于计算素数是否到k个,定义sum用于储存总和,定义I与j用于循环,定义isPrime用于判断是否是素数(1不是,0是)
    
    输入n与k。
    赋count与sum初值为0。
    
        for (i = n; i >= 2; i--)    //依题意,从后面一个个数的循环
        {
    	    isPrime = 0;
    	    for (j = 2; j < i - 1; j++)       //判断是否为素数的循环
    	    {
    		    if (i % j == 0)
    		    {
    			    isPrime = 1;    //不是素数时, isPrime = 1,便于后期处理
    			    break;
    		    }
    	    }
    		    if (isPrime == 0)
    		    {
    			    sum = sum + i;    //求和
    			    if (count == 0)
    			    {
    				    printf("%d", i);    //第一个素数直接输出数值
    			    }
    			    else
    			    {
    				    printf("+%d", i);    //剩下的素数以+数值的形式输出
    			    }
    			    count++;
    
    		    }
    		    if (count >= k || i == 2)    //依题意,当count>k或不够k时输出
    		    {
    			  输出sum
    			    break;
    		    }
        }
    

    2.2.2 代码截图

    2.2.3 造测试数据

    输入数据 输出数据 说明
    666 6 661+659+653+647+643+641=3904 正常数据
    555 5 547+541+523+521+509=2641 正常数据
    10000 10 9973+9967+9949+9941+9931+9929+9923+9907+9901+9887=99308 题目极限数据

    2.2.4 PTA提交列表及说明

    - Q1:编译错误:一开始死脑筋,想着如何将从小到大的数值重新倒叙排列
    - A1:将循环从最大开始
    - Q2:部分正确:忽略了题意的“若n以内不够k个素数,则按实际个数输出”条件
    - A2:补充if (count >= k || i == 2)语句
    

    2.3.1猜数字游戏

    2.1.2 伪代码

    定义number作为被猜数,定义yourNumber作为猜数,定义N为次数极限,定义count为计算次数。
    
    输入被猜数与极限次数
        count赋初值为0
    
    do    //直接进入循环,输入负数时停止
    {
    	输入猜数
    	次数加一
    
    	if (yourNumber != number)    //猜错时分三种情况
    	{
    		if (count < N && yourNumber < 0)
    		{
    			printf("Game Over
    ");
    			return 0;
    		}
    		if (yourNumber > number)
    		{
    			printf("Too big
    ");
    		}
    		if (yourNumber < number)
    		{
    			printf("Too small
    ");
    		}
        }
        if (count > N&&yourNumber==number)    //猜对但超出次数的情况对
    		{
    			printf("Game Over
    ");
    			return 0;
    		}
    	if (yourNumber == number)    //猜对且在次数内的情况,依题意分三种情况
    	{
    		if (count == 1)
    		{
    			printf("Bingo!
    ");
    			return 0;
    		}
    		if (count > 1 && count <= 3)
    		{
    			printf("Lucky You!
    ");
    			return 0;
    		}
    		if (count > 3 && count <= N)
    		{
    			printf("Good Guess!
    ");
    			return 0;
    		}
        }
    
    } while (yourNumber >= 0);
    

    2.3.2 代码截图


    2.3.3 造测试数据

    输入数据 输出数据 说明
    66 6 -6 66 Game Over 负数时直接退出
    66 3 8 69 68 66 Too small Too big Too big Game Over 猜对但超出次数
    66 3 8 69 66 Too small Too big Lucky You! 刚好第三次猜对时

    2.3.4 PTA提交列表及说明


    - Q:部分正确:将猜对但超出极限次数列入猜对情况中
    - A:将猜对但超出极限次数这一情况单独列出

    3.代码互评

    3.1 查询水果价格

    - 同学代码
    


    - 我的代码

    - 对方用put()输出价格表。

    3.2 查询水果价格

    - 同学代码
    


    - 我的代码

    - 对方用while语句进行循环

  • 相关阅读:
    公司技术部与其他部门之间的那些事儿
    5万元百元大钞的"渣渣钱"重新拼接的软件方面的解决办法的思路。
    公司技术部门内部的发展变化过程。
    手机开发与360的那点事儿
    通用快排
    被中断的函数
    setjmp与longjmp
    setjmp在非主函数中调用
    array and structure
    check your input
  • 原文地址:https://www.cnblogs.com/g1215161797/p/11708655.html
Copyright © 2011-2022 走看看