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


    1.本章学习总结

    1.1思维导图

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

    1.2.1 学习体会

    在学习了数组之后,发现需要做的题目数量变多了,一个程序的代码量也增加了。随着c语言的学习越来越深入,题目的难度也越来越大,发现编程真的是个熟能生巧的东西,有时候几天没有编程,

    可能对之前学习的技巧都有些生疏。在C语言中,我觉得数组的应用还是挺广泛的,大多数题目都可以用上数组。同时在这几周学习数组的过程中,也收获颇多,例如在对数组初始化时,并没有必

    要使用循环来对数组一一初始化,而是可以定义数组时用static来对数组整体直接初始化,还有数组的几种输入方式,一是在定义的时候直接复制,二是用getchar、gets、fgets、scanf对数组进

    行赋值,在学习字符数组的过程中也学会了一些函数的运用,例如strlen比较常用,但在用之前需加上头文件string.h。

    1.2.2 代码累计

    2.PTA总分

    2.1截图PTA三次题目集:一维数组、二维数组和字符数组共3次题目集的排名得分



    2.2 我的总分:

    PTA总分:430

    3.PTA实验作业

    3.1 PTA题目1

    本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置

    3.1.1 算法分析

    输入数组个数和移动次数
    输入数组
    m=m%n          //缩小移动的次数
    for(i=m to n-1) then
    依次输出数组第m+1到n的数
    end for
    for(i=0 to m-2) then
    再依次输出数组第1到m个数
    end for
    

    3.1.2 代码截图

    3.1.3 PTA提交列表及说明


    Q1:当m大于n时m为n的倍数时错误
    A1:所以添加了一个m=m%n来缩小m的范围,移动后的效果却是一样
    Q2:输出时两个数之间每空格或句尾多空格
    A2:定义了flag变量用来控制第一个不输出空格,后面的数输出空格

    3.2PTA题目2

    一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小

    3.2.1算法分析

    int flag,flag1        //判断是否为鞍点和矩阵是否存在鞍点
    输出二维数组
    for(i=0 to n-1) then
         for(j=0 to n-1) then
              for(k=0 to n-1) then           //遍历所在的行和列
              判断是否为鞍点
              end for
         若是鞍点)  输出所在行和列
         end for
    end for
    若不存在鞍点 输出NONE
    

    3.2.2 代码截图


    3.2.3 PTA提交列表及说明


    Q1:不存在鞍点时却会输出存在鞍点的结果
    A1:没有将在行上最小和列上最大的结果结合起来,结果导致只要是行上最小或列上最大就会判断这个点时鞍点

    3.3 PTA题目3

    本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出

    3.3.1 算法分析

    输入字符数组 ch[]
    int x=strlen(ch)      //计算数组长度
    for(i=0 to x-1) then
        flag=0;
        for(j=i+1 to x-1) then
        若有重复字符
        flag=1;break;
        end for
        if(flag==0) then
        把不重复的字符存入一个新数组内
    end for
    for(i=1 to k-1) then
        for(j=0 to k-i-1) then
        冒泡法对新数组进行排序
        end for
    end for
    输出删除重复数据的数组
    

    3.3.2 代码截图


    3.3.3 PTA提交列表及说明


    Q1:输入带有空格时删除字符出现错误
    A1:输入字符数组是用的是scanf语句,scanf输入的字符数组不能带空格,后来改成了getchar

    4.代码互评

    4.1 代码截图

    我的代码


    同学的代码


    4.2 二者的不同

    1、在我的代码中自定义了一个函数用来判断是否字符为数字或字母,在这种需要多次判断代码中,我觉得可以让写代码的人更轻松,而他是直接判断

    2、他的代码分两个循环,先判断@之前的是否符合规范,再判断@之后是否是.com,我的代码中就是从头到尾判断是否符合规范,若不符合从中间break

  • 相关阅读:
    温故知新 将Date和String类型相互转换
    温故知新 线程
    温故知新 数组
    温故知新 集合
    温故知新 流(字节流与字符流)
    温故知新 jdbc 数据库调取封装
    Reds 持久化 高并发 高可用
    批量修改文件后缀名
    scala之旅-核心语言特性【高阶函数】(十)
    scala之旅-核心语言特性【使用混入组合类】(九)
  • 原文地址:https://www.cnblogs.com/porphyra/p/10086620.html
Copyright © 2020-2023  润新知