这个作业属于哪个班级 | C语言--网络2011/2012 |
---|---|
这个作业的地址 | C博客作业04--数组 |
这个作业的目标 | 学习数组相关内容 |
姓名 | 黄抒鸿 |
0.展示PTA总分
1.本章学习总结
1.1数组中如何查找数据,有哪些做法
1)顺序查找:依次遍历数组,查找目标元素。
优点:算法简单。
缺点:查找效率低。
2)二分法查找:每次查找二分后数组中的中间元素。
优点:提高效率。
缺点:只适用于有序数组。
1.2数组中如何插入数据,怎么做?
输入一个数据,找到插入位置,将该数据以后的所有数据下标往后移一位,将该数据插入该下标。
伪代码:
for i=0 to i=n-1 do
if x<数组元素 then
已找出切入点跳出循环
end if
end for i=n to 插入点 do
插入点后的下标后移一位
插入点存入数据
end for
输出改变后的数组
1.3数组中如何删除数据,这个有多种做法,请一一展示。
1.3.1在一个数组中,在该需要删除数据的地方记录下标,将后面的数据依次往前移。
1.3.2用另一个数组保存删除后的原数组的数据。
1.4数组中目前学到排序方法,主要思路?
1.4.1冒泡法排序
思路:对每一对相邻元素进行比较,如果第一个比第二个大,就交换它们两个,从第一对到最后一对作重复步骤,直到排序完成。
1.4.2选择排序法
思路:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
以此类推,直到所有元素均排序完毕。
1.5数组做枚举用法,有哪些案例?
调查电视节目受欢迎程度
阅览室
1.6哈希数组用法,目前学过哪些案例,举例展示。
代码:
#include<stdio.h>
#define MAX 100001
int SameData(int n);
int main()
{
int n;
scanf("%d", &n);
if (SameData(n))
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}
int SameData(int n)
{
static int a[MAX];
int i, data;
for (i = 1;i <= n;i++)
{
scanf("%d", &data);
if (a[data] == 1)
{
return 1;
}
else
{
a[data] = 1;
}
}
return 0;
}
1.7字符数组、字符串特点及编程注意事项。
1.字符串常量就是用一对双引号括起来的额字符序列,即一串字符,结束标识符为' '。
2.字符串由有效字符和字符串结束符' '组成。
3.字符输入:
1)
scanf("%s",str);
//遇空格or回车结束
//若输入的字符串长度小于定义长度,则为赋值的位置自动放置' '作为结束标志
2)
//fgets:接收带空格的字符串,以' '结束
char ch[5];
fgets(ch,5,stdin);
4.字符数组的初始化
static char s[6]={'H','a','p','p','y',' '};
or
static char s[6]={"Happy"};
or
static char s[6]="Happy";
2.PTA实验作业
2.1
2.2找鞍点
2.2.1伪代码
输入n/*n为矩阵的行列数*/
定义矩阵数组a[i][j]并对其赋值
if n=1 则 该点一定为鞍点
else
定义循环变量p;
定义变量k记录最大行标,y记录最小行标;
定义flag初始化为1;
for i=0 to n do
y=i;
for p=0 to n do
if(a[i][k]<=a[i][p]) then
将数组列标赋给k;
end if
for j=0 to n do
if(a[y][k]>a[j][k]) then
把小的行标赋给y;
跳出当前循环;
end if (i==y)//行最大且列最小,判断条件行标不改变 then
flag=0;
跳出当前循环;
end
if(flag==0)
输出当前鞍点;
else then
输出NONE;
end
2.2.2代码截图