1.本章学习总结
1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
在这几周的学中,我的体会如下
1.在学习数组的初始化时,学习了可以使用static进行初始化,而不必用到for循环2.在学习二维数组的过程中,第一次知道了二维数组赋值时行数可不做规定,编译器会自动依照输入的数据以及列数而定3.二分法可以更快地在有序数组中查找所需要的值4.flag也可以转化为数组的形式,做到判断数组是否重复
1.2.2 代码累计
2.PTA总分
2.1截图PTA中顺序结构、分支结构的排名得分
2.2 我的总分:
PTA总分:455分
3.PTA实验作业
3.1 PTA题目1
所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。
3.1.1 算法分析
制造一个方阵 a[12][12];方阵的边长n每次走的步数size,其初值为n循环次数time,初值为 n / 2 + 1;如果是偶数方阵,循环次数time - 1如果是奇数方阵,先把中间值填上 n*nwhile (time--) do//向右打印 for m = 1 to size-1 do a[i][j++] = number++; m++; end for//向下打印 for m = 1 to size-1 do a[i++][j] = number++; m++; end for//向左打印 for m = 1 to size-1; do a[i][j--] = number++; m++; end for//向上打印 for m = 1 to size-1 do a[i--][j] = number++; m++; end for//数组自增 or 自减 i++; j++; size -= 2;end while//打印矩阵for i = 0 to n-1 do for j = 0 to j < n do printf("%3d", a[i][j]); j++; end for printf("\n"); i++;end for
3.1.2 代码截图
3.1.3 PTA提交列表及说明
Q:奇数方阵中间值填不上?
A:if判断是否奇数,特殊照顾一下
3.2 PTA题目2
输入2个大数,每个数的最高位数可达1000位,求2数的和。
3.2.1 算法分析
初始化数组 number1初始化数组 number2初始化数组 result为 0scanf("%s", number1);scanf("%s", number2);利用自己写的函数将两个数组中的元素倒置整型定义len,并让他等于两个数中最长的长度for i = 0 to len - 1 do result[i] = result[i] + number1/*转化为整型*/ + number2/*转化为整型*/ if (result[i] > 9) result[i] -10 result[i + 1] 进一 end if i++;end forif 最后一位进位了 len++输出result
3.2.2 代码
3.2.3 PTA提交列表及说明
Q:当最后一位要进位时,加不上去
A:对result初始化为0,要进位的话下一位加一,并且每次计算加上result原来的值
3.3 PTA题目3
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
3.3.1 算法分析
char target[100000];char del[100000];int (targrt数组的长度) lenTar;int (del数组的长度) lenDel;//scanf并获的长度//-----------------------------------------------------//for lenTar = 0 do 不断读数据到target[],直到 \n 停止 lenTar++;//获得长度end forfor lenDel = 0 do不断读数据到del[],直到 \n 停止lenDel++;//获得长度end for//-----------------------------------------------------//for (int i = 0; i < lenTar; i++) for (int j = 0; j < lenDel; j++) if (发现共有字符) 删除target[lenTar]; 后面的字符往前补; end if end forend for//输出字符串
3.3.2 代码
3.2.3 PTA提交列表及说明
Q1:为什么相邻的删除字符只删了一个
A1:没次删除完都要再回到原来的位置重新判断
4.代码互评
4.1 代码截图
范华同学的代码
我的代码
4.2 二者的不同
1.范华同学使用的是二维数组,在定义以及循环的过程当中会更加简洁。
2.对时间的输入,范华同学使用的是字符型转整形,其实大可不必,02在用整型输入的过程中会自动转化2. 3.范同学使用的是while单层循环外加repeat判断天数是否到规定天数。我使用的双层while循环,在编写或阅读过程中都简单易懂,而循环节走的次数是一样的。 4.对于时间的计算,范华同学直接转换时间并存储,而我则写了个函数去计算,直接写的话,运行速度会更快一点