• [C语言]使用数组


     -----------------------------------------------------------------------------

    //  main.c 例
    //  Created by weichen on 15/1/9.
    //  Copyright (c) 2015年 weichen. All rights reserved.
    #include <stdio.h> int main() {
    // 求输入的平均数 int x = 0; //输入的数 double num = 0; //总和(这个定义为double, 因为计算结果可能出现浮点数) int count = 0; //个数 double per; //平均数(结果也定义double) printf("请输入一些数:"); scanf("%d", &x); //大于0时执行累计;输入小于等于0的值 回车确定 来终止循环,并执行后面的代码 while(x > 0) { num += x; count++; scanf("%d", &x); } if(count > 0) { per = num / count; printf("%f ", per); } return 0; }
    //  main.c 例
    //  Created by weichen on 15/1/14.
    //  Copyright (c) 2015年 weichen. All rights reserved.
    #include <stdio.h> int main() { //输入一个数,并输出平均值和大于平均值的数 //要点:需要存放输入的这些数 int x = 0; int n = 0; double total = 0; double per = 0; int number[100]; //1. 定义数组 printf("请输入一些数:"); scanf("%d", &x); while(x != 0) { number[n] = x; //2. 数组元素赋值 total += x; n++; } if(n > 0) { per = total/n; printf("平均数为:%f ", per); printf("大于平均数的数为:"); for(int i = 0; i <= n; i++) { if(number[n] > per) //3. 使用数组元素 { printf("%d ", number[i]); //4. 遍历数组 } } } return 0; }

    注:Xcode里编译后输入数字回车,number[n]=x 行报错 Thread1:EXC_BAD_ACCESS(code=2,address=0x7fff5fc00000),有人知道原因吗?
    // main.c 例
    // Created by weichen on 15/1/19
    // Copyright (c) 2015年 weichen. All rights reserved.
    #include <stdio.h> int main() {
    //输入0-9范围内的数字,求输入每个输入的数字的次数
    const int number = 9;//1. 数组大小 int x; int count[number]; //2. 定义数组 int i; for(i=0; i<=number; i++) { count[i] = 0; //3. 初始化数组 } printf("请输入:"); scanf("%d", &x); while(x != -1) { if(x>=0 && x<=9) { count[x]++; //4. 数组参与运算 } scanf("%d", &x); } for(i=0; i <= number; i++) { printf("%d:%d ", i, count[i]); } return 0; }
    //  main.c 一维数组
    //  Created by weichen on 15/1/28.
    //  Copyright (c) 2015年 weichen. All rights reserved.
    #include <stdio.h> int main() { /* 一. 数组的集成初始化    int a[] = {1, 2, 6, 7, 9};    for ( int i = 0; i < 5; i++)    {    printf("%d ", a[i]);    }   */
    /* 1. 声明一个长度12的数组,第一个元素赋值为1,其余为0    int a[12] = {1};    for ( int i = 0; i < 12; i++)    {    printf("%d ", a[i]);    } */ /* 2. 不使用循环,初始化数组   int a[12] = {0}; */
    /* 二. 集成初始化时的定位    int a[12] = {[1]=2, 3, [4]=9};    用[x]在初始化数据时给出定位    没有定位的数据跟在前一个后面    其它位置的值补0    也可以不给出数组的大小,让编译器运算    适合初始化稀疏的数组    {    for(int i = 0; i < 12; i++) {    printf("%d ", a[i]); //0 2 3 0 9 0 ....    }
         }
    */
       /* 三. 数组赋值 */ int a[] = {1, 3}; int length = sizeof(a)/sizeof(a[0]); int b[length]; //1. 数组变量本身不能被赋值,如:int b[] = a;错误 //2. 要把一个数组的值交给另一个数组,必须使用遍历,如下: for(int i = 0; i < length; i++) { b[i] = a[i]; }
    {
    for(int i = 0; i < length; i++) { printf("%d ", a[i]); //0 2 3 0 9 0 .... } }
    //遍历数组作用: //3. 赋值、初始化、判断值是否存在,计数 //4. 离开循环后,i不能再作为下标访问数组元素 return 0; }
    /**
     * 思考题:查找某值是否存在数组中
     * @weiChen
     */
    
    #include <stdio.h>
    
    int main()
    {
        int a[] = {1, 3, 4, 8, 0, 34};
        
        int key;
        
        int length = sizeof(a)/sizeof(a[0]);
        
        printf("请输入一个数:");
        
        scanf("%d", &key);
        
        int location = search(key, a, length);
        
        if(location != -1)
        {
            printf("key:%d存在于数组a[]中。
    ", key);
        }
        else
        {
            printf("数组a[]中不存在key:%d。
    ", key);
        }
        
        return 0;
    }
    
    /**
     * 函数:找出key在数组中的位置
     * @param key 位置
     * @param a 数组
     * @param length 数组长度
     * @return 存在则返回数组的位置,否则返回-1
     * 
     * int search(int key, int a[]; int length);
     */
    
    int search(int key, int a[], int length)
    {
        for(int i = 0; i < length; i++)
        {
            if(a[i] == key)
            {
                return i;
                break;
            }
        }
        
        return -1;
    }
    //  main.c 多维数组
    //  Created by weichen on 15/1/30.
    //  Copyright (c) 2015年 weichen. All rights reserved.
    #include <stdio.h> int main(int argc, const char * argv[]) { //二维数组,三行五列矩阵 int a[3][5]; for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { a[i][j] = i * j; } } //二维数组的初始化 int b[][5] = { {1, 2, 3, 4, 5}, {3, 4, 5, 6, 8}, }; //1.列数是必须给出的,行数可以由编译器来数。 //2.每一行一个{},逗号分隔 //3.最后的逗号可以存在,有古老的传统 //4.如果省略,表示补零 //5.也可以用定位(C99 ONLY) //int c[][3] = {{0}, {1}, {2}}; //三行三列,每列自动补零 //printf("%d", c[1][2]); int d[][3] = {1, 2, 4, 5, 6, 7, 8, 9, 3,};//初始化为3列,自动分为三行 int i, j, k = 2; for(i = 0; i < 3; i++) { printf("%d", d[k][i]);//循环输出d[2][i] }    return 0; }
    int a[3][4];
    
    =>示意图
    
    a[0][0], a[0][1], a[0][2], a[0][3]
    a[1][0], a[1][1], a[1][2], a[1][3]
    a[2][0], a[2][1], a[2][2], a[2][3]

    17.2.23 备注 (数组值的输出):

    由于数组是特殊的指针,即常量指针类型,那么 char arr[10] 可以 (char*)arr 取值;参考php内核中 ZVAL_STRING(z,s,duplicate) 的例子。

    Link: http://www.cnblogs.com/farwish/p/4212336.html

  • 相关阅读:
    c# 动态调用.net编写的webservices接口
    Oracle序列(Sequence)创建、使用、修改、删除
    PLSQL Developer导入Excel数据
    asp.net MVC 过滤器使用案例:统一处理异常顺道精简代码
    PowerDesigner将PDM导出生成WORD文档
    JS魔法堂:再识instanceof
    Design Pattern: Not Just Mixin Pattern
    Design Pattern: Observer Pattern
    Architecture Pattern: Publish-subscribe Pattern
    ES6 Features系列:Template Strings & Tagged Template Strings
  • 原文地址:https://www.cnblogs.com/farwish/p/4212336.html
Copyright © 2020-2023  润新知