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

    0.展示PTA总分



    1.本章学习总结

    1.1学习内容总结

    1.数组中如何查找数据?

    若要查找num,我的做法:遍历数组,当遇到num时,记录其下标,这样就知道它在数组中的位置了。

    for(int i=0;i<n;i++)
    {
    if(a[i]==num)
    int loc=i;
    }
    

    2.数组中如何插入数据?

    我的做法,先遍历数组,找到要插入的位置,然后将之后的数组右移

    for(int i=0;i<n;i++)
    {
    if(判断条件)
    {
    loc=i;
    a[loc]=a[i]
    for(i=n;i>=loc+1;i--)
    {
    a[i]=a[i-1];
    }
    }
    }
    

    3.数组中如何删除数据

    我的做法:先遍历数组,找到要删除的数据num,从num的下标+1开始,从后往前左移一个位置

    for(int i=0;i<n;i++)
    {
    if(判断条件)
    {
    loc=i
    }
    for(i=loc+1;i<n;i++)
    {
    a[i]=a[i+1];
    }
    }
    

    4.数组中目前学到排序方法,主要思路

    1.冒泡排序法:有n个数,则循环n-1趟,a[i]和a[i+1]比较。
    下图是PTA中的某题部分代码截图,用到的冒泡排序

    2.选择排序法:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。

    4.哈希数组用法

    案例:一维数组题目集 7-5 有重复的数据

    1.2本章学习体会

    1.数组的题目,尤其是字符型数组,感觉不是很好做,一些段错误,答案错误仍未解决。
    2.这两周的代码量(3个数组PTA作业):1044行。没有达到目标。

    2.PTA实验作业

    2.1 7-5 有重复的数据

    2.1.1伪代码

    static int hash[MAX];//定义哈希数组
    for (i = 1; i <= n; i++)
    then
    scanf("%d", &data);
    if (hash[data] == 1)
    then{return 1;}
    end if
    else
    {hash[data] = 1;}
    end else}
    

    2.1.2代码截图

    2.1.3 造测试数据

    2.1.4 PTA提交列表及说明

    1.部分正确:第一次写没有用哈希数组做,而是用嵌套循环,这样当n很大的时候,就要循环很多次,会运行超时。

    2.2 7-2 IP地址转换

    2.2.1伪代码

    //输入数组
    char str[32];
    for (i = 0; i < 32; i++)
    then scanf("%c", &str[i]);
    //之后将数组分成4个部分,一个部分8个数据
    for (i = 7; i >=0; i--)
    sum =sum+ (str[i] - '0') * pow(2, k);
    k++;
    printf("%d.", sum);
    sum = 0;//sum归零,因为后面还要再用
    k = 0;//k归零,因为后面还要再用
    //后面3组同理
    

    2.2.2代码截图

    2.2.3 造测试数据

    2.2.4 PTA提交列表及说明

    2.3 7-4 删除重复字符

    2.3.1伪代码

    char str1[N]; 
    char str2[N];
    //第二个数组用来保存删除重复数据后的数组
    for (i = 0; i < len1; i++) //查重
    flag = 0;
    for (j = 0; j < i; j++)
    if (str1[i] == str1[j])
    flag = 1;
    end if
    end for
    if (flag == 0)
    str2[count] = str1[i];
    count++;  //记录不重复字符的个数
    end if
    end for
    

    2.3.2代码截图

    2.3.3 造测试数据

    2.3.4 PTA提交列表及说明

    1.多种错误:这是本题我用的输入数组的方法:

    而一开始我是这么输入的:

    我这样的写法的话,回车就不会被吸收,就会出错。

    3.阅读代码



    这道题是用二分查找的方法来求解的。但是与我们做平时的二分查找不同,平时用的是 "while(left < right)"的方式求解,
    但这题用的是"while(left <= right)" 的方法求解,这种写法使问题简单化。所以我们不能拘泥于老师的做法,而应该有自己的想法和见解。

  • 相关阅读:
    SQLyog远程连接Linux服务器错误2003解决
    Linux/UNIX系统编程手册 练习3.8
    概括
    Linux 命令
    句柄类
    带有C风格的 CLib库
    Linux 命令
    C++ 编程思想 第三章 3-2
    一.创建型模式 Prototype 模式
    一.创建型模式 Builder
  • 原文地址:https://www.cnblogs.com/yeanxxx/p/11876117.html
Copyright © 2011-2022 走看看