zoukankan      html  css  js  c++  java
  • C博客作业04--数组

    这个作业属于哪个班级 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代码截图


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

    2.3切分表达式

  • 相关阅读:
    剑指offer(第2版)刷题 Python版汇总
    git学习笔记
    Python中的lambda、map和filter
    算法题 22 折纸问题 (牛客网,今日头条)
    算法题 21 findNSum (好未来,LeetCode,牛客网)
    算法题 20 或与加
    Python的内存管理机制
    【算法题12 解码方法decode way】
    理解循环神经网络的来龙去脉
    机器学习资源个人汇总
  • 原文地址:https://www.cnblogs.com/SONGminusone/p/14128846.html
Copyright © 2011-2022 走看看