C语言第七次博客作业--一二维数组

本次周记记录了作者在PTA平台上的编程学习过程,包括数组逆序、简化插入排序和杨辉三角等题目的解决思路与调试经历。通过实践,作者掌握了字符串存储、结束标志及输入方法等基础知识。

一、PTA实验作业

题目1将数组中的数逆序存放

1. 本题PTA提交列表

1233806-20171202163937913-1160422292.png

2. 设计思路

1233806-20171202165132116-1831205767.png

3.代码截图

1233806-20171203152557569-1928260913.png

4.本题调试过程碰到问题及PTA提交列表情况说明

这个题很容易理解,知道要把一串数字到过来放,但是不知道要怎么表达逆序,我想到的思路就是将数对半分开然后首尾交换位置
但是第二个循环里面的交换没有搞清楚下标的变化情况,所以导致答案错误,此题忘记截图了
我总是会有段错误这个东西,因为输入数组的时候忘记加&了,这个错误犯了三次才记住它

题目2:简化的插入排序

1. 本题PTA提交列表

1233806-20171203134732944-540479298.jpg

2. 设计思路

1233806-20171203140252319-42360992.jpg

3.代码截图

1233806-20171203140333413-146855822.png

4.本题调试过程碰到问题及PTA提交列表情况说明

1233806-20171203143301679-91394743.jpg

上网查了一下插入法的基本思想,得到如上图的错误代码,刚开始都不能运行,但是加了break就可以了,但是答案并没有正确,插入到了合适的位置,
但是后面的数排序是乱的,甚至还少了数和多了数
然后问了王同学,他告诉我要选一个排序法把后面的数也排序了,于是我又加了两个变量,还加了一个j循环,得到如下图代码

1233806-20171203143320647-1384212447.jpg

但是还是错的,中间的两个数排反了,循环太多导致我有点晕,不太懂那个循环是干嘛的,于是我又重新屡屡思路,把那个for循环和break给删掉了
只加了index这个变量存放最小值的下标,然后分析插入的数和各个值的下标的关系,大的往后挪,小的往前插,最终才得到正确结果

题目3:杨辉三角

1. 本题PTA提交列表

1233806-20171202133948542-1783161841.png

2. 设计思路

1233806-20171202141450948-854915231.png

3.代码截图

1233806-20171202141742776-183279666.png

4.本题调试过程碰到问题及PTA提交列表情况说明

1233806-20171202142746948-760655977.jpg

1233806-20171202162224616-241240243.jpg

1233806-20171202162232601-493022102.jpg

如上图所示 错误就是冒出来一大堆数字,要么就是很多循环,i,j不正确所以导致循环错误,,没办法只能一行一列的慢慢考虑慢慢改
在for循环里面每个数字都尝试一遍,最后改成第二张图所示,模型出来了,但是数值没有正确,每列的开头都为1,但是我的没有,错在了j<=i,
把第四个for循环l里面的条件改成j<=i-1就正确了

二、截图本周题目集的PTA最后排名

1233806-20171203173839538-1952847152.png

三、同学代码结对互评

我的代码:
1233806-20171203174514194-722944765.jpg

吕雅慧的代码:
1233806-20171203174553929-1286358550.png

我和她的代码不同在数组,我只用了一个数组,她用了两个数组,还有判断的条件,其余的大同小异。

她的优势是注释比我多,让读者比较容易看懂

我更喜欢她的风格,哪一步在做什么注释得很清楚

四、本周学习总结

1.你学会了什么?

1.1 C中如何存储字符串?

使用字符数组存储,使用字符指针存储

1.2 字符串的结束标志是什么,为什么要结束标志?

字符串的结束标准是'\0'. '\0'是判断是否结束字符串的操作,没有它字符串就不能正常结束,影响后面的操作

1.3 字符串输入有哪几种方法?

getchar() gets() scanf()

1.4 数字字符怎么转整数,写个伪代码?

number=number*10+ch-'0'

1.5 16进制、二进制字符串如何转10进制?写伪代码?

16转10:number=number16+:str[i]-'0'
2转10:number=number
2+str[i]-'0'

2.本周的内容,你还不会什么?

(1)对一维数组和二维数组的赋值,长度掌握还不太深,如课堂派char x[ ]="abcdefg"; char y[ ]={'a', 'b', 'c', 'd', 'e', 'f', 'g'}这个题总是傻傻分不清楚,总感觉他们是一样长的
(2)对于数组的下标有点糊涂,矩阵的上三角和下三角也还没有搞明白
(3)对于循环结构有点晕,导致做题的时候要么就是少了,要么就是多了,尤其是数组循环的下标,例如数字移动和插入都用到交换下标,我就有点糊涂在这
(4)我最常犯的一个错误就算输入数组的时候老是忘记&号(scanf(“%d”,&a[i])),导致程序都不能运行,每次都是段错误,被后面的%s给误导了,好在现在记清楚了

3.期中考试小结

3.1 你认为为什么没考好

期中考试错的地方都是不会的,有的选择题是蒙对的,主要原因还是自己掌握不精,没有学到知识,改错还把对的给改错了,还倒扣分

3.2 罗列错题

选择第六题:正确的c语言语句我选了C:x=n%2,正确答案是B:x=y==5;原来选择题还要看分号,遗漏了一个分号
填空第一题:当时没想到要返回c的值,就随便填了c++,应该改为return 0;
改错第一题:scanf(“%d,%d”,a,b);改成了scanf("%d%d",a,b),这么明显的错误,不知道自己怎么想的竟然没有加&号
编程题:编程题好像只得了框架分,内容杂乱无章,还没有去琢磨呢

3.3 下半学期要怎么调整C的学习?

师傅领进门,修行靠个人,并不是我不努力,我觉得在c方面好像不适合我修行,对它没有什么感觉,老是记不住它,刚学的知识过一会又是懵逼状态了,
我很迷茫很焦急啊,和别人同样是学,但是感觉自己很吃力,在c方面九窍通了,还有一窍不通,基础的c都这么困难,都不敢想什么c++和Java了,
下个学期。。。。。。走一步看一步吧!

转载于:https://www.cnblogs.com/danzhai/p/7954186.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值