zoukankan      html  css  js  c++  java
  • C语言数组

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

    0.展示PTA总分

    1.本章学习总结

    1.1 学习内容总结

    1.1.1一维数组知识

    定义:类型名 数组名 [数组长度]
    定义时数组长度是整型常量

    引用数组:数组名 [下标]
    引用时下标可以是整型表达式,但一定要在数组长度内。最大下标时所定义数组的长度-1

    1.1.2二维数组知识

    定义:类型名 数组名 [行数长度][列数长度]
    定义时长度都是整型常量

    引用数组:数组名[行下标][列下标]
    引用数组时与一维数组类似,但要同时控制行跟列的下标

    使用二维数组:
    输入一个二维数组:
    for(i=0;i<n;i++)//外循环控制行下标
    {
    for(j=0;j<n;j++) //内循环控制列下标
    scanf("%d",&a[i][j]);
    }
    输出一个二维数组:
    for(i=0;i<n;i++)//外循环控制行下标
    {
    for(j=0;j<n;j++)//内循环控制列下标
    printf("%d",&a[i][j]);
    }

    1.1.3字符数组知识

    字符串:
    一串字符的结束标志是'',字符串的有效长度就是有效字符的个数。

    存储--赋值和输入:
    注意:区分"a"和'a'
    ​ "a"是字符串常量,包括'a'和''两个字符。
    ​ 'a'是字符常量,只有'a'一个字符。

    字符串的输入

    字符串输入:
    scanf("%s",str);
    当输入字符串时输入' '、' '时停止录入,并且系统会自动在输入字符后加上''的结束符标志。

    循环输入:
    法1:
    while((str[i]=getchar())!=' ')
    i++;
    str[i]=0//循环结束后,一定要在最后赋值0;
    法2:
    for(i=0;str[i]!='';i++)

    函数输入:
    引用fgets()函数
    读取到换行符、文件尾或读完n-1个字符结束,但是输入字符长度少于n-1,会多带一个换行符。
    fgets(数组名,数组数,stdin)
    当输入字符串时输入' '结束录入并且会将回车键录入,后函数在其末尾加上''的结束符标志

    1.2常用数组方法总结

    1.2.1查找数据

    顺序查找法:
    应用循环依次查找数组内数据,如一致则输出下标。
    int x;
    scanf("%d",&x);
    for(i=0;i<n;i++)
    if(a[i]==x)//如果在数组a中找到了数据x
    printf("%",i);//输出相应的数组下标

    二分查找法:
    将n个元素分成数组长度相等的两部分,取数组中间值a[n/2]与数据x做比较;
    如果x=a[n/2],则找到x;
    如果x<a[n/2],则需在数组a的左半部分继续搜索数据x;
    如果x>a[n/2],则只要在数组a的右半部搜索数据x。
    直到查到x值,程序结束。
    while (low <= high)
    {
    int middle = (low + high) / 2;
    if (target == num[middle])
    {
    return middle;
    }
    else if (target > num[middle])
    {
    low = middle + 1;
    }
    else if (target < num[middle])
    {
    high = middle - 1;
    }
    }
    return -1;

    1.2.2插入数据

    插入排序:
    在排好的数列中插入x,按照原有的顺序,插入后得到的新数列也是像原数列一样的顺序。

    1.2.3删除数据

    数组元素的删除:
    删除数组元素,先找到该元素,然后将数组依次向前推进。最终得到新的数组。

    1.2.4排序方法

    冒泡排序:
    从头到尾相邻的元素做比较,如果在前的元素较大就与在后的元素进行交换。
    针对所有的元素重复以上的步骤,除了最后一个元素。

    选择排序:
    要排序的一组数中,选出最小(或最大)的一个数与第一个位置的数交换;
    在剩下的数当中找最小的与第二个位置的数交换,即顺序放在已排好序的数列的最后,如此循环,直到全部数据元素排完为止。

    2.1数组循环左移

    2.1.1 伪代码

    • 定义:n,m
    • 输入:n,m
    • 求应该将数组元素向前推移多少单位,如果m比n大也可以具体算出数组元素应该向前推进多少单位长度:m=m%n
    • 定义数组:a[101]
    • 输入数组元素:for i=0至i=n-1,i++
    • 定义中间变量:temp
    • 进入数组元素互换前后元素调换:for i=0至i=j||i>j,j=n-1至j<i||j=i,i++,j--
    • 进入数组元素的前半部分元素调换:for i=0至i=j||i>j,j=n-1-m至j<i||j=i,i++,j--
    • 进入数组元素的后半部分元素调换:for i=n-m至i=j||i>j,j=n-1至j<i||j=i,i++,j--
    • 输出数组元素:for i=0至i=n-1

    2.1.2 代码截图

    2.1.3 代码比较

    2.2 杨辉三角

    2.2.1 伪代码

    • 定义:int N
    • 输入:N
    • 定义二维数组并给予初始化:a[10][10]={0}
    • 定义循环内参量:int i,j;
    • 外层循环控制行:for i=0至i=9;
    • 内层循环控制列:for j=0至j=9;
    • 判断:
    • if j0||ji,就令其a[i][j]=0;
    • else a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
    • 输出:外层循环控制行:for i=0至i=N;
    • 内层循环控制列:for j=0至j=i;//j=i,控制每行应该输出的个数;

    2.2.2 代码截图

    2.3 二维数组每列排序

    2.3.1 伪代码

    2.3.2 代码截图

  • 相关阅读:
    解决winfrom下TextBox不支持透明背景色
    C# Winform 怎么让按钮在Panel里居中显示
    DevExpress Cpicturebox或者Dev控件 PictureEdit 按比例的缩放加载图片
    Alluxio : 开源分布式内存文件系统
    yarn cluster和yarn client模式区别——yarn-cluster适用于生产环境,结果存HDFS;而yarn-client适用于交互和调试,也就是希望快速地看到application的输出
    Linux 反弹shell(二)反弹shell的本质
    浅谈摄像头有关的安全问题
    pyspark AttributeError: 'NoneType' object has no attribute 'setCallSite'
    大规模异常滥用检测:基于局部敏感哈希算法——来自Uber Engineering的实践
    pyspark minHash LSH 查找相似度
  • 原文地址:https://www.cnblogs.com/jioky/p/14130362.html
Copyright © 2011-2022 走看看