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

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

    0.展示PTA总分(0----2)


    1.本章学习总结

    1.1 学习内容总结

    • 数组中如何查找数据
      1 .将需要查找的数据和数组中的数组逐一对比;
      2 .构建一个新的初始化后的数组,把原数组套入其中,如果找到,则对应的新数组加一。

    • 数组中如何插入数据
      输入数据用循环语句与数组进行比较找到插入位置
      将插入数据后的数组整体向后移动
      再将数据插入数组中
      以pta数组7-6为例

    if(x<num[0])then[num[0] = x]
    /*如果输入小于最小数组*/
    else if(x > num[N - 1])then[num[N] = x]
    /*如果输入大于最大数组*/
    else 
    1. for i←0 to n   
        1. if (x >= num[i] && x <= num[i + 1])   
            1. for (i ← N - 1 to j)  
                1. num[i + 1] = num[i]  
            2. num[j + 1] = x  
            3. break 
    /*如果输入在数组之间*/
    
    • 数组中如何删除数据
      1 .针对数组位置:构建一个新数组保存需要删除的位置;保存后再一一对应的位置上一次次左移。
      例如pta数组7.9

      2 .针对数组元素:可以构建哈希数组,对哈希数组上的值赋0或1;再根据判断进行输出。
      例如pta字符数组7.3

    • 数组中目前学到排序方法
      1 .选择排序法:以从大到小为例,将第一个数与后面的数对比,若是比他大则调换,经此一轮可以得到第一位的最大数,在经过一轮得到第二位的第二大数,以次类推,完成排序。
      代码如下

      2 .冒泡排序法:以从大到小为例,将第一个数与第二个数对比,若第一个数比第二个数大,进行一次调换再将第二个和第三个数对比,若第二个数比第三个数大,再进行调换,以此类推,则第一轮结束后可得到最大的最后一位数,再经一轮得到第二大的倒数第二位数,以此类推,完成排序。
      代码如下

    • 数组做枚举用法的案例
      查找整数
      选择排序法
      找鞍点
      删除重复数据
      统计语句中的单词

    • 哈希数组用法及案例
      用法:定义一个新的整型数组为哈希数组,将其他字符数组中的字符值与哈希数组相关联,再根据哈希数组中的值来以此实现对数组的操作。
      案例:计算字符串A-B

      删除重复字符

    • 字符数组、字符串特点及编程注意事项。
      字符串常量是用一对双引号扩出来的字符序列;
      一个字符串结束符''=0;
      scanf(“%s”,str)无法接收带空格的字符串;
      fgets函数能接收带空格的字符串。

    2.PTA实验作业

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

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

    2.1.1 伪代码

    输入num
    /*num为观众的调查数*/
    for i←0 to num 
    do
    1. 输入n[i]
    2. if (num[i]>0 && num[i]<9)then [count[num[i]]=count[num[i]]+1]
    /*输入num个数给n[1] n[2]、、、n[num],输入各观众的评分,并统计各分数的次数*/
    for i←0 to num 
    do
    1. if (i != 0) then [ printf("%4d", i);printf("%4d", count[i]);]
    2.  if (i != 8 && i != 0) then [printf("
    ");]
    /*将数值输出*/
    

    2.1.2 代码截图

    2.1.3 展示同学的代码


    他的代码注释详细,也更加精简,值得向他学习。
    但是我们的变量名也因为图方便都设的很简单,这点我们需要改进。

    2.2 找鞍点

    一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
    本题要求编写程序,求一个给定的n阶方阵的鞍点。

    2.2.1 伪代码

    输入n
    /*n为矩阵的阶数*/
    for i←0 to n-1
    do
    1. for j←0 to n-1
       do
       1.输入number[i][j]
    /*对矩阵数组number赋值*/
    for i←0 to n-1
    1. l=0
    2. for j←0 to n-1
        1. if (number[i][j] >= number[i][l]) then [l=j]
    3. for m←0 to n-1
        1. if (number[m][l] < number[i][l]) then [break]
        2. if (number[i][l] <= number[m][l] && m == n - 1) then [printf("%d %d", i, l);flag = 0;]
    /*找出鞍点*/
    if (flag == 1) then [printf("NONE");]
    /*如果没有鞍点时输出NONE*/
    

    2.2.2 代码截图

    2.2.3 和超星视频做法的区别

    思路基本一致,但是超星有封装成函数。

    2.3 切分表达式

    四则运算表达式由运算数(必定包含数字,可能包含正或负符号、小数点)、运算符(包括+、-、*、/)以及小括号((和))组成,每个运算数、运算符和括号都是一个token(标记)。现在,对于给定的一个四则运算表达式,请把她的每个token切分出来。题目保证给定的表达式是正确的,不需要做有效性检查。

    2.3.1 伪代码

    输入字符数组str
    for i←0 to  str[i]!='
    '
    1. if (str[i + 1] == '
    ') then [printf("%c", str[i]);break;]
    /*处理末尾字符*/
    2. if (i == 0 && str[i] == '+') then [printf("%c", str[i]);continue;]
    /*处理第一个为正数带符号的情况*/
    3. if ((str[i] < '0' || str[i] > '9')&& str[i] != '-' &&str[i]!='.') then [printf("%c
    ", str[i]);]
    /*处理只占一行的符号*/
    4. else if(str[i] == '-' && (str[i-1] < '0' || str[i-1] > '9')) then [printf("%c", str[i]);]
    /*处理负数符号*/
    5. else if ((str[i] >= '0' && str[i] <= '9'&& str[i+1] >= '0' && str[i+1] <= '9') || str[i] == '.' || str[i+1] == '.') then [printf("%c", str[i]);]
    /*处理非个位数数字*/
    6.else printf("%c
    ", str[i]);
    /*处理运算符*/
    

    2.3.2 代码截图

    2.3.3 和超星视频做法的区别

    思路还是差不多,都是去找规律去判断,但是还是没有封装成函数。

  • 相关阅读:
    如何动态改变ALV状态栏(Status)中的按钮文本和图标(Icon)
    redux计算器
    原生js轮播图
    原生js实现tab切换
    lynx---CentOS终端访问IP
    centos 下安装jdk、tomcat 以及tomcat无法从外部访问的解决办法
    CentOS-7.0.中安装与配置Tomcat-7的方法
    CSS实现自适应不同大小屏幕的背景大图
    在ssm框架中前后台数据交互均使用json格式
    Mybatis动态查询语句
  • 原文地址:https://www.cnblogs.com/13859862647z/p/14124315.html
Copyright © 2011-2022 走看看