zoukankan      html  css  js  c++  java
  • 你kin你擦

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

    1.本章学习总结

    1.1 学习内容总结

    • 查找数据
      1.顺序查找:遍历数组,逐个判断
      2.二分查找:必须为正序的数组,每次取一个中间值判断所需值与其大小,在左右两个区间内确定一个再次去中间值。。。
    #define M 10
    #include <stdio.h>
    int main(){
      int a[M]={-12,0,6,16,23,56,80,100,110,115};
      int low,mid,high,b,found;
      low=0;
      high=M-1;
      scanf("%d",&b);
      while(low <= high){
        mid=(low+high)/2;
        if(b == a[mid]){
          found =1;
          break;
        }else if(b>a[mid]){
          low=mid+1;
        }else{
          high=mid-1;
        }
      }
      if(found ==1){
        printf("The index of %d is %d",b,mid);
      }else{
        printf("There is not %d",b);
      }
      return 0;
    }
    
    • 插入数据
      需要插入位置之后的所有元素后移
    输入数据
    for(遍历数组)
       if(a[i]==date)
       index=i找到插入位置
       for(i=index;i<n;i++)将该位置以后的数据往后移一位
    end for
    输出更改后的数组
    
    • 删除数据
      1.数据左移:
    for (j=1; j <= k; j++)
      {
         scanf("%d", &x);//输入需要删除元素的位置
         for (i = x-1; i < n-1 ; i++)
          {
    	a[i] = a[i + 1];
          }
      }
    

    2.再定义一个数组:

    int a[n]
    int b[n-1]
    scanf("%d",&index);//输入需要删除元素的位置
    for(i=0;i<n;i++)
    {
       if(i<index)
       {
          b[i]=a[i];
       }
       else
       {
        b[i]=a[i+1];
       }
    }
    
    • 排序方法
      1.冒泡法:相邻的数两两比较,前者比后者大就互换位置,最大换到最后,次大换到倒数第二。。。。。
      2.选择法:遍历数组每次找本次最大的元素的下标,与最后一个元素互换,第二次与倒数第二个换。。。。。
    • 枚举:能约束元素的值
    int a[5]={0,1,2,3,4};
    

    没用过

    • 哈希数组
      统计元素重复数量
    1~9:
    int n;
    int a[10]={0};
    for(元素总数)
    {
          scanf("%d",&n);
          a[n]++;
    }
    
    A~Z
    char ch;
    int n;
    int a[26]={0};
    for(元素总数)
    {
          scanf("%c",&ch);
          n=ch-'A';
          a[n]++;
    }
    
    • 字符数组、字符串特点及编程注意事项
      输入:
    scanf("%s",&a);
    

    上述结尾为'';

    fgets(a,10,stdin);
    

    上述结尾为' ''',不够则没有' '

    2.PTA实验作业

    2.1 7-1 将数组中的数逆序存放

    • 2.1.1伪代码
    输入数据
    for 0 to n-1
    从数组最后一个元素开始输入
    end for
    正向输出数组元素
    
    • 2.1.2代码截图
    • 2.1.3同学代码

      这个同学的代码是先将数组正序输入,然后第一个元素跟最后一个交换。第二个跟倒数第二交换,中规中矩。
      我的有点投机取巧,不过很快啊

    2.2 7-15 阅览室

    • 2.2.1伪代码
    输入数据
    for 0 to n-1\统计的天数
          for(输入一天内的借还情况)
                if 书号为0 break;
          end for
          for(遍历数组)
          if (出现'S')
                for (遍历接下来的数组元素)
                      if(同书号+E)计入时间,次数+1
                      if(同书号+S)S改为E
                end for
          end for
          计算平均阅读时间
          输出
    end for
    
    • 2.2.2代码截图
    • 2.2.3超星
      前面和超星差不多,到计时那里不太一样,我巧妙的把同书号S后的S改为E,解决了问题,超星上的遇到没换后的S选择跳出循环,再寻找S

    2.3 7-6 切分表达式——写个tokenizer吧

    • 2.3.1伪代码
    输入数据
    for(遍历数组)
          if(第一个字符为-或+)直接输出
          else if(出现数字)
                for(寻找之后是否为数字或小数点)若是接着输出,最后换行
          else if(出现不为第一个元素的-号时,且前面元素为(,后面的元素为数字)输出不换行
          else 输出换行
    end for
    
    • 2.3.2代码截图
    • 2.3.3超星
      差不多差不多
  • 相关阅读:
    登录 要求 密码必须包含数字、大写字母、小写字母、特殊字字符4种中至少3种
    job 异步获取
    g++的使用
    extern "c"
    C/C++定义全局变量/常量几种方法的区别
    使用Github管理cocos2dx版本
    二维码限制扫描区域
    Xcode路径改变之后,Cocopods不能使用,一行命令解决
    iOS之精确定时器
    iOS开发/App安全/代码自动混淆笔记
  • 原文地址:https://www.cnblogs.com/RocEye/p/14128480.html
Copyright © 2011-2022 走看看