• C语言博客作业04--数组


    0.展示PTA总分

    • 一维数组
    • 二维数组
    • 字符数组

    1.本章学习总结

    1.1 学习内容总结

    • 查找数据:
      1.遍历法查找:从头遍历数组找到对应数据即退出循环,否则为未找到。
      2.二分法查找:(注意:本方法只适用于按顺序排列的整型数组。)
    while 上限>=下限
        中间值=(上限+下限)/2
        如果 中间值等于所查找的数
            找到数据,退出循环
        如果 数>中间值
            下限=中间值的前一位
        否则 上限=中间值后一位
    end while
    
    输入数据
    for(遍历数组)
        如果 找到所插入数的位置
            该位置往后数据右移一位,该位置赋值为插入的数
    end for
    输出更改后的数组
    
    • 删除数据:

    1.通过平移数组删除。

    
    for(遍历数组)
        如果 找到所需删除的数据
            从该数据位置往后所有数据向前平移一位,数组长度减一
        否则 输出未找到,退出循环
    end for
    输出更改后的数组
    

    2.通过定义第二个数组进行删除。

    定义第二个数组b[]
    for(遍历数组)
        如果 不是所需删除的数据
            b[K++]等于该数据
        否则 继续循环
    end for
    输出b数组
    
    • 数组排序:

    1.选择法排序:

    for(i=0;遍历数组)
        for(j=i+1;遍历数组)
            如果a[i]<a[j]
                交换a[i]a[j]
        end for
    end for
    输出重构的数组
    

    2.冒泡法排序:每次排序将最大的数移至最后

    for(i=1;i<=数组长度-1;i++)    //排序次数,全排列的次数为数组长度减一
        for(j=1;j<数组长度-i;j++)//每次排序完所需循环次数减一
            如果a[j-1]>a[j]
                交换a[j-1]a[j]
        end for
    end for
    输出重构后的数组
    

    1.2 本章学习体会

    • 数组这部分知识点很多,跟其他内容关联性也很强,所以学起来确实有些磕磕碰碰。但遇到一个问题解决一个问题,所以总体来说到现在对数组有较好的把握了。之前许多看似较难的题目都能运用数组轻松解答,可见数组灵活强大之处。
    • 代码量
    / 11周 12周 总计
    代码量 671 613 1284

    2.PTA实验作业

    2.1 7-10 出生年

    2.1.1 伪代码

    定义数组a[10]={0}
    输入年份,不同数个数
    while(1)
        对以年份的4个数字为下标的4个数赋值为1
        如果数组a中大于0的个数与输入的不同数个数相同
            则输出年份差及当前年份并退出循环
    年份加一
    end while
    

    2.1.2 代码截图



    2.1.3 造测试数据

    输入数据 输出数据 说明
    1988 4 25 2013 年份过1000,n为4
    1 2 0 0001 最小边界
    3000 4 12 3012 最大边界
    2019 3 2 2021 n为3,4为不同的不算
    233 2 67 0300 n为2,输出前补0

    2.1.4 PTA提交列表及说明

    1.部分正确:没有考虑到年份小于1000,千位的0无法记入数组。后续加上对年份小于1000 a[0]++的判断。
    2.全部正确;
    

    2.2 7-1 判断E-mail地址是否合法

    2.2.1 伪代码

    输入数据并找出“@”跟“.”所在下标及出现次数
    如果 “@”跟“.”出现次数大于1或者“@”的下标大于“.”的下标
        则 输出NO结束程序
    for(i=0;i<“@”下标;i++)
        如果 有一个元素不满足条件
            则 输出NO结束程序
    end for
    for(i=“@”下标+1;i<“.”下标;i++)
        如果 有一个元素不满足条件
            则 输出NO结束程序
    end for
    如果 从“.”往后三个元素如果不满足“com”或者com后仍有元素
        则 输出NO结束程序
    
    若都满足 输出YES
    

    2.2.2 代码截图



    2.2.3 造测试数据

    输入数据 输出数据 说明
    adf12_@qw_213.com YES 正常地址
    abc@123.comx NO com后面有字符
    abc.@123.com NO @前出现.
    abc@@123.com NO 多个@
    abc@123..com NO 多个.
    ab c@123.com NO 有空格
    abc123.com NO 无@
    abc@123com NO 无.

    2.2.4 PTA提交列表及说明

    1.段错误:不知道为什么在PTA使用while语句进行输入会报错,在VS却正常运行。后面改成scanf
    2.部分正确:没有考虑到com后可能仍有字符的情况,随后加上了总字符长度跟m下标大小的判断
    3.部分正确:由于scanf遇到空格会停止输入,所以导致数据不全。后面改成了gets
    4.全部正确。
    

    2.3 7-3 字符串转换成十进制整数

    2.3.1 伪代码

    定义数组b//用于储存符合条件的字符
    输入数据
    for(i=0;遍历数组)
        如果 数据符合条件
            则 b[k++]=该数据
        如果 b在被赋值之前出现'-'
            则 flag=1
    end for
    for(i=0;遍历数组b)
        如果 数据在0-9
            则 num=num*16+数据对应的十进制数
        否则如果 数据在a-z(大小写均一样)
            则 num=num*16+数据对应的十进制数
    end for
    如果flag等于1
        则num=-num
    输出num
    

    2.3.2 代码截图


    2.3.3 造测试数据

    输入数据 输出数据 说明
    +-P-xf4+-1!# -3905 有两个'-'
    a-bda-# 43994 '-'无效
    -((^(*# 0 全部过滤

    2.3.4 PTA提交列表及其说明

    1.部分正确:起先定义num的类型为double,输出%.0f数值较大时会出现误差,导致结果错误。然后改成了int。
    2.部分正确:用于判断结果是否为负数的flag1未赋初值。随后赋值为0.
    3.全部正确。
    

    3.阅读代码

    zoj 1336 Mark-up

    代码截图


    其样例的输入跟输出

    此代码功能类似于对文本进行编辑的语法代码。

    • 其中 '' 打开/关闭粗体字体(默认状态为OFF);'i'打开/关闭斜体字体(默认状态为OFF)
    • 's'设置字体大小;'s'后面紧跟可选数字;如果缺少该数字,则命令将恢复以前的大小。
    • '*'切换标记的打开/关闭处理;如果关闭处理,则将标记视为文字文本(默认状态为ON)。
    • SPMamp&命令后面的数字可以有小数点。

    值得学习的地方

    • 首先采用了枚举和bool,这是我还没涉及但需要学习的地方。
    • 其次他使用pos全局变量以及buf[SiZ]数组,将两个函数getNext跟putBack关联进行命令的判断。对于函数间的关联这也是老师强调,并且我更要学习的。
  • 相关阅读:
    hdu:2222:Keywords Search(AC自动机模板题)
    3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队
    bzoj:1026: [SCOI2009]windy数(数位dp)
    poj:1985:Cow Marathon(求树的直径)
    RQNOJ:PID30 / [stupid]愚蠢的矿工☆(树形背包)
    002 Android 系统特有的类介绍及使用
    001 Android TextUtils工具类的使用
    java 常用模块代码
    045 Android Studio 常用应用
    Android Studio 常用技巧
  • 原文地址:https://www.cnblogs.com/gdlkblue/p/11875409.html
Copyright © 2020-2023  润新知