0.展示PTA总分


1.本章学习总结
1.1 学习内容总结
- 数组中查找数据可以通过顺序查找,逐个判断。若数组为有序数组可通过二分法查找,减少工作量。
- 数组插入数据通过循环一次次判断,到合适位置插入。数组长度得加一,防止数组放不下
- 排序方式:冒泡法排序、选择法排序
1.冒泡法(以从小到大排序为例)
1.1思路
一次次判断,次次判断选出最大值并且将最大值放到数组的最后,然后第二次判断再将次大的放到数组倒二个地方,以此类推。
1.2动图演示(部分数据演示)
2.选择法(以从小到大排序为例)
2.1思路
让数组的第一个数值依次和后面的数据比较,如果后面的数据小就两者交换,后面数据大就和下一个进行判断。以此类推,再分别判断第二个、第三个等等。
2.2动图演示(部分数据演示)

- 当数组循环是,整型数组的循环判断条件是<n,而字符数组则是a[]!=' '。
2.PTA实验作业
2.1 调查电视节目受欢迎程度
2.1.1 伪代码
定义电视节目的数组并赋值 b[8]={0};
定义数组a[1000],用来储存观众数;
定义n为数组的个数;
输入n;
for i = 0 to n - 1
输入数值赋予 a[i];
进行switch结构判断节目的数量
根据a[i]中输入的数据(1~8),让数组b进行自增;
输出节目序号与数量,即数组b的数值;
2.1.2 代码截图

2.1.3 同学代码

2.2 找鞍点
2.2.1 伪代码
定义矩阵的数组a[6][6]
定义n为n阶矩阵;
输入n;
for i = 0 to n - 1
for j = 0 to n - 1
输入数值赋值a[i][j]
固定行,通过循环找出列最大
然后固定列最大,通过循环找出行最小
最后判断列最大和行最小的位置是否相同
输出结果
2.2.2 代码截图
#include <stdio.h>
int main()
{
int a[6][6],n;
scanf("%d",&n);
int i,j;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
scanf("%d",&a[i][j]);
}
int k=0,y=0,flag=1,p=0;
for(i=0; i<n; i++)
{
y=i;
for(p=0; p<n; p++)
{
if(a[i][k]<=a[i][p])
{
k=p;
}
}
for(j=0; j<n; j++)
{
if(a[y][k]>a[j][k])
{
y=j;
break;
}
}
if(i==y)
{
flag=0;
break;
}
}
if(flag==0)
printf("%d %d",i,k);
else
printf("NONE");
return 0;
}
2.2.3 请说明和超星视频做法区别,各自优缺点。
2.3 切分表达式