zoukankan      html  css  js  c++  java
  • 第二次作业循环语句

    C语言--第02次作业

    1.本章学习总结

    1.1思维导图

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

    1.2.1 学习体会

        本章为循环语句的学习,给我的直观感觉就是难,不是知识点难,而是算法上的确是因为没有积累导致常常无从下手或只能解决一半。总而言之就是见过的题太少,又后者说是还在积累的路上。也正是因为这样,看别人的代码,理解他们的思路,明白题目的要求成了小白所需要具备的基础要求。从他人的代码中学习,取其精华,去其糟粕是在学习道路上必须要具备的基本素养。自然,学习借鉴与照搬照抄有很大的不同。因为很多题目都有让我学到新知识,所以,代码备注有的时候被我搞得不太像提示要做什么的备注,更像是一块知识笔记,我希望可以将其用作我复习又或者是提醒自己的手段。
        本章学习之前的那场考试,让我觉得我有必要去多做一些题,只有多打代码,才能熟练。但是,本章,我并没有做到,我也就只是艰难的完成了老师布置的任务。现实的确有些令人挫败,我想,这还是面对困难时,我的惰性占了上风,使得效率极低。希望我的下次博客,能看到战胜自己惰性的自己吧。
    

    1.2.2 代码累计

    2.PTA总分

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


    2.2 我的总分:

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

    3.PTA实验作业

    3.1 PTA题目1

    7-8 单词长度

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

    3.1.1 算法分析

    - 定义i,num,x,flag
    - 输入num
    - flag=num
    - if(num<0)     num=-1*num;  flag=num;  printf("fu ");     //先解决负数
    - while(flag>9)    flag=flag/10;    x=x*10;                         //通过循环首先数字是几位数
    - while(x>=1) 	i=num/x;
        -  switch(i)
            {
               case 0:
               printf("ling");
               break;
               case 1:
               printf("yi");
               break;
               case 2:
               printf("er");
               break;
               case 3:
               printf("san");
               break;
               case 4:
               printf("si");
               break;
               case 5:
               printf("wu");
               break;
               case 6:
               printf("liu");
               break;
               case 7:
               printf("qi");
               break;
               case 8:
               printf("ba");
               break;
               case 9:
               printf("jiu");
               break;
      
           }
    -  if(x>9)    printf(" ");       num=num%x;        x=x/10;             //依次算出后面的位数
    

    3.1.2 代码截图


    3.1.3 测试数据

    3.1.4 PTA提交列表及说明

    • 提交列表中多次出现多种错误,在dev运行后看到,空格或多位数数字出现问题
    • 经过多种尝试,然后就部分正确,其中借鉴了同学的一些想法,逻辑,再通过自己编写
    • 所以,最后的提交两次是在自己写完以后,又整理了一遍思路,将自己没怎么想到,或有些差错的地方通过备注的方式再整理了一遍

    3.2 PTA题目2

    7-3 编程打印空心字符菱形

    本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。

    3.2.1 算法分析

    • 定义i,j,mid,n,ch
    • mid=(n+1)/2;
    • for i =1 to n do
      • for(j=1;j<=fabs(mid-i);j++)
      • if(i<=mid) num=i;
      • else num=n+1-i;
    • for(j=1;j<=2*num-1;j++)
      • if(j1||j2*num-1) printf("%c",ch+num-1);
      • else printf(" ");

    3.2.2 代码

    3.2.3 测试数据

    • 首先,这道题是在老师课上讲过后,在课堂上直接写的。
    • 从提交列表上直观感觉先写个伪代码,调整整体思路,将每个步骤罗列好对写题百利无害。

    3.2.4 PTA提交列表及说明


    3.3 PTA题目3

    7-10 jmu-c-二进制转10进制

    输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!

    3.3.1 算法分析

    - 定义num,ch,n
    - n=3,num=0
    - while(ch=getchar())  do
    - if(ch=='1'||ch=='0')   num=num*2+(ch-'0')
    - else  printf("error input!")    n=4
    
    • if(n=3) printf("%d",num);

    3.3.2 代码

    3.3.3 测试数据

    3.3.4 PTA提交列表及说明

    • 起先,代码为部分正确,通过dev测试了一下数据,发现有些情况会同时输出数量和input error!
    • 通过直接看代码,发现了在运行的时候有些情况在遇到break,跳出循环后,会进入循环外的输出,再输出数字
    • 后增加if,来判断是否需要进入循环外语句

    4.代码互评

    4.1 代码截图

    自己的


    代码截图来源于不愿意透露姓名的范同学

    4.2 二者的不同

    - 直观感受就是同学的代码比我的简单,比我的短
    - 同学的备注非常直观,给看的人一种清晰的感觉
    - 直接通过flag,sign,记录是否为单词,是否存在单词,给后面加不加空格这类的格式问题一种清晰的逻辑顺序
    

  • 相关阅读:
    Project Euler 97 :Large non-Mersenne prime 非梅森大素数
    Project Euler 96:Su Doku 数独
    Project Euler 95:Amicable chains 亲和数链
    Project Euler 94:Almost equilateral triangles 几乎等边的三角形
    Project Euler 93:Arithmetic expressions 算术表达式
    Project Euler 92:Square digit chains 平方数字链
    Project Euler 91:Right triangles with integer coordinates 格点直角三角形
    Project Euler 90:Cube digit pairs 立方体数字对
    Project Euler 89:Roman numerals 罗马数字
    Project Euler 88:Product-sum numbers 积和数
  • 原文地址:https://www.cnblogs.com/056lu/p/9860963.html
Copyright © 2011-2022 走看看