1.1 思维导图
1.2 本章学习体会及代码量学习体会
通过这几周的学习,基本掌握了数组相关的基础使用方法及相应题型的掌握;
同时也了解到了数组:
数组是值的有序集合,每个值称为一个元素,每个元素在数组中有特定位置;
学习了数组后在一些需要用到一些比较难以解决的问题都可以通过数组来进行解决
1.2.1 学习体会
1.2.2 代码累计
2.PTA总分(2分)
2.1截图PTA三次题目集:一维数组、二维数组和字符数组共3次题目集的排名得分
2.2 我的总分:430
3.PTA实验作业(6分)
3.1 PTA题目1
找鞍点 (20 分)
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
本题要求编写程序,求一个给定的n阶方阵的鞍点。
3.1.1 算法分析
定义n,i,j,k=0,y=0,flag=0,p=0;flag用于判断是否有鞍点
先定义一个二维数组a[6][6]
scanf输入这个数组的阶n
for循环输入这个数组的数据
if(n1)的时候只有一个点一定为鞍点
else
for
for寻找最大值
if(a[i][k]<=a[i][p])元素之间的比较
for 判断是否最小值
if(a[y][k]>a[j][k])若此行最大值不是列所在最小值,把小的行标赋给y
if(iy)行最大且列最小,判断条件行标不改变
flag=0
break
if(flag==0)
有鞍点输出i k
else 输出NONE
3.1.2 代码截图
3.1.3 PTA提交列表及说明
Q1:一开始的数据互换的问题一直无法解决
A1:后面通过同学的讲解才知道行标列标的用法
3.2 PTA题目2
IP地址转换 (20 分)
一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。
3.2.1 算法分析
定义字符数组str[][] 字符变量 ch 二维数组 sum[][]
for 输入字符串
for (j = 0; j < 8; j++)
ch=getchar()
str=ch
for 处理每一组的8位二进制字符,使用一维整形数组保存其和
for
sum[i]+=(str[i][j-1]-48)*pow(2,k) k++
for 打印结果
printf sum
if (i!=3) 控制标点
printf .
printf \n
3.2.2 代码截图
3.2.3 PTA提交列表及说明
代码在DEV上进行过多次调试
Q1:在输出的时候无法控制标点的输出
A1:使用了一个flag来标记是否输出标点
3.3 PTA题目3
冒泡法排序 (20 分)
将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N−1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。
本题要求对任意给定的K(<N),输出扫描完第K遍后的中间结果数列。
3.3.1 算法分析
定义N,i,j,K; n1=0, n2
scanf 输入N K 表示N个数 进行冒泡 K次
for 循环 i<N为条件
for 循环 j<N-i-1 为条件
if 数组元素和后一个元素进行比较 大于进入
前后位置转换
n1 ++ 计冒泡次数
if(n1==K)退出循环
for 循环 输出 数组
3.3.2 代码
3.3.3 PTA提交列表及说明
Q1:在前后位置进行比较的时候比较容易搞错
A1:仔细了解冒泡排序是怎么样进行的
4.代码互评
4.1 代码截图
自己的代码截图
同学代码截图
4.2 二者的不同
1.我的代码看起来比较简洁明了,界面比较清晰。
2.他的代码在判断的大小的时候的用法和我的用法有很大的区别。
|
请发表评论