C博客作业04--数组
| 这个作业属于哪个班级 | https://edu.cnblogs.com/campus/jmu/2020C |
| ---- | ---- | ---- |
| 这个作业的地址 | https://www.cnblogs.com/2077962954qqcom/p/14130252.html |
| 这个作业的目标 | 学习数组相关内容 |
| 姓名 | 王历 |
0.展示PTA总分(0----2)
1.本章学习总结(3分)
- 数组中如何查找数据,有哪些做法
当元素数量有限时,定义一个数组a[],假设这个数组中元素的下标为i,如果已经知道元素内容比如x,就可以通过条件语句if(a[i]==x)来判断和查找数据了;当元素数量较多时,可以使用二分法查找数据。
二分法伪代码:
int binsearch(int a[], int n, int x)
{
int low, high, mid;
while(low <= high) do
取中间数a[mid]
if(x > a[mid]) low = mid+1;//右区间
else if(x < a[mid]) high = mid-1;//左区间
else return mid;
mid = (low + high) / 2
end while
return -1;//找不到
}
- 数组中如何插入数据,怎么做
for i=0 to index - 1 do //往前找插入的位置
查找插入的位置loc
end for
for i = n to loc + 1 do
a[i] = a[i-1]
end for
a[loc] = x
- 数组中目前学到排序方法,主要思路?
- 选择排序法:
步骤:
第一步:在未排序的n个数(a[0]~a[n-1])中找到最小数,将它与a[0]交换;
第二步:在剩下未排序的n-1个数(a[1]~a[n-1])中找到最小数,将它与a[1]交换;
······
第n-1步:在剩下未排序的两个数(a[n-2]~a[n-1])中找到最小数,将它与a[n-2]交换。 - 冒泡排序法:
-
哈希数组用法,目前学过哪些案例,举例展示。
目前学过使用哈希查找的案例有:重复数据、删除重复字符、A-B。 -
字符数组、字符串特点及编程注意事项。
-
字符串:
字符串常量:用一对双引号括起来的字符序列,'\0' = 0 为结束符。
字符串:一个特殊的一维字符数组。
字符串需要用一维数组存储
对字符串的操作===> 对字符数组的操作
2.PTA实验作业(7分)
2.1 题目名1(3分)
有重复的数据I
2.1.1 伪代码
int num;
int a[N];
int i, j;
int result[N];
for i = 1 to num do
for j = i+1 to num do
比较后面的数据是否与a[i]相等
如果相等,输出“YES”
否则输出“NO”
return 0;
2.1.2 代码截图
2.1.3 找一份同学代码(尽量找思路和自己差距较大同学代码)比较,说明各自代码特点。
2.2 题目名2(2分)
找鞍点
2.2.1 伪代码
int a[6][6], n;
int i, j;
for i=0 to n-1 do
{
for j=0 to n-1 do
输入二维数组a[6][6]
}
遍历二维数组,找到鞍点
return 0;
2.2.2 代码截图
2.2.3 请说明和超星视频做法区别,各自优缺点。
超星视频中通过使用函数来找到鞍点所在的位置,这样的方法使得代码中嵌套要比不用函数少得多,更便于他人阅读。
2.3 题目名3(2分)
切分表达式
2.3.1 伪代码
char a[num];
int i;
for i=0 to a[i] != '\0' do
if字符是数字或者小数点时
{
输出a[i]
if数字后为运算符 换行
}
else
{
if(a[i]=='-'||a[i]=='+')
{
if加号或者减号前面出现( 或者什么都没有
输出a[i]
else 输出a[i]后换行
}
else
{
输出
}
}
return 0;
2.3.2 代码截图
2.3.3 请说明和超星视频做法区别,各自优缺点。
视频中的代码嵌套较少,思路清晰,不会让人觉得代码混乱。