• C博客作业04--数组


    0.展示PTA总分



    1.本章学习内容总结

    1.1学习内容总结

    • 数组中查找数据的方法有顺序查找,二分查找
      顺序查找:

      二分查找:

    • 数组中插入数据
      输入一个数据x,将数组中的数据与x一个一个比较,如果大于x,记录下数据的下标,然后这个数据下标和其后的数据的下标都加一,后挪一位,然后将x赋值给数组的那个下标。
    输入长度为n的一维数组
    输入一个数据x
    for i=0 to n 
    if(数组元素大于x)
    break;
    end if
    end for
    for n-1 to i
    数据下标加一
    end for
    x=a[i];
    
    • 数组中删除数据
      删除算法:

      删除某个元素:
    输入长度为n的一维数组
    输入需要删除的数据x
    for i=0 to n
    if(x等于数组元素)
    for i to n-1
    数组下标加一
    end for
    end if
    end for
    
    • 数组中的排序方法有选择排序和冒泡排序
      选择排序:第一步找到一个最小数放到最前面,然后第二步在剩下的数里面,再找一个最小的放到剩下的数的最前面,重复步骤二,直到所有数排好

      冒泡排序:从左到右,相邻元素进行比较。每次比较一轮,把最大或者最小的放在前面,这样一轮一轮比较,实现排序。

    • 哈希数组案例:

      思路:设计一个辅助hash[],初值都为零,其下标为数组元素。输入一个数date,判断hash[date]是否为1,若为1,说明有重复数据,若为0,说明该数第一次输入,将它置为1。

    1.2本章学习体会

    • 本章学习了数组,内容比较多,有一维数组,二维数组,字符数组,需要记的知识点很多,要掌握的算法应用也多,学习下来总是忘记,或者记下来了不会用,对其知识点比较模糊,可能是练习应用还不够多。因此,每一次学习新的东西,都应该及时拿来应用,及时巩固,进行整理,方便记忆。最后一句话总结,要想提高编程能力,一定不能心急浮躁,要不断勤加练习。
    • 两周代码代码量在1400以上。

    2.PTA实验作业

    2.1 7-4 求矩阵中的最大小值

    2.1.1伪代码

    数据处理:最大值max,最小值min,二维数组a[n][m]表示输入的矩阵,row,col分别表示最大值的行下标和列下标,row1,col1分别表示最小值的行下标和列下标
    赋最大值最小值初值都为数组第一个元素
    for i=0 to n
    for j=0 to m
    if(a[i][j]>max)
    max=a[i][j]
    记录下最大值的行下标和列下标
    end if
    if(a[i][j]<min)
    min=a[i][j]
    记录下最小值的行下标和列下标
    end if
    end for
    end for
    

    2.1.2代码截图



    2.1.3造测试数据

    输入数据 输出数据 说明
    3 5 max=98 row=0 col=4 正常数据
    57 30 66 41 98 min=11 row=1 col=0
    11 93 54 62 31
    49 87 71 70 37
    ----- --------- -----------
    2 4 max=60 row=0 col=1 有相同的最大的数,要求输出行列最小,行优先
    55 60 43 21 min=21 row=0 col=3
    21 54 60 33

    2.1.4PTA提交列表及说明

    答案错误:把最大行下标和最小行下标搞混
    答案错误:我以为没有给最大行下标和最小行下标等变量赋初值是错的,都赋值为0后还是错
    答案错误:把最小值初值赋值为数组元素最后一个值
    答案错误:运行结果正确,可是提交显示错误,同学告诉要能连续输入,while的循环条件是scanf("%d %d", &n, &m) == 2
    格式错误:第二个输出没有加换行符
    

    2.27-3 判断上三角矩阵

    2.2.1伪代码

    数据处理:T表示矩阵的个数,n为数组长度,cnt为是否是上三角矩阵的标记
    输入矩阵的个数
    输入数组长度
    输入矩阵元素
    for j=1 to n
    for k=0 to j
    if(a[j][k]!=0)
    cnt=1;//不是上三角矩阵
    break;
    end if
    end for
    if(cnt==1)
    break;
    end for
    

    2.2.2代码截图


    2.2.3造测试数据

    输入数据 输出数据 说明
    2
    3
    1 2 3 YES 正常数据
    0 4 5 NO
    0 0 6
    2
    1 0
    -8 2
    ----- --------- -----------
    2 YES 最小n
    0 YES
    0

    2.2.4PTA提交列表及说明


    段错误:输入二维数组时忘记加上&,提示段错误
    答案错误:只遍历对角线下方元素,for循环中j应该从1开始而不是从0开始
    答案错误:内层for循环条件不是k<n而是k<j,扫描对角线下方元素
    答案错误:if的判断条件是对角线下方元素等于0,若为0退出,应该是若有不为0的就退出。
    答案错误:忽略了break只能跳出一层循环,所以要在内层for循环外加上一个判断条件,满足则继续跳出外循环
    

    2.3 A-B

    2.3.1伪代码

    数据处理:字符数组a存放第一次输入的字符串,字符数组b存放第二次输入的字符串,数组c为静态数组,初值全为0,strlen() 用于计算字符数组长度
    
    输入字符数组a
    输入字符数组b
    for i=0 to strlen(b) 
    c[b[i]]=1;
    end for
    for i=0 to strlen(a) 
    if(c[a[i]]==0)//说明数组a中没有数组b包含的数据
    输出处理后的数组a
    end if
    end for
    

    2.3.2代码截图


    2.3.3造测试数据

    输入数据 输出数据 说明
    I love GPLT! It's a fun game! 正常数据
    aeiou I lv GPLT! It's fn gm!
    ----- --------- -----------
    I love GPLT! 全部删除
    I love GPLT!
    ----- --------- -----------
    It's a fun game! I's a fun gam! 要删除的在头和尾
    te
    ----- --------- -----------
    I love GPLT! It's a fun game! 无删除
    zbh I love GPLT! It's a fun game!

    2.3.4PTA提交列表及说明

    部分正确:开始用fgets()函数输入字符串,运行没有问题
    部分正确:将fgets改成gets居然就对了,但是在vs中显示语法错误,所以还是考虑另一种输入
    答案错误:用scanf输入字符串,不小心输入两个相同的字符串,显示答案错误
    部分正确:分别用scanf输入两个字符串数组a和b,提交过了几个测试点
    答案错误:将scanf中原来的%s改为%c,全部错误
    段错误:换用while循环输入,写循环条件时getchar忘记了后面的括号
    部分正确:b[j]='';不小心写成b[i]='';
    

    3.阅读代码







    • 代码功能:给出密文C和公钥{E,N},,其中加密由C=(M^E)mod N定义,解密由M=(C^D)mod N定义,代码利用密文C和公钥{E,N}找出明文M。
    • 代码优点:
      1.用const定义了一个整型常变量S。便于进行类型检查,消除了一些隐患,还可以避免模糊数字的出现,可以很方便地进行参数的调整和修改。
      2.巧妙运用了while (~scanf("%lld%lld%lld", &C, &E, &N)),只有scanf返回-1时循环才结束,增强了程序的可读性。
      3.代码语句构造简单直接,功能与性能良好,一行一条语句,程序逻辑结构层次分明,结构清楚。
  • 相关阅读:
    教你删除Linux中这些因特殊字符命名无法删除的文件
    xtrabackup进行mysql数据库备份、还原
    Redis示例配置文件
    Docker 的基本概念和操作
    Vue项目目录结构
    Vue前端项目搭建及运行(mac系统)
    编辑vue项目后,运行结果却不变
    如何在 IDEA 中创建并部署 JavaWeb 程序
    听说你对 JavaScript 中的输出挺熟?
    js 常用字符串截取
  • 原文地址:https://www.cnblogs.com/4-Real/p/11871303.html
Copyright © 2020-2023  润新知