zoukankan      html  css  js  c++  java
  • C语言总结(二) 数组

      所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字成为数组名,编号成为下标。组成数组的各个变量成为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。(来自百度百科)

    下来我们直接用例子来说话吧:请看代码1:

    #include<stdio.h>
    int main() {
        int a[8], i;
        for(i = 1; i <= 8; ++i)
            a[i] = 0;
        return 0;
    }
    

    首先是定义一个数组a, 然后给数组a的每个元素赋值为0,可能有的同学已经发现问题了,数组越界了……a[8]这个元素是不存在的,同时这个代码可能为形成死循环,大家想想为什么?这里最后再做解释。

    下面请看代码2:

    // 查找整数d是否在数组 a 中
    #include<stdio.h>
    #define N 10;
    int main() {
        int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //初始化数组
        int i, d;
        for(i = 0; i < N; ++i) {
            scanf("%d", &d);
            for(i = 0; i < N; ++i) {
                if(a[i] == d) {
                    printf("d in the array of a!
    ");
                    break;
                }
            }
            if(i == N) printf("d not in the array of a!
    ");
        }
        return 0;
    }
    

     这个程序是给出一个数组a,然后输入一个数字d,看d是否在数组a中出现过。但是代码不能通过编译,请大家找找错误吧……

    可能大家已经发现了原因,因为#define N 10后面加了一个分号";",就是这个分号的原因,去掉后就可以通过编译并运行了,来我们来运行一下吧……

    又发现错误了!!! 当我们输入11时,程序就直接结束了,为什么啊!!?没错就是因为变量i,  这可能就是大家犯的一个小错误了,请看下面正确的代码!

    // 查找整数d是否在数组 a 中
    #include<stdio.h>
    #define N 10
    int main() {
        int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //初始化数组
        int i, j, d;
        for(i = 0; i < N; ++i) {
            scanf("%d", &d);
            for(j = 0; j < N; ++j) {
                if(a[j] == d) {
                    printf("d in the array of a!
    ");
                    break;
                }
            }
            if(j == N) printf("d not in the array of a!
    ");
        }
        return 0;
    }
    

     注意:当有循环嵌套时,千万不要让你的两个循环的 "i", 一样!

    其实这道题还有其它方法,大家想想看,请看下边的代码3:

    // 查找整数d是否在数组 a 中
    #include<stdio.h>
    #define N 10
    int main() {
        int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //初始化数组
        int b[11] = {0};
        int i, j, d;
        for(i = 0; i < N; ++i) b[a[i]] = 1;
        for(i = 0; i < N; ++i) {
            scanf("%d", &d);
            if( d < 11 && b[d] )
                printf("d in the array of a!
    ");
            else
                printf("d not in the array of a!
    ");
        }
        return 0;
    }
    

    代码4:数组排序

    //排序
    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    #define N 10
    
    int a[N] = {2, 3, 1, 4, 5, 6, 9, 10, 2, 1};
    
    int main() {
        int i;
        sort(a, a+N);
        printf("排序后数组a为: ");
        for(i = 0; i < N; ++i) printf("%d ", a[i]);
        puts("");  //输出换行
        return 0;
    }
    
  • 相关阅读:
    spring 面试题
    网络安全基础之笔记三(电子邮件安全/IPSec)
    网络安全基础之笔记二(传输层安全)
    网络安全基础之笔记一(用户认证)
    计算机网络基础之笔记一(体系结构)
    计算机网络基础之笔记三(应用层协议)
    计算机网络基础之笔记二(TCP/IP)
    json递归
    js笔试题(不定期更新)
    centos7的安装和配置
  • 原文地址:https://www.cnblogs.com/yaling/p/3460982.html
Copyright © 2011-2022 走看看