第五篇博客

| 这个作业属于哪个班级 |


| ---- | ---- | ---- |
| 这个作业的地址 |
| 这个作业的目标 | 学习数组相关内容 |
| 姓名 | 卢伟杰 |

0.展示PTA总分


1.本章学习总结

1.1 学习内容总结

1.1.1 数组中如何查找数据,有哪些做法

  • 目前学习了两种查找数组中数据的方法:

    A.顺序查找 :不需要排序,遍历所有数组元素,查找时间较长。

    B.二分法查找 :需要对所有数据进行排序,每次都是和中间值比较。

1.1.2 数组中如何插入数据,怎么做

  • 目前学习了三种插入进数组数据的方法(后面两种可输入带空格字符串):

    A.scanf语句输入数据 :

       scanf("%s", &str)
       输入函数:数组名,不加地址符;
       遇到回车或空格输入结束,
       并自动将这一字符串和'\0'送入数组中。
      
       scanf无法接收带空格的字符串。

B.循环输入

       for (int i = 0; i < n; i++)
          {
               scanf("%c", &str[i]);
          }
       str[i] = '\0';
       
       循环输入要注意在循环结束后加结束符'\0'。
       循环输入可以输入空格。     

C.fgets函数

      char str[80];
      fgets(str, 80, stdin);      //表示标准输入符;
      
      fgets 是将 n - 1个字符输入到数组内,最后一位为'\n';
      使用时要注意数组大小,避免产生字符溢出的问题;
      进行循环条件需设置 :
         for (i = 0;str[i]&& str[i]!='\n'; i++)

1.1.3 数组中如何删除数据

  • 目前学习了三种删除数组数据的方法:

A.将要删除元素的后面全部往前移动

B.将不符合规则的元素去除,只输出符合的元素

C.使用哈希数组,删除重复的字符,并进行输出

1.1.4 数组中目前学到排序方法

  • 目前学习了两种数组数据排序的方法:

A.冒泡法排序(使用for循环并考虑怎么实现冒泡)

B.选择法排序 (for循环,并if语句进行判断变换)

1.1.5 哈希数组用法,目前学过哪些案例,举例展示

  • 目前学习了两种哈希数组使用的方法:

A.7-3 删除重复字符

#include <stdio.h>
int main()
{
	char str[81];
	static int hash[256];
	int i = 0;

	fgets(str, 81, stdin);

	for (i = 0; str[i] != '\n'; i++)
	{
		hash[str[i]]++;
	}

	for (i = 0; i < 256; i++)
	{
		if (hash[i] != 0)
		{
			printf("%c", i);
		}
	}

	return 0;
}

B.7-7 A-B

#include <stdio.h>
int main()
{
    char str1[10002];
    char str2[10002];
    static int hash[128];

    fgets(str1, 10002, stdin);
    fgets(str2, 10002, stdin);

    for (int i = 0; str2[i] != '\n'; i++)
    {
        hash[str2[i]]++;
    }

    for (int i = 0; str1[i] != '\n'; i++)
    {
        if (hash[str1[i]] == 0)
        {
            printf("%c", str1[i]);
        }
    }

    return 0;
}

2.PTA实验作业

2.1 7-5 调查电视节目受欢迎程度

2.1.1 伪代码

      定义并初始化电视节目的数组 b[8];
      定义数组a[1000];
      定义n为数组的个数;
      输入n;
      for i = 0 to n - 1
      输入数值赋予 a[i];
      for i = 0 to n - 1
      int j = a[i]; 
      进行switch结构判断节目的选项;
      输出节目序号与数量;

2.1.2 代码截图



2.1.3 同学代码截图

2.2 7-14 找鞍点

2.2.1 伪代码

      定义n为二位数组的行列数;
      定义 i,j;
      定义数组a[max][max]
      定义void getPoint(int a[][max], int n)
      for i = 0 to n - 1;
      for j = 0 to n - 1;
      输入数值赋予a[i][j];
      进入函数进行判断;
      输出所找到的鞍点;

2.2.2 代码截图

2.2.3 请说明和超星视频做法区别,各自优缺点

**本题就是从超星视频学习的**

2.3 切分表达式——写个tokenizer吧

2.3.1 伪代码

       定义 i 、j;和数组str[41];
       用fgets向str数组输入数据;
       for i = 0 to str[i] != '\n'
       对str[i]进行判断并输出相应的数据;

2.3.2 代码截图

2.3.3 请说明和超星视频做法区别,各自优缺点

**本题就是从超星视频学习的**
posted @ 2020-12-13 22:31  昨日云流  阅读(110)  评论(0编辑  收藏  举报