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

    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业04--数组
    这个作业的目标 学习数组相关内容
    姓名 喻文康

    0. 展示PTA总分


    1.本章学习总结

    1.1 学习内容总结

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

    1.顺序查找法:假设要查找的数为x,在数组a[100]中逐个查找,立一个flag=0没找到的标志,在for循环中确定flag的值,if(flag1)找到,if(flag0)未找到。
    2.二分查找法:前提是数组元素必须是有序的。假设要查找的数为x,在数组b[100]中查找,定义mid为数组的中间位置,用while(low<=high)通过x与b[mid]的大小比较,
    决定左移或者右移或者找到x直接输出(也可以使用int型函数,返回结果)。

    3.注意:当数组存放的数太大时,想要查找数据,用顺序查找法就会显的鸡肋,程序运行的效率也会很低,所以务必掌握二分查找法,这种方法在后面的删除/添加数据也会用到。

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

    数组不擅长插入(添加)和删除元素。数组的优点在于它是连续的,所以查找数据速度很快。但这也是它的一个缺点。正因为它是连续的,所以当插入一个元素时,
    插入点后所有的元素全部都要向后移;而删除一个元素时,删除点后所有的元素全部都要向前移。
    代码截图:

    • 数组中如何删除数据?
      方法一:(已知要删除的数的下标,在原数组上进行删除操作)

      方法二:(已知要删除的数的值,在原数组上进行删除操作)

      方法三:(已知要删除的数的下标,将删除后的数组存放到一个数组中并输出)

      方法四:(已知要删除的数的值,将删除后的数组存放到一个数组中并输出)
    • 数组中目前学到排序方法,主要思路
      1. 冒泡排序:

      2. 选择排序:
    • 数组做枚举用法,有哪些案例

    PTA题目:7-5 调查电视节目受欢迎程度 :
    某电视台要调查观众对该台8个栏目(设相应栏目编号为1~8)的受欢迎情况,共调查了n位观众(1≤n≤1000),现要求编写程序,
    输入每一位观众的投票情况(每位观众只能选择一个最喜欢的栏目投票),统计输出各栏目的得票情况。

    PTA题目:7-8 有重复的数据I:
    在一大堆数据中找出重复的是一件经常要做的事情。现在,我们要处理许多整数,在这些整数中,可能存在重复的数据。
    你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,输出“YES”这三个字母;如果没有,则输出“NO”。

    • 哈希数组用法,目前学过哪些案例

    简单说来,hash就是为了把一个复杂的字串,通过一定的转换,得到一个简单的数字(通常是数字)。
    由于目前对hash数组仍不够了解,所以目前就拿来用作统计。
    PTA题目:7-3 删除重复字符:
    本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。

    PTA题目:7-7 A-B :

    • 字符数组、字符串特点及编程注意事项

    scanf()输入

    注: 用scanf("%s",a);函数输入字符串时,可以不必加取地址符。遇到空格、tab、换行自动结束。
    若输入的字符串的长度小于定义的长度,则未赋值的位置自动放''作为结束语,且数组有且必须有''结束字符。

    fgets()函数输入

    注:用fgets(a,5,stdin);函数输入字符数组时,遇到空格、tab、换行同样会输入,不会结束,
    并且同scanf()函数一样,数组必定以''结束。

    字符型数组存放数字时要使用其存放的值
    因为在使用字符型数组时都会转化成数组内存放的ascall码值,如果要使用它存放的数字,就要按这样进行编译:

    即str[i]-''。

    2. PTA实验作业

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

    2.1.1伪代码

    2.1.2 自己的代码截图

    2.1.3 同学的代码截图


    在输入时就开始了统计,省去了一个for循环,减少了程序运行时间,注释详细,值得学习。

    2.2 7-14 找鞍点

    2.2.1 伪代码

    定义n为n维数组,i, j, flag = 0。
    定义num[6][6]。
    定义choice函数来找鞍点
    输入n
    for i = 0 to n - 1
    for j = 0 to n - 1
    输入数值赋予a[i][j].
    end.
    进入choice函数
    for j = 0 to n - 1
    x=0
    for i = 0 to i = n - 2
    如果num[i][j] > num[i + 1][j], temp = num[i + 1][j];x = i + 1;y = j;
    否则temp = num[i][j];x = i;y = j;
    end
    for i = 0 to = n - 1
    如果temp < num[x][a],则不是鞍点,end
    否则是鞍点
    end
    如果flag == 1,输出x,y。
    如果flag == 0,输出NONE。

    2.2.2 代码截图

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

    自我感觉和超星的做法差不多,但发现自己对变量的控制和运用还不是很熟练,自己 定义了很多变量,而超星中老师的做法却反复运用一个变量,觉得自己这方面还是有很多不足

    2.3 7-6 切分表达式——写个tokenizer吧

    2.3.1 伪代码

    Char ch[42]//定义数组存放表达式,因为后面用fgets函数,所以留两个空位分别给’ ’和’’
    Int i=0//确定数组中的位置
    fgets函数输入字符
    While循环//一直读到字符数组中的’ ’
    {
    每一行输出一个字符
    ‘(‘的后面如果跟着’-’,那么’-’与后面的数字在同一行输出
    数字字符的后面如果还是数字字符或者是’.’(小数点)的话则(不换行)继续输出,并将位置(即i向后移),再重新进入该判断分支
    }
    end while

    2.3.2 代码截图

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

    在看完超星视频的做法后觉得思路特别清晰,对比自己的做法,感觉自己没有明白token的意思,没有用token来建立条件,而自己的判断语句很散,思路也比较乱
    超星视频学习感想:可以发现自己代码的不足,或者说能够看到更为清晰的程序思路,而且里面的代码很值得借鉴。

  • 相关阅读:
    安卓热修复
    Activity四种启动模式
    11、网页制作Dreamweaver(补充:JS零碎知识点&&正则表达式)
    6、C#基础整理(for 语句经典习题--for循环嵌套、穷举)
    5、C#基础整理(for 语句经典习题--与 if 的嵌套)
    4、C#基础整理(if语句经典习题)
    3、C#基础整理(语句概述)
    2、C#基础整理(运算符、数据类型与转换、var关键字)
    1、C#基础整理(进制转换的方法)
    10、网页制作Dreamweaver(扩展:各浏览器对 onunload 事件的支持与触发条件实现有差异)
  • 原文地址:https://www.cnblogs.com/ywk2002/p/14090507.html
Copyright © 2011-2022 走看看