• 循环结构


    1.本章学习总结

    1.1 思维导图

    1.2 本章学习体会及代码量学习体会

    1.2.1 学习体会

    • 这周学习了循环结构,对循环结构使用的选择有的一定理解,知道循环次数一般用for,反之一般用while(能用for都能用while),而do-while用于至少要执行一次。
    • 加深对语法的理解,学语句时感觉学会,但是考察方式变换时思路又会谜之走偏,总是把握不住关键点。
    • 因为PTA2840分的题没有刷很多,所以做题的思路比较贫乏,掌握知识点却不知从何入手,所以听取老师建议争取多看代码,多积累经验,还能学习规范的代码格式。
    • 随着学C的深入,解题的代码量越来越多,保证质量的同时还要高效率,所以决定逐步提高自己打字等方面的操作速度。

    1.2.2 代码累计

    2.PTA总分

    2.1截图PTA中循环结构2次题目集的排名得分


    2.2 我的总分

    循环的嵌套:115分
    循环结构(单层) :175分
    总分:290分

    3.PTA实验作业

    3.1 PTA题目1

    模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。

    3.1.1 算法分析

     定义number放输入的数  ,ch放输入的运算符,result放结果
    while  ch != ‘=’时
        输入number
    ch是 '+':result = result + number; break; //进行计算
    ch是 '-':result = result - number; break;
    ch是 '*':result = result * number; break;
    ch是 '/':
     if  number!=0      then               //分母不可为零
    		
               result = result / number;break;
     else
               输出 ERROR    //结束运行
     end   if
     default  do 
              输出ERROR    //结束运行
    end switch
       输入ch
     end  while
    输出result      结束运行
    

    3.1.2 代码截图


    3.1.3 测试数据

    3.1.4 PTA提交列表及说明

     Q1:一开始没办法实现所有输入的运算(读入数据问题)
     A1:然后调整了输入number和ch的位置
     Q2:没有判断非法运算符和分母为0
     A2:引入if语句判断分母,用default判断非法运算符
    

    3.2 PTA题目2

    形如2​n​​−1的素数称为梅森数(Mersenne Number),本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n−1的梅森数。
    输入在一行中给出正整数n
    按从小到大的顺序输出所有不超过2​n−1的梅森数,每行一个。如果完全没有,则输出“None”

    3.2.1 算法分析

    定义i   定义flag   定义result用于放2的n次方-1的数 
    for i=2 to n  do
              result=pow(2,i)-1;     //是梅森数条件之一
          if result是素数(调用素数函数)   then 
    	            输出result
    	    flag=1	      //flag==1就是有素数 
          end if 
       end for 
         if   flag=0    then         //没有梅森数
         输出  None	
         end if				
    结束运行 
     定义判断素数的函数
    

    3.2.2 代码

    3.2.3 测试数据

    3.2.4 PTA提交列表及说明

     Q1:当没有梅森数时没有输出None,并且输出是从大到小(题意是从小到大)
     Q2:调用pow次数太多,最大n时运行超时
     A1:通过定义函数等简化代码,用for语句实现从小到大输出,同时减少了调用pow语句的次数
    

    3.3 PTA题目3

    你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。

    3.3.1 算法分析

    定义count放单词长度 定义flag=1;定义 ch放输入字符
        do
        {
            count=0
            do
               {
    		输入ch
    		if ch != ' '且 != '.'  then      //满足一个单词或一个句子                
    		    count++ 
    		end if 
    	} while ch!=' '且!='.' 继续循环
                end  while      
      if    count !=0  then               //count==0不用输出 
    	
    	 if   flag=1  then               //此处为调整输出格式,最后没有空格     
    		输出count
    		flag=0
    	 else
    		输出 空格count
    	 end if	
     end if	
    }while ch != ' . ' 继续循环         //一个句子结束
         end  while
    结束运行 
    

    3.3.2 代码

    3.3.3 测试数据

    3.3.4 PTA提交列表及说明

     Q1: 开头多了一个空格
     Q2:空句子和连续多个空格时输出0导致错误
     A1:用 IF语句判断count是否为0,当count不为0时才输出
    

    4. 代码互评

    同学代码:

    我的代码:

    4.2 两者的不同

    1.同学:是先通过while循环计算出目标数的位数,然后得 first=pow(10,cnt-1),number%=first; first/=10;就可以顺序输出读音。(要念的数在此称目标数)
    我:使用for循环把目标数放在数组中,然后再使用for循环把放数组的数按顺序输出读音。
    2.同学:通过if语句(把空格独立出来输出)处理结尾空格
    我:我是第一个不带空格,之后每个输出前带空格

  • 相关阅读:
    ffmpeg使用中文使用+解释
    CentOS GCC升级到4.6.1(转)
    C#委托与直接调用方法区别
    微软面试题,倒置数组
    MSDN中介绍的图片格式
    你们的学校是几流
    VS代码模版
    正则表达式
    Visual Studio 2010中添加项目模板
    泛型详解
  • 原文地址:https://www.cnblogs.com/codedawn/p/9840309.html
Copyright © 2020-2023  润新知