这个作业属于哪个班级 | C语言--网络2011/2012 |
---|---|
这个作业的地址 | C博客作业04--数组 |
这个作业的目标 | 学习数组相关内容 |
姓名 | 吴俊豪 |
0.展示PTA总分
1. 本章学习总结
1.1 学习内容总结
查找数组的做法
对于乱序数组:逐一比对.
对于顺序数组:二分查找法.
插入数组
方法:
伪代码
确定插入位点i后
for 数组末尾 to i
num[i+1]=num[i]
end for
num[i]=插入数
删除数据
野蛮蠕动法:
无情重构法
伪代码:
删除底数e,j=0,i=0
for 0 to num1末尾
if i=e i++
else num2[j]=num1[i] j++
end for
排序方法
冒泡排序法:
思路:外循环控制冒泡轮次,内循环从0到j-i控制单轮的排序次数
选择排序法:
思路:外循环控制选择轮次,内循环从i到n控制单轮的排序次数
枚举法
实例:查找整数, 统计一行文本的单词个数,删除数字字符等
哈希数组
案例:有重复的数据I
字符数组、字符串特点及编程注意事项
1)使用scanf输入数组时遇到'(我是空格)'或'
'时会自动加上结束符' ',但之后需在输出前加入str[i]=' '来避免可能发生的段错误.
2)对于输入内容有换行或空格的字符串时宜用fgets(字符数组名,字符数组长度,stdin);,该语句可以接收空格和换行符,并也能在字符串末尾加上结束符'
'.
2. PTA实验作业
2.1 有重复的数据I
2.1.1 伪代码
int num[]
static int hash[]
flag=1
for 0 to num末尾
if hash[num[i]]==0 hash[num[i]]++
if hash[num[i]]>0 flag=0
end for
if flag=0 NO
if flag=1 YES
2.1.2 代码贴图
2.1.3 代码比较
@陈剑
比较:其实思路框架都是一个,做法都大同小异
2.2 找鞍点
2.2.1 伪代码
flag=0
for i=0 to n
for j=0 to n
for x=0 to n
行比较 否 count++
end for
for y=0 to n
列比较 否 count++
end for
if count=0 flag=1 printf鞍点
end for
end for
if flag=0 printf NONE
2.2.2 代码截图
2.2.3 与超星视频相比
我的代码循环次数较多,有可以继续优化的部分,但也能准确地找出鞍点
2.3 切分表达式
2.3.1 伪代码
for i=0 to n
if 本位是数字
printf 本位
if 下一位不是数字
if 下一位是小数点
continue
end if
else if
printf
end if
else if 下一位是数字
end if
end if
if 本位是+-
if 正负号
printf 本位
end if
if 加减号
printf 本位
end if
end if
if 本位是小数点
printf 小数点
end if
if 本位是*/()
printf 本位
end if
end for
2.3.2 代码截图
2.3.3 与超星做法比较
超星视频里使用了函数对代码进行封装,代码看起来更加规范
无了