zoukankan      html  css  js  c++  java
  • C语言博客作业04--数组

    第四次作业

    1.本章学习总结.

    1.1 思维导图

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

    1.2.1学习体会

    • 这周学习了有关数组的知识,感觉数组是储存数据的一种新的方式,和之前循环嵌套和函数的知识都有些不同的地方,所以学习难度也比前几周的大;
    • 数组这一章要学习的内容比前面的多,一维和二维数组还有后面的字符数组,感觉自己上课时还是有些知识没有掌握,所以课后刷题的效率太慢呢了,难一点的题要想好久才能开始写;
    • 开始做二维数组的时候有些题觉得无从下手,完全没有思路,会问做好的同学或者百度一下,然后才能知道这题大概的解决思路是什么,所以还是要更熟悉课本的内容和老师课堂讲的知识点,学习更多不同类型题目的大概解决思路与方法;
    • 这几周下来感觉到了c语言学习的难度,基本上每个知识的难度都是越来越大,越到后面学习难度越大,所以自己还是要抓紧时间,在课后的时间里面认真预习和码代码,做题的速度跟上题集发布的进度,以免再出现一章多个题集而自己做题跟不上的情况;

    1.2.2 代码累计

    2.PTA总分

    2.1截图PTA中一维数组,二维数组,字符数组的排名得分


    2.2 我的总分

    • PTA总分:225分;

    3.PTA实验作业

    3.1 PTA题目1

    给定两个整型数组,找出不是两者共有的元素

    3.1.1 算法分析

    int 三个整形数组和两个数组中元素的个数
    for i=0 to i<m ; for j=0 to j<n
    给两个数组赋初值
    for i=0 to i<m //寻找数组a中的非公有元素
    for j=0 to j<n
    if a[i]=b[j] then flag=1
    if flag=0 c[k]=a[i] //将非公有元素存放到新的数组c中
    then k++
    for i=0 to i<n //寻找数组b中的非公有元素
    for j=0 to j<m
    if b[i]=a[j] then flag=1
    if flag=0 c[k]=b[i] //将非公有元素存放到新的数组c中
    then k++
    then 输出数组c[]
    

    3.1.2 代码截图


    3.1.3 测试数据

    3.1.4 PTA提交列表及说明

    • Q1: 想用删除共有元素的方法来做这题,但无法完成;
    • A1: 上课老师提到删除数组中的元素很难实现,所以重新定义了一个新的数组c来存放非公有元素。
    • Q2:某个数组中有两个元素相同且是非公有元素时重复输出了;
    • A2: 在最后输出数组c[]时在进行一次比较,如果前后两个元素相等的话就只输出后一个,保证重复的非公有元素只输出一次。

    3.2 PTA题目2

    指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。

    3.2.1 算法分析

    int 给定整数N和存放方阵的数组a
    int k为螺旋方阵的圈数
    for k=0 to k<=N/2  //N/2为N阶螺旋方阵的总圈数
    then 四个循环分别将元素填入每一圈的四个面
    for j=k to j<=N-k-1 //N-k-1为一圈中每一面要填入的元素个数
    for i=k+1 to i<N-k-1
    for j=N-k-1 to j>k
    for i=N-k-1 to i>k 
    end
    for j=0 to j<N //输出螺旋方阵
    

    3.2.2 代码

    3.2.3 测试数据

    3.2.4 PTA提交列表及说明

    • Q1:循环一行一列来给数组赋值无法实现螺旋;
    • A1:最开始的思路是先赋值一行,然后行下标不变改变列下标来赋值一列,但是试了很久都没有打出螺旋方阵,所以百度看了别的思路,其中一个就是按方阵的圈数来赋值;
    • Q2:开始不知道处于最中央也就是最后一个数怎么打出来;
    • A2控制循环条件,最后一圈的时候只进入第一个循环打出最后一个数,不会再进入下面三个循环;

    3.3 PTA题目3

    计算A−B,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。

    3.3.1 算法分析

    char 定义字符数组a,b
    int 字符数组a,b长度
    int flag=0
    then 输入字符数组a,b
    then alength=strlen(a)
    	blength=strlen(b)  //得到字符数组a,b长度
    for i=0 to i<alength
    for j=0 to j<blength
    if a[i]=b[j]  flag=1
    if flag=0 输出数组a中字符
    

    3.3.2 代码

    3.3.3 测试数据

    3.3.4 PTA提交列表及说明

    • Q1:不知道判断是否有相同字符的循环条件怎么写;
    • A1:最开始想再用一个循环来计算要判断几次,后来仔细看了书发现可以直接用strlen()来得到字符数组的长度;
    • Q2:重新定义一个字符数组来存放非重复的字符;
    • A2:重新定义一个字符数组c来存放两个字符串中的字符时代码量比现在的大,所以选择用flag控制字符数组a的输出;

    4.代码互评

    4.1 代码截图

    • 同学代码

    • 我的代码

    4.2

    不同

    1.她的代码在判断是否重复时的循环条件是i=0 to a[i]!='',而我的则是先得到字符数组的长度,然后用得到的长度控制循环结束,i=0 to i<alength;
    2.她的代码定义了一个新的数组来存放两个字符串中不同的字符;
    

    相同

    1.使用相同的循环方式来判断字符是否重复,都在循环里使用flag来判断是否相同时的条件;
    
  • 相关阅读:
    c++ 编译时检测结构体大小的的宏定义写法
    文本格式转换的网站,云转换
    chm格式文件,win7下用c:/windows/hh.exe打开
    visual paradigm 自动解析代码生成 UML图
    proxifiler 代理神器
    linux下设置 git ssh 代理
    一直出现 Enter passphrase for key '/root/.ssh/gitkey12.pub'
    connect-proxy rpm文件的安装
    [转] ssh免密码登录服务器
    [转] 公司局域网中代码访问 github.com
  • 原文地址:https://www.cnblogs.com/NOH8xxy/p/10089521.html
Copyright © 2011-2022 走看看