1.本章学习总结

1.1思维导图

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

1.2.1学习体会

1.学习了数组以后,开始感受到学习C语言的困难了。各种错误开始出现……再加上近期有线代的考试,放在线代上的时间有点多,导致刷PTA耽误了,打代码的时候也明显不如以前熟练。所以,最大的学习体会是:一定要多打代码。
2.虽然学习了函数,但是我很少在写代码的时候进行函数封装,老师教育我们多用函数,但是这一点我明显做的不够。
3.做题的最大感受是,在对数组进行定义是,关于数组长度,不求正正好好,可以稍微大一点,这样可以减少不少麻烦。
4.数组之后是指针,结构,C语言学习越来越复杂,我还要继续努力啊。

1.2.2代码累计

PTA总分

2.1排名截图

2.2我的总分:

PTA作业

3.1判断上三角矩阵

7-3 判断上三角矩阵 (15 分)
上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。

本题要求编写程序,判断一个给定的方阵是否上三角矩阵。

3.1.1

输入m
int flag=1//定义开关变量
for i=1 to m;
输入n
for j=0 to n
for k=0 to n
输入数组
end for
end for
for j=0 to n//遍历行
for k=0 to j//只遍历对角线以下
if a[j]k]!=0
flag=0
end if
end for
end for
if(flag==1)输出YES
else输出NO
end if
end for
ps.关于开关变量,对于开关变量的赋值,很巧妙,要根据判断条件,合理对flag赋初值。同时,在一个循环结束对flag进行赋初值也很重要。

3.1.2代码截图

3.1.3数据测试

3.1.4提交列表

前面的答案错误,基本上都是因为循环变量太多,导致遍历数组是发生紊乱。
加上线代考试,题目改错隔得有些久,这也让我的大学学习生活也开始紊乱了。
我认为,这个问题不仅仅是C语言上的问题,更是一个关于大学生活的问题:不能和以前一样,认为大学应该自由,这种思想的弊端会随着大学学习节奏加快而暴露。我应该更改学习态度了。

3.2输出螺旋方阵

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

3.2.1算法分析

static int a[10][10]
输入n,确定要输出的行列数
while (n*n!=k)
while(j+1<n&&!a[i][j+1])//从右向左开始递增
a[i][++j] = ++k; end while
while(i+1<n&&!a[i+1][j])//从上向下开始递增
a[++i][j]=++k;end while
while(j-1>=0&&!a[i][j-1])// 从右向左开始递增
a[i][--j]=++k;end while
while(i-1>=0&&!a[i-1][j])// 从下向上开始递增
a[--i][j]=++k;end while
end while
输出数组
PS.利用将数数组初始化为0,及时“及时转弯”。

3.2.2代码截图

3.2.3测试数据

3.2.4提交列表

可能提交次数有点少,但是我一般都是在编译器上调试的基本上万无一失后才提交的…………

3.3删除重复字符

7-5 删除重复字符 (20 分)
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。

3.3.1算法分析

char str[100]
static int flag[256]
输入str
for i=0 to str[i]=='\0'
flag[str[i]=1
end for
for i=0 to 256
输出i对应ASCII码代表的字符
1.字符只有256个
2.经过整改后的字符串长度不大于256
3.用i作为ASCII码循环,可以省去排序。

3.3.2代码截图

3.3.3测试数据

3.3.4提交列表

之前尝试了先排序,后删除的方法,发现总是失误。
后来在一些启发下,利用按照ASCII码排序,先将重复字符删除,在用for循环按照次序输出,简化了问题。

4.代码互评

7-7 判断E-mail地址是否合法 (20 分)
输入一个字符串,判断是否是合法邮箱(格式正确即可,不管是否真的存在)输入的只能是字母、数字、下划线、@以及.五种, @前后只能是字母或者数字,而且.后只能是com, 是则输出YES ,否则输出NO。

我的代码

翁凌涛大兄弟的代码

总结

我的代码和凌涛的代码差距很大,凌涛用了指针,并且用了函数封装,这一点我是明显不如的,函数封装可以增加代码的可读性,而且指针的有无决定了代码的高级程度,在数组的作业中用了指针,函数,既可以复习指针,又可以进一步感受数组和指针的关系,指针怎样传参…………
总体思路我们是差不多的,都先判断整体字符是否合法,在具体判断某个位置的是否合法,通过这个题,能更好的感受数组与指针的关系吧。