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


    1.本章学习总结

    1.1 思维导图

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

    1.2.1 学习体会

    1. 做一维数组时思路比较清晰,知道如何定义,如何设置循环,如何排序与删减。但有时碰到的数组较长时做起来会有点吃力
    2. 二维数组交换位置、矩阵等比较容易,但部分题目,如阅览室等这样数组不明显的题目确实不会做。
    3. 字符数组要把握好输入和输出,输入方式较多,但不一定每一种都适用。

    1.2.2 代码累计

    2.PTA总分

    2.1截图PTA

    2.2 我的总分:

    • 200+105+150=455分。

    3.PTA实验作业

    3.1 PTA题目1

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

    3.1.1 算法分析

    • int a[20],b[20],c[40];存放数组
    • scanf(a[],b[]);
    • 两层循环,对a数组扫描:
    •                   for(i=0;i<a数组个数;i++)
    •                   {
    •                       for(j=0;j<b数组个数;j++)
    •                        {
    •                           if(a[i]==b[j]) break;
    •                         }
    •                       j>=b数组个数时,a[i]不在b数组中 .end
    •                  } end for
    •  再次对b数组扫描以便未重复输出。

    3.1.2 代码截图

    3.1.3 PTA提交列表及说明

     

    • 刚开始循环设置错误,判断是否相等出现重复。修改后还是部分正确
    • 看了一遍题目,要求同一数字不能重复输出。只对a中元素扫描一遍,再对b扫描一遍后,可能有重复数据。
    • 再设置一次循环,对数组c进行判断,查看并去除共同的元素。

    3.2 PTA题目2

    二维数组每列排序:一个4×5的整型二维数组,从键盘输入数据,并对该数组的每一列按从小到大的顺序排列后输出。

    3.2.1 算法分析

    • 设置三层循环判断:
    • 外循环(对每一列判断):for(j=0;j<5;j++) end for
    • 内循环:for(m=0;m<3;m++)
    •               {
    •                   for(n=0;n<3-m;n++)
    •                   {
    •                       if(a[n][j]>a[n+1][j]) 交换
    •                  } end for
    •               }
    • printf(a[i][j]);

    3.2.2 代码

    3.2.3 PTA提交列表及说明

    • 在对每一列中的元素进行大小判断时,循环设置错误。下标超限
    • 对冒泡法再次进行复习后,更改循环。

    3.3 PTA题目3

    把四则运算拆分。每个运算数、运算符和括号都是一个token(标记)。现在,对于给定的一个四则运算表达式,把每个token切分出来。

    3.3.1 算法分析

    • i=0;   while(ch[i]!=' ') begin i++;
    •   数字情况: if(ch[i]>='0'&&ch[i]<='9')               

                            数字后仍为数字 、或为小数点   {  while(((ch[i]>='0'&&ch[i]<='9')||ch[i]=='.')&&ch[i]!='') i++;}

                                ch[i]= break;  for  printf(ch[i]) i--; end for

    • 判断负号:if(ch[i]=='-')

                                {  if(前一位是数字,或后边为‘(’)为运算符 printf("- ");

                                     else printf("-");}

    •  判断加号:不在首位,为运算符 printf("+ ");
    •                         else printf("+");

                    

    3.3.2 代码

    3.3.3 PTA提交列表及说明

    • 对数字判断出现错误,不能将连着的数字输出。
    • 通过设置循环来判断到底是几位数,并通过循环输出,避免错误
    • 对负号的判断中,忽略了负号后若有括号,则为运算符这一情况。
    • 在循环条件判断中加上ch[i+1]=‘(’这一情况。
    • 忽略首位为‘+’时是作为正好而不是加号
    • 在最后加上这一判断条件后,答案正确

    4.代码互评

    4.1 代码截图

    • 同学代码:

    •  我的代码:

    4.2 二者的不同

    1. 思路都是设置四个循环判断,分为从上到下,从左到右,从下到上和从右到左。
    2. 同学的代码根据输入的层数来分层输出,设置层数作为循环条件。 我的代码通过对变量c进行自增,和元素个数比较来设置循环条件。
    3. 同学的代码设置每层循环时根据i,j的变化,通过每次循环时减去i来控制循环次数,然后对Num进行自增后输出。我的代码则是在赋值时通过i,j的自增来改变i,j的值,以便在设置循环时比较方便。
  • 相关阅读:
    所谓的底层问题
    字符流与字节流
    字节和字符,对信息进行编码
    Asp.net和数据库的一些概念
    谈.NET,由编译器开始谈起
    Extjs中的dom,Ext.Element和Ext.Component对象的关系
    WCF和Delphi通信时序列化的问题
    认真的考虑了下领域模型,发现设计是最难的部分。书上的例子各个对象职责划分的不错,可惜能看懂不代表能设计出。
    MS100 [011020]
    MS100[001]
  • 原文地址:https://www.cnblogs.com/qqcom/p/10063347.html
Copyright © 2020-2023  润新知