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

    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C语言博客作业04--数组
    这个作业的目标 学习数组相关内容
    姓名 韩龙飞

    0.展示PTA总分


    1.本章学习总结

    1.1 学习内容总结

    • 一.查找数据
      1.非顺序字符串
      顺序查找法:输入要找的数,并用for循环逐一进行查找,以flag作为标志,若flag=1则输出该数所在位置,若flag=0则不输出。
      2.顺序字符串
      二分查找法:输入要找的数,每次取数组的中间数,和要找的数做比较,并以此决定中间数左移还是右移,直到找到该数或者中间数超过区间范围。

    • 二.插入数据
      将数据插入的同时需要将插入数据的后面的所有数后移。

    int temp
    int x//插入的数据
    int 数组a
    for i=0 to n
          if num[i]>x 
               then  temp=a[i];a[i]=x;x=temp;
          if i=n
               then  a[i]=x;
          end if
    end for
    
    • 三.删除数据
      1.已知删除的值的下标
    int a[10];
    int i;
    int x;//要删除的数
    for i=0 to 10
        if i<x-1
            then a[i]=a[i];
        else
            a[i]=a[i+1];
        end if
    end for
    

    2.已知删除的值

    int a[10];
    int i;
    int temp; 
    int x;//要删除的数
    for i=0 to 10
        if a[i]<a[x-1]
            then a[i]=a[i];
        else
            a[i]=a[x-1];
            temp=x-1
            a[i]=a[i-temp]
        end if
    end for
    

    3.利用另一数组存放并输出(删除值)

    ....
    for i=0 to 10
        if a[i]<a[x-1]
            then b[i]=a[i];
        else if a[i]==a[x-1]
            then temp=x-1
            b[i]=a[i-temp]
        end if
    end for
    
    • 四.排序方法
      1.冒泡排序法

    2.选择排序法

    • 五.枚举

    • 六.哈希数组
      删除重复字符(https://pintia.cn/problem-sets/1333242386859208704/problems/1333242566023106562)

    • 七.注意事项
      字符数组在输入时有两种方式,一种是scanf(%s,&a)另一种是fgets(a,10,stdin)。前者不会输入空格和换行符,后者会输入空格和换行符。两者结束符都为''。
      若定义字符数组为静态则无法改变其值。

    2.PTA实验作业

    2.1 调查电视节目受欢迎程度(https://pintia.cn/problem-sets/1330058343355297792/problems/1330058720679079941)

    2.1.1 伪代码

    定义a[8] = {0},i,j,n
    for i = 0 to n - 1
        输入编号j
        if j>0&&j<9
            then a[j-1]++;
        end if
    end for
    for i=0 to 7
        输出编号i+1和数组a[i];
    end for
    

    2.1.2 代码截图

    2.1.3 同学代码

    优点:结构单一简单,不用想就能写出来。
    缺点:占用行数过多,重复的代码太多。

    2.2 找鞍点(https://pintia.cn/problem-sets/1330058343355297792/problems/1330768737686310915)

    2.2.1 伪代码

    定义 n,i,j,k,a[10][10],max,col,row,flag
    输入n
    for i = 0 to n - 1
        for j = 0 to n - 1
              输入矩阵
    end for
    for i = 0 to n - 1
        flag=1;
        max=a[i][0]
        for j = 0 to n - 1
            if a[i][j]>=max
                then do max=a[i][j]; row = i; col = j;
            end if
        end for
        for k = 0 to n-1
            if a[k][col]<max
                then do flag = 0; break;
            end if
        end for
    end for
    if flag==1
        then do 输出row和col
    else 
        do 输出NONE
    end if
    

    2.2.2 代码截图


    2.2.3 做法区别

    与视频中演示的方法思路基本一致。

    2.3 切分表达式(https://pintia.cn/problem-sets/1333242386859208704/problems/1333242566023106563)

    2.3.1 伪代码

    定义i,字符数组a
    输入表达式
    定义字符pre
    for i to a[i]等于'0'
        if '0'<=a[i]<='9'或者a[i]等于. then 
            do 输出a[i]
        else if a[i]等于*或者等于/或者等于(或者等于)
            do
                if '0'<=pre<='9' then 
                    do 输出 a[i] 
                else
                    do 输出a[i] 
        else if a[i]等于-或者等于+
            do
                if '0' <= pre <= '9' then
                    do 输出 a[i] 
                else if
                    do 输出 a[i]
                else 
                    do 输出a[i]
        end if
        pre=a[i]
    end for
    
    

    2.3.2 代码截图

    2.3.3 做法区别

    思路大致相同,但我对于分支条件的判断过于零散,而视频中的判断则更加清晰,更有层次感。

  • 相关阅读:
    OSCP Learning Notes Exploit(7)
    正则表达式中?=和?:和?!的理解
    提取日志中的ip
    ip地址的正则表达式
    linux内核tmpfs/shmem浅析
    记一个linux内核内存提权问题
    linux内存屏障浅析
    linux IPv4报文处理浅析
    linux会话浅析
    linux memory lock浅析
  • 原文地址:https://www.cnblogs.com/Rex7478/p/14130691.html
Copyright © 2011-2022 走看看