• C语言博客作业04--数组


    1.本章学习总结

    1.1思维导图

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

    1.2.1学习体会

        最近在学线性代数,以前没有把线性代数学好,学了两周的线性代数,C语言的学习就落下了,打算在考完线性代数后把学习的重心转向C语言。上次上机考试没考好,总结原因在于很多很基本的东西在考试的时候遗忘了,不单单是练得少,书上的习题操作得少,上周末我用一天时间把书上数组的习题包括注释全部通过编译器打在电脑,发觉课本知识很基本,考试知识很灵活。
    

    1.2.2代码累计

    2.PTA总分(2分)

    2.1截图PTA三次题目集:一维数组、二维数组和字符数组共3次题目集的排名得分

    2.2 我的总分:

    433分

    3.PTA实验作业(6分)

    3.1 PTA题目1

        第一行输入两个整数,第一个表示数组长度,第二个表示左移位数,第二行输入数组,求左移后的数组
    

    3.1.1 算法分析

      int n,k;//表示数据n表示数组长度,k表示左移位数
      scanf(n,k);
      if(k>n) k=k%n//通过交换数组实现数据左移,通过求余求出数组的长度
      int a[k],b[n-k];//建立两个数组,调换顺序输出达到数据左移的目的 
      int i;
      for(i=0;i小于k;i++)
         scanf(a[i]);
      end for
      for(i=0;i<n-k;i++)
        scanf(b[i])
      end for
       for(i=0;i<n-k;i++)
            if(i不等于0)then 输出空格
            end if
            输出 b[i]
      end for
          if k不等于0  then 输出空格
      for(i=0;i<k;i++)
           输出a[i]
         if(i!=k-1)  then 输出空格
         end if
      end  for
    

    3.1.2 代码截图

    3.1.3 PTA提交列表及说明

    • Q1:一开始没有弄明白数组的关系,胡乱作答
    • A1:后来理清思路,往左移其实就是数组拿出一部分放到右边
    • Q2: 当k大于n 时出现错误
    • A2:仔细思考,用求余解决问题

    3.2 PTA题目2

    输入n个数组,判断是否为上三角形
    

    3.2.1 算法分析

      输入count统计矩阵数目
      for(i=1;i<=count;i++)
                  输入行列数row
                  定义a[row][row]阶矩阵
                  输入数组
               for(j=1;j<row;j++)//判断是否为三角矩阵
                  for(k=0;k<j;k++)
            	            if(a[j][k]!=0)    then flag=1;//不是 矩阵,flag=1
                           end if 
                   end  for
              end for 
              if 不是第一行  then 换行
              if  flag 为1  tjen输出NO
              else 输出yes 
      end for 
    

    3.2.2 代码

    3.2.3 PTA提交列表及说明

    • Q1:这题看起来很简单,实际上我在编译器里调试了很多遍,之前对矩阵的个数考虑不充分,对二维数组运用不熟练,使得我的时间被白白耗费
    • A1:孰能生巧别无捷径,多调试几次得出正确答案

    3.3 PTA题目3

    输入一个字符串,判断是否是合法邮箱,输入的只能是字母、数字、下划线、@以及.五种, @前后只能是字母或者数字,而且.后只能是com, 是则输出YES ,否则输出NO。

    3.3.1 算法分析

      int judge1(char *p);//判断单个字符是否全部合法 
      int judge2(char *p);//判断@周围的字符是否合法 
      int judge3(char *p);//判断.后的字符是否合法 
       int main()
            输入数组a
             if(judge1(a)==0)   then printf("NO");//判断邮箱是否合法 ,合法输出YES,否则输出NO 
       	      else if(judge2(a)==0)    then printf("NO");
       	          else if(judge3(a)==0)    then  printf("NO");
       	                      else printf("YES");
                                end if
                           end if
                 end if 
      end 
      int judge1(char *p)
           for(;*p!='';p++)
                 if(数字不是字母、数字、下划线、@以及.)then return 0
                  end if
           end  for 
           return 1
      end
      int judge2(char *p)
           for(;*p!='';p++)
                if(@两边的数不是数字或者字母)then return 0;
                end if
           end for
            return  1
     end
      int judge3(char *p)
           	for(;*p!='';p++)
                  if(.后面不是com)then return 0
                  end if
             end for
             return 1
      end
    

    3.3.2 代码


    3.3.3 PTA提交列表及说明

    • Q1:没考虑到单个@出现的情况
    • A1:修改条件,一旦@周围没有字符,这判定邮箱不合法
    • Q2: 没有考虑到 . 后的com后还有字符
    • A2 :增加一个限定条件,一旦com后有字符则判定邮箱不合法
    • A3:本题良心出品的解题步骤,有指针有数组有函数,综合性强。

    4.代码互评

    4.1 代码截图

    同学代码:

    我的代码:

    4.2 二者的不同

    • 1.我的代码运用函数指针数组,整体而言主函数更加精简,结构清晰。
    • 2.同学的代码几乎全部放在主函数中,显得冗余。
    • 3.同学的代码有gets输入数据,同时考虑到空格的情况,想法周密。
    • 4.相对来说我的注释会详细很多,代码更加通俗易懂
  • 相关阅读:
    tfs2012服务器搭建报表、门户、TFS权限设置
    遥望星空FTP文件同步工具(附源码)1.0 发布
    TortoiseGit连接gitlab,一直要求输入密码
    static、const、readonly与static readonly的区别与联系
    sql server对并发的处理乐观锁和悲观锁
    asp.net控件开发基础系列
    Sonne的健身日志(15)16周腹肌计划第四周感受
    上海新闻!
    Sonne的健身日志(9)16周腹肌计划第一周(2012.3.92012.3.15)
    Sonne的健身日志(5)
  • 原文地址:https://www.cnblogs.com/1112wlt/p/10079683.html
Copyright © 2020-2023  润新知