数组

一.PTA实验作业

题目一.7-2 求最大值及其下标:本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。

1.本题PTA提交列表

2.设计思路

定义了子函数min(n),所以数组a[10]定义为全局变量。首先在主函数中输入数字个数n,用for循环输入n个数,并保存在数组a[10]中。调用子函数min(n),找出最大的数字,令其下标为index。输出下标为index的数和下标index。

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

(1)段错误:从逻辑上看这段代码没有问题,一直不理解提交到PTA为啥就错了。后来自己用子函数重写了一遍,发现如果将定义中的a[n]改成a[10]就正确了。于是猜想应该是PTA的版本不支持数组括号中为变量,而不是一个常量。

为了验证上面的猜想,将第一次的代码中的a[n]转换成a[10],再次提交。

所以猜想大概是成立的。

4.代码截图。

 如第3点中后两张图所示。

题目二.7-17 判断上三角矩阵:上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。

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

1.本题PTA提交列表

2. 设计思路

 定义了子函数fact(n)和二维数组a[10][10](全局变量),主函数输入待测矩阵总个数t,而后输入t个数,为每个矩阵的行数(与列数相等)。每输入一个行数,就调用一次子函数fact(n)。子函数fact(n)实现n阶矩阵的输入与计算其对角线下有几个数为零。最终将实际为零数count与理论得零数n*(n-1)/2进行比较,若相等则输出YES,否则输出NO。

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

本题错误出现在于过于马虎,在判断对角线以下数是否为零并计数时,在if中多了一句break,导致错误产生。提醒我以后做题排错时格外注意break与continue的使用是否妥当。

此外,参考同学的做法才发现我的思路虽然没错但是太过繁琐。她们的思路简化为:先定义一个flag=0,直接判断对角线以下的数是否不为零,若不为零则flag=1,break跳出循环直接输出NO,否则flag=0,输出YES。不可置否,这个方法比我的好多了,流程图也所简化,我也从中有所收获,即多开阔自己的思路,找到最佳方案做题。

4.代码截图。(左图为我的完整代码,右图为有所修改的部分)

题目三.7-22 求矩阵各行元素之和:本题要求编写程序,求一个给定的m×n矩阵各行元素之和。

1.本题PTA提交列表

2. 设计思路

定义了子函数fact(n,m)与二维数组全局变量a[6][6],在主函数中输入二维数组的数值后,调用子函数fact(n,m)。子函数fact(n,m)中第一层循环为行数,保证每一行开始计算元素之和时sum=0;第二层循环为列数,分别将a[i][j]加在sum上,则每次第二层循环结束后输出一个sum,为该行各元素之和。

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

(1)这题算基础题目,第一次提交正确后改用函数,发现编译错误。经过研究发现,在子函数中运用了列数n,但其并未从主函数传递到子函数。随后修改,答案正确。

4.代码截图。(左图为一般程序,右图使用了函数)

二、同学代码结对互评

1.互评同学:陈冰艳

2.我的代码、互评同学代码截图

陈冰艳同学的代码:

我的代码:

3.我和陈冰艳同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?

不同在于:陈冰艳同学的思路是将题目要求插入的x当作已有数组的后一位组成新数组,而后通过排列得到有序的数组。而我的思路是将x与相邻的两个数比较,如果x恰好处于这两个数之间,则前面的数原封不动复制给新数组b[10],x顶替后一位的位置,从后一位开始,原来数组的数的位置后移一位。从而得到新数组。

此外,在子函数的传递中,陈冰艳同学处理的更好。她从主函数中传递了原来数组的首地址到子函数,而我定义的全局变量虽然也可行,但占据更多的内存,有失妥当。

各自优势:陈冰艳同学的代码更加简洁,也更有观赏性。

我更喜欢陈冰艳同学的代码。

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

四、本周学习总结

1.我学会了运用数组去存储多位数据,在子函数与主函数形参与实参的传递中,用数组名称为数组首地址可传递,不要一直执着于全局变量。

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

简单的数组问题可以解决,但遇到稍难的数组总是会忘记先存储,再输出。使自己容易转牛角尖,出不来。

有些题目好不容易做出来,可是下一次再遇到又会陷入困境,感觉完全没有思路。思考题目不够细心,经常不能一次得满分,在PTA和Dev的调试下,才发现代码有漏洞。

3.数组考试总结

(1).哪题做错了,怎么改?

    7-5,字符型数组要多留一个位置给\0,不然错误的很隐蔽。

(2).考试结果满意么,怎么改进?

不满意,有很多题目没做。一到考试就犯浑,有些题目平时在PTA上就打过交道,但一到考试就大脑一片空白,容易犯不该犯的错误,结果更紧张了,时间越来越少。当然,即使时间充足,我也不一定都能写出来,但好歹不会遗憾。

 

转载于:https://www.cnblogs.com/xinguanluoyifang/p/8148655.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值