C博客作业04--数组

| 这个作业属于哪个班级 | 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输入数组时遇到'(我是空格)'或'\n'时会自动加上结束符'\0',但之后需在输出前加入str[i]='\0'来避免可能发生的段错误.
2)对于输入内容有换行或空格的字符串时宜用fgets(字符数组名,字符数组长度,stdin);,该语句可以接收空格和换行符,并也能在字符串末尾加上结束符'\n'.

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 \n
         end if
     else if 下一位是数字
     end if
  end if
  if 本位是+-
     if 正负号
     printf 本位
     end if
     if 加减号
     printf 本位\n
     end if
  end if
  if 本位是小数点
     printf 小数点
  end if 
  if 本位是*/()
     printf 本位\n
  end if 
end for

2.3.2 代码截图


2.3.3 与超星做法比较

超星视频里使用了函数对代码进行封装,代码看起来更加规范
无了

posted @ 2020-12-13 12:38  Qurare  阅读(129)  评论(0编辑  收藏  举报