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]!='\n') begin i++;
  •   数字情况: if(ch[i]>='0'&&ch[i]<='9')               

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

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

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

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

                                 else printf("-");}

  •  判断加号:不在首位,为运算符 printf("+\n");
  •                         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的值,以便在设置循环时比较方便。

 

posted @ 2018-12-08 16:36  郭坤  阅读(588)  评论(0编辑  收藏  举报