C语言程序设计博客作业03

这个作业要求在哪里https://bbs.csdn.net/topics/609079527
我在这个课程的目标是学会二维数组和字符串的相关知识,熟练运用二维数组和字符串的处理方式
这个作业在那个具体方面帮助我实现目标帮助我查漏补缺,进一步巩固了上课所讲的二维数组和字符串的相关知识,填补了学习构造数据类型的空缺
参考文献c语言程序设计1,百度,csdn网站

1.PTA实验作业

在这里插入图片描述

1.1最矮的巨人

本题要求:操场上有N x N个“巨人”按N行N列的矩阵形式列队,请编程找出该方阵中所有“最矮的巨人”。
所谓“最矮的巨人”是指,该巨人在其所在行中,身高最高(没人比其更高);且在其所在列中,身高最矮(没人比其更矮)。
输入格式:
输入的第1行给出一个正整数n ( 1 ≤ n ≤ 6 ),表示方阵的行列数。随后n行,每行给出n个整数,代表巨人的身高,其间以空格作分隔。
输出格式:
如果找到至少一个“最矮巨人”,输出如下:
(第1个最矮巨人所在行下标,第1个最矮巨人所在列下标)
(第2个最矮巨人所在行下标,第2个最矮巨人所在列下标)

(第n个最矮巨人所在行下标,第n个最矮巨人所在列下标)
如果没有找到“最矮巨人”,输出如下:
NONE
注意:即便输出结果只有一行,也要输出换行符。行列下标均从0开始计数。

1.1.1数据处理

1.数据表达:定义整型变量n,i,j,k,a[n][n],max,min,flag,flag2,其中n为题目要求输入的行列数,a[n][n]为二维数组,max,min用来计算行中的最大值和列中的最小值,i,j用来标记max,min的下标,flag,flag2用于判断有没有最矮巨人。
2.数据处理:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.1.2实验代码截图

在这里插入图片描述

1.1.3 造测试数据
输入数据输出数据
4(第一行)1 7 4 6(第二行)4 6 3 6(第三行)1 6 1 6(第四行)0 7 8 7(第五行)(1,1)(第一行)(1,3)(第二行) (2,1)(第三行)(2,3)(第四行)
7NONE
1.1.4 PTA提交列表及说明

在这里插入图片描述
说明:1.之前没考虑到定义一个flag2来判断是否有最矮巨人,导致编译错误,后来经过查询资料,改正了过来,成功编译。

1.2sdut-C语言实验-字符编码

请将一串长度最长为5的纯字母文本译成一个密码,密码规律如下:用原来的字母后面的第4个字母代替原来的字母。如C用G代替(如果该字母没后面没有第4个字母可代替,则需从26字母表中的首字母开始代替,比如:W用A代替,Z用D代替),最后得到的文本即为密码。
输入格式:
输入一串文本,长度固定为5。
输出格式:
输出对应的密码。格式为:
password is 密码

1.2.1数据处理

1.数据表达:定义整型变量i,字符串变量c[5],其中i用于控制循环变量,c[5]用于储存字符串。
2.数据处理:
在这里插入图片描述

1.2.2实验代码截图

在这里插入图片描述

1.2.3 造测试数据
输入数据输出数据
Chinapassword is Glmre
VWxyZpassword is ZAbcD
1.2.4 PTA提交列表及说明

在这里插入图片描述
说明:第一次编译忽略了’a’<=c[i]&&c[i]<=‘v’||‘A’<=c[i]&&c[i]<=‘V’的表达方法,写成了’a’<=c[i]‘v’||‘A’<=c[i]<=‘V’,后面经过检查发现了这个细节问题,真实感受到“细节决定成败”的含义,也证明了平时基础知识不牢固。

2.代码互评

同学的代码:
在这里插入图片描述

自己的代码:

在这里插入图片描述
代码分析:1.同学的代码更加严谨,运用了更多字符串相关知识,使用了string函数,计算a[5]字符串长度;
2.同学的代码定义了更多的变量,并给数组赋值了,我的代码中数组没有赋值,只定义了长度;
3.同学在运用if-else选择结构时,只对‘a’<=c[i]&&c[i]<=‘v’||‘A’<=c[i]&&c[i]<=‘V’的条件进行了讨论,未讨论’w’<=c[i]&&c[i]<=‘z’||‘W’<=c[i]&&c[i]<='Z’的情况,忽略了题目要求的纯字母密码,可能输入字母意外的内容时也会输入相应答案,不符合要求,代码使用又局限性。

同学的代码:
在这里插入图片描述
自己的代码:
在这里插入图片描述
代码分析:1.同学的代码直接在定义变量时给了二维数值相关的取值范围,开辟了足够的空间,而我的代码只是需要输入数据才能确定二维数组开辟空间的大小,且空间刚刚好满足要求,猜测稍有不慎可能会造成数据溢出;
2.同学的代码更加简洁,在第二个for循环时,直接先输出二维数组在判断最小值,而我的代码中输出二维数组是在for循环中先判断最小值再嵌套一个for循环来输出二维数组的内容;
3.在判断最小值时,同学是直接先赋值c=0,r=0;然后判断是否a[i][j]<a[c][r],满足条件再将i,j的值赋给c,r。而我的代码是先定义变量min=a[0][0],min_col=0,min_rom=0,再判断是否满足min>a[i][j],再给i,j的值赋给min_col,min_rom,显得更加繁琐。

3.学习总结

3.1 学习进度条在这里插入图片描述
3.2 累积代码行和博客字数

在这里插入图片描述

3.3 学习内容总结和感悟
3.3.1 学习内容总结

周政 202001120242 通信3班

3.3.2 学习体会

存在问题:
1.当前阶段最大的问题:需要用到多个循环结构、选择结构嵌套时,不能准确的做出流程图,也不能正确的解题,解题没有思路。
2.二维的字符数组不会输出,比如:pta编程题第三题,不清楚如何将长号和短号整合到同一个二维字符数组中。
3.对flag运用不清楚时机,不知道啥时候该用,啥时候不需要用,不能掌握使用技巧。
下步打算:
1.继续弄懂,消化该章节的知识,尤其是对二维数组和字符数组的知识。
2.对第一次提交错误的题,回头看,再次提交。
3.在学习新知识的同时,利用复习题复习前面的知识,做到温故而知新。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值