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

    0.展示PTA总分



    1.本章学习总结

    1.1 学习内容总结

    • while循环

      • while循环与for循环一样,都要先判断循环条件才能进入循环体。
      • while循环一定要注意循环体内变量的变化,否则易死循环。
      • 比起for循环,while循环更适用于无法事先判断循环次数的循环。
    • do-while循环

      • 与其他循环相比较,do-while循环的特点是会先进入循环体再判断循环条件,即无论循环条件是否为真,循环体都会被执行一次。
    • break和continue语句

      • break语句:直接跳出整个循环,提前结束循环,进入循环后面的语句。
      • continue语句:跳过continue后面的语句不执行,结束本次循环,继续下一次循环。
    • 嵌套循环

      • 外循环执行一次,内循环要执行一轮,所以一定要注意内循环中是否有变量要重置
      • 在内循环中如果有break,是跳出内循环,而外循环继续。

    1.2 本章学习体会

    • 作业难度上升,作业量也开始变大。
    • 做题的速度没有之前快,但相对来说花在写代码上的时间也更多了,代码量变大。
    • 代码量大概在1100左右。

    2.PTA实验作业

    2.1简单计算器

    2.1.1 伪代码

    定义字符型变量ch、oldch用了存储用户输入的字符;定义一个整型变量num,当用户输入的字符为数字时,将数值存储到num中;定义一个整型变量result,用于存储并输出计算的结果;定义一个flag=0,用于判断用户是否输入非法字符。
    if ch为数字
    then num = ch - '0'+ num*10
    else switch(oldch)
    if oldch为非法字符 then flag=1
    else 做相应计算
    end if
    end if
    if flag=0 then 输出result
    end if
    

    2.1.2 代码截图

    2.1.3 造测试数据

    输入数据 输出数据 说明
    10/0= ERROR 除法分母为0的数据
    1【2= ERROR 有非法字符的数据
    1+2= 3 正常数据

    2.1.4 PTA提交列表及说明


    提交列表说明:
    1.部分正确:没有定义一个flag判断之前的数据中是否出现了不合法的情况,导致特殊情况时输出的结果错误。
    2.答案正确:定义一个变量flag,通过判断flag的值来判断之前的数据中是否出现了不合法的情况。

    2.2龟兔赛跑

    2.2.1 伪代码

    定义time、rabbit、turtle分别表示时间、兔子跑的路程、乌龟跑的路程。
    for i = 1 to i = time do
    rabbit += 9;turtle += 3;
    if i % 10 == 0 then
    if rabbit > turtle then
    if time - i >= 30 then
    turtle += 90;i += 30;
    else turtle += 3 * (time - i);break;
    end if
    end if
    end if
    end for
    判断rabbit和turtle的大小,按要求输出结果。
    

    2.2.2 代码截图

    2.2.3 造测试数据

    输入数据 输出数据 说明
    7 _ 63 不足10分钟的数据
    20 _ 90 正常数据
    242 @_@ 726 正常数据

    2.2.4 PTA提交列表及说明


    1.部分正确:在VS上测试时只用了PTA上给的数据,答案正确后就直接提交了,后发现没有判断兔子休息时时间已不足半小时的情况。
    2.答案正确:在兔子休息的if语句里再嵌套一个if语句,用来判断剩余时间是否大于等于30分钟,后进行相应计算。

    2.3水仙花数

    2.3.1 伪代码

    定义一个函数int fact(int m,int n),用来计算幂次方。
    for i = fact(10, n - 1) to i = (fact(10, n) - 1) do
    item = i;sum = 0;
    for j = 1 to j = n do
    num = item % 10;sum += fact(num, n);item = item / 10;
    end for
    if i == sum then printf("%d
    ", i);
    end if
    end for
    

    2.3.2 代码截图

    2.3.3 造测试数据

    输入数据 输出数据 说明
    3 153、370、371、407 正常数据
    7 1741725、4210818、9800817、9926315 正常数据

    2.3.4 PTA提交列表及说明



    1.部分正确:第一次提交时使用了pow函数,答案都是正确的,但运行超时。
    2.答案正确:这次提交计算幂次方使用了自己写的函数,而不是直接用pow函数。


    3.代码互评

    同学代码:

    #include <stdio.h>
    int main()
    {
    	int t = 0;
    	int tortoise = 0;
    	int rabbit = 0;
    	int trabbit = 0;
    	int T;
    	int ret = 0;
    
    	scanf("%d", &T);
    
    	while (t != T)
    	{
    		tortoise += 3;
    		if (!ret)
    		{
    			trabbit++;
    			rabbit += 9;
    		}
    		t++;
    		if (trabbit % 10 == 0 )
    		{
    			if (rabbit > tortoise)
    			{
    				ret = 1;
    				trabbit += 30;
    			}
    		}
    		if (t == trabbit)
    		{
    			ret = 0;
    		}
    	}
    	if (rabbit > tortoise)
    	{
    		printf("^_^ %d", rabbit);
    	}
    	else if (rabbit < tortoise)
    	{
    		printf("@_@ %d", 3*T);
    	}
    	else
    	{
    		printf("-_- %d", 3*T);
    	}
    	return 0;
    }
    

    我的代码:

    #include <stdio.h>
    
    int main()
    {
    	int time;
    	int rabbit;
    	int turtle;
    	int i;
    
    	scanf("%d", &time);
    
    	rabbit = 0;
    	turtle = 0;
    
    	for (i = 1; i <= time; i++)
    	{
    		rabbit += 9;
    		turtle += 3;
    
    		if (i % 10 == 0)
    		{
    			if (rabbit > turtle) 
    			{
    				if (time - i >= 30)
    				{
    					turtle += 90;
    					i += 30;
    				}
    				else
    				{
    					turtle += 3 * (time - i);
    					break;
    				}
    			}
    		}
    	}
    	if (rabbit > turtle)
    	{
    		printf("^_^ %d",rabbit);
    	}
    	else if (rabbit < turtle)
    	{
    		printf("@_@ %d",turtle);
    	}
    	else
    	{
    		printf("-_- %d", rabbit);
    	}
    
    	return 0;
    }
    

    1.同学的代码是在兔子休息时,乌龟的路程依旧一分钟一分钟的往上加,而我直接将乌龟的路程加上90,时间也加上30分钟。
    2.相比起同学的代码,我这种方法效率会更高一些。

  • 相关阅读:
    随笔--摘录
    在windows+Linux环境下搭建Hadoop集群
    大数据 hadoop 环境搭建
    react-native 学习 ----- React Navigation
    android开发中关于继承activity类中方法的调用
    linux下 bin和sbin的区别
    inux中bin与sbin目录的作用及区别介绍
    hadoop 解除 "Name node is in safe mode"
    hadoop常用命令
    菜鸟使用MySQL存储过程and临时表,供新手参考,请高手斧正
  • 原文地址:https://www.cnblogs.com/w60-06/p/11707003.html
Copyright © 2011-2022 走看看