• C博客第02次作业循环结构


    1. 本章学习总结

    1.1 思维导图

    1.2 本章学习体会及代码量

    1.2.1 学习体会

    • 通过了本章的学习,我学到了C语言中的循环结构,并且通过作业,如PTA,课堂派,能够巩固对循环结构的认识,并且能够较好的运用到题目中。
    • 本章学习学到了while语句,do-while语句,以及break语句和continue语句,而且通过做作业后能够较好的使用这些语句,感到非常开心。
    • 学习C语言并没有想象中的那么恐怖,做什么事都是要慢慢来,没有一时就可以都学会的。每当做出一道题,都会有很大的成就感,这样也就更有动力去学习,也更有动力去深入了解C语言编程
    • 通过本章的学习还学到了伪代码的编写方法,每当做题前最好是先写一遍伪代码整理思路,写完伪代码之后再编程效果会更好。

    1.2.2 代码累计

    2. PTA总分

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


    2.2 我的总分:

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

    3. 实验作业

    3.1 PTA题目1

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

    3.1.1 算法分析

    • int sum=0存放十进制数 x=0判断是否输入非法字符
    • char op=‘0’进入循环
    • while(op!='\n')
      scanf ("%c",&op)
      if(op=='\n') break;
      if(op!='0'&&op!='1') x=1 break
      else sum=2*sum+op-'0'
    • end while
    • if(x==1) printf ("error input!")
      else printf ("%d",sum)

    3.1.2 代码截图

    3.1.3 测试数据


    3.1.4 PTA提交列表及说明

    • Q1:一开始没有定义x来判断是否有输入非法字符,跳出的输入非法字符的阶段时会有sum的输出。
    • A1:后来运用老师教的可以用flag来解决此问题,用上之后就解决了问题。
    • Q2:一开始不知道如何解决输入字符如何变成数字。
    • A2:后来运用老师教的op-‘0’可以字符转化成数字解决了问题。

    3.2 PTA题目2

    • 在商业和科学研究中,人们经常需要对数据进行分析并将结果以直方图的形式显示出来,这会大大增加这些数据的直观性,也便于数据的分析与对比。下面以顾客对餐饮服务打分为例,输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
      输入一个正整数n(1≤n≤20),表示有n个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~5这5个等级(1表示最低分,5表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。

    3.2.1 算法分析

    • int repeat,n,grade定义次数,人数,分值
    • int x1=0,x2=0,x3=0,x4=0,x5=0,x定义储存各个分值的人数
    • char op='*'
    • for(i=1;i<=repeat;i++)
      输入人数n
      for(j=1;j<=n;j++)输入成绩grade
      switch(grade)
      如果输入1 x1++break
      如果输入2 x2++break
      如果输入3 x3++break
      如果输入4 x4++break
      如果输入5 x5++break
      end for
      输出1:令x=0直到x=x1 输出*
      输出2:令x=0直到x=x2 输出*
      输出3:令x=0直到x=x3 输出*
      输出4:令x=0直到x=x4 输出*
      输出5:令x=0直到x=x5 输出*
      x1=x2=x3=x4=x5=0从新定义为下一次的表格做准备
      end for

    3.2.2 代码截图


    3.2.3 测试数据

    3.2.4 PTA提交列表及说明

    • Q1:一开始从x=0开始直到x=x1,结果出现每个表格的每个分值都会有至少一颗星。
    • A1:后来改成x=1开始直到x=x1,结果才正确。
    • Q2:一开始结束的时候没有定义x1=x2=x3=x4=x5=0,结果第二章表格会被第一张表格的数值影响从而出错。
    • A2:后来在结尾定义了x1=x2=x3=x4=x5=0才正确。

    3.3 PTA题目3

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

    3.3.1 算法分析

    • int x=0定义单词的字母个数,count=0定义有几个单词
    • 输入字符op=‘0’进入循环
    • while(op!='.') scanf ("%c",&op)
      if(op'.') 当输入.时当x!=0且count0是第一个单词时输出x
      如果count!=0不是第一个单词则输出空格加x
      如果一开始输入.时break;
      if(op!=' ') x++
      if(op' ')且x!=0时count++ if(count1) 输出x,x从新归零
      if(count!=1)输出空格加x,x从新归零

    3.3.2 代码截图


    3.3.3 测试数据

    3.3.4 PTA提交列表及说


    • Q1:这段代码写了很长时间,总是有一两个测试点过不去。
    • A1:加上一个count后,解决了只有一个单词时的问题。
    • Q2:还有一个问题就是输出结果后面不可以有空格。一开始是输出一个结果之后加上一个空格,结果老是出错。
    • A2:后面运用了多个嵌套语句终于解决了。

    4.代码互评

    4.1 代码截图

    • 同学的代码

    • 我的代码

    4.2 不同之处

    • 同学是使用flag控制输出,而我是使用count来控制输出。flag表示是否为第一个单词,而我的count是计算单词的个数,当count==1的时候也就是输出一个单词的时候,单词长度x不用加空格。否则需要加空格来控制最后一个单词输出后面不会加空格。
    • 同学的代码与我的都是差不多的思路,都是分为三个情况,一个是输入.时的情况,一个是输入空格时的情况,一个是不输入空格的情况。但是同学的代码看起来思路比较清楚。
    • 同学的代码看起来是有经过写思路之后才开始写的代码,而我的是直接开始写了,缺少了什么再补什么,这样的代码看起来比较不容易理解,以后会学学同学的方法,先列思路,写伪代码,再去做题。
  • 相关阅读:
    境外支付宝接口对接--支付接口
    js bind
    css的input文本框的 propertychange、focus、blur
    字符流Reader和Writer
    对象流--对象的序列化
    输入流IS和输出流OS学习总结
    File文件的读写操作RandomAccessFile类
    File文件操作学习总结
    Map集合的便利学习总结
    Map集合学习总结
  • 原文地址:https://www.cnblogs.com/wcrbailun/p/9851169.html
Copyright © 2020-2023  润新知