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

    1.本章学习总结(2分)

    1.1 思维导图

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

    1.2.1 学习体会

    本章主要学习了数组的相关内容,其中掌握好一维数组是掌握好其他类型数组的基础,特别是要掌握好选择排序法和冒泡法
    本章需要特别注意和熟练掌握的点有:
    1.有关数组的初始化,其中可以针对部分元素初始化,二维数组在全部赋值或者分行赋值的情况下可以省略行长度
    2.掌握多种输入字符数据的方法,包括gets,fgets以及scanf函数
    3.特别注意字符数组的字符串结束符\0,还有区分“a”和‘a’的区别
    

    1.2.2 代码累计

    2.PTA总分(2分)

    2.1截图PTA三次题目集:



    2.2 我的总分:

    395

    3.PTA实验作业(6分)

    3.1 PTA题目1

    给定两个整型数组,本题要求找出不是两者共有的元素。
    

    3.1.1 算法分析

    
    
    定义整型变量n1 数组a[20],n2,b[20];
    定义整型变量i,j;
    输入n1
    for i=0 to i<n1do
    输入a[i]
    end for
    输入n2
    for i=0 to i<n2
    输入b[i]
    end for
    定义 flag,count=0;定义数组a[20]
    for i=0 to i<n1 do
    flag=0;
         for j=0 to j<n2 do
         if  a[i]==b[j]
         flag=1;
         break;
         end if
         if flag==0
         c[count]=a[i];
         count++;      //将a数组中不同的数放入c中   
         end if
         end for
    end for
    for j=0 to j<n2 do
    flag=0;
        for i=0 to i<n1do
        if b[j]==a[i]
        flag=1;
        break;
        end if
        if  flag==0
        c[count]=b[j];
        count++;
        end if
    end for           //将b数组中不同的数放入c中   
    定义 num=0;
    定义数组  d[20];
    d[num]=c[0];
    num++;
    for i=1 to i<count do
          for j=0  j<num
          if c[i]==d[j]
          break;
          end if
          if  j==num
          d[num]=c[i];
           num++;
           end if
    end for  
    for i=0  to i<num do
       if i<num-1
       输出d[i]+空格
       else
       输出d[i]
    end for
    }
    

    3.1.2 代码截图

    3.1.3 PTA提交列表及说明

    • Q1:开始没有思路,想按照两个数组分开来遍历
    • A1:将两个数组中其他数组中未出现的元素保存到另一个数组c中
    • Q2:数组c中存在重复的元素,要把重复的元素删除并且保持顺序不变
    • A2:开始时,用往后遍历的方法,若重复则不输出,若不重复则输出,但是怎样重复数字的输出顺序是输出后一个的顺序,会导致输出顺序的改变。后来定义了一个数组,向前遍历,这样保证了输出的顺序不改变。

    3.2 PTA题目2

    所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。
    

    3.2.1 算法分析

    
        定义整型变量 n;
        输入n
        定义整型变量 i,j;
        定义数组a[10][10]  //主要思路四个方向,上下左右
         定义 num=1;
        for i=0 to i<n/2 do
                 for j=i to j<n-i-1 do//横着从左往右
            a[i][j]=num;
            num++;
             end for
             for j=i to j<n-i-1 do
                a[j][n-i-1]=num;
             num++;    //竖着从上到下
                 end for
               for j=n-i-1 to  j>i  do
           a[n-i-1][j]=num;
           num++; //横着从右到左
          end for
               for j=n-i-1 to j>i
           a[j][i]=num;
           num++;//竖着从下到上
                end for
           end for
           if n%2==1 
        a[n/2][n/2]=n*n;
        for i=0 to i<n  do
            for j=0 to j<n do
               输出a[i][j]
               if j==n-1
               输出\n"
                end for
           end for
    

    3.2.2 代码

    3.2.3 PTA提交列表及说明

    • Q1:刚开始看到这样的题目有点害怕,看起来挺复杂的
    • A1:后来考虑了下从四个方向慢慢分析,然后循环至最里边,问题就解决了,虽然分析过程复杂了一些,但是总体思路还是蛮清晰的。

    3.3 PTA题目3

    一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。
    

    3.3.1 算法分析

    
    定义字符数组 a[32];
    定义整型变量 i;
    定义整型变量 num=0;
    for i=0 to i<32 do
    输入a[i]
    end for
    for i=0 to i<32 do
        num=num*2+(a[i]-'0');
        if i%8==7
    	if(i==31)	
    	输出num
    	else
    	输出num加.
                    end if
    	num=0;
      end if
    end for
    

    3.3.2 代码

    3.3.3 PTA提交列表及说明

    • Q1:主要是字符型数据怎样转化为数的问题
    • A1:因为输入的是字符型的数据,所以将字符转为数字通过他们ascii码的差值来转化,问题就解决了

    4.代码互评

    从同学中找一篇优秀代码,和自己写的代码比较下,说明下自己和同学代码区别,各自优势是什么?

    4.1 代码截图

    4.2 二者的不同

    • 自己的代码中主要让数组重构,先找出需要插入的位置,然后让位置后的元素后移,前面的不动,插入数据,最后输出
    • 同学的代码中定义了两个数组,先找到插入点,然后直接赋值,这样可能会导致失去原来的数据,所以这个时候再用上另一个数组,使插入位置的元素后移且数据不丢失,这也不失为一种方法。
  • 相关阅读:
    .Net开发中IIS启动后,网站不能访问。0x80004005 无法执行程序。所执行的命令为 .....问题
    .Net开发中项目无法引用/项目引用失败/引用文件出现黄色警告图标,并生成失败的问题
    Mac系统安装Docker
    小程序开发----微信小程序实现下拉刷新功能
    小程序开发----微信小程序navigate跳转没反应
    小程序开发----小程序点击复制文本内容到剪贴板
    小程序开发----微信小程序直接写&nbsp;设置空格无效
    python字符串的反转
    python2项目迁移到python3
    robotframework废弃的关键词以及替代的关键词(关键词找不到,可能已经过期了)
  • 原文地址:https://www.cnblogs.com/zyxaa/p/10087383.html
Copyright © 2011-2022 走看看