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

    一、数组之一维数组

      1、一维数组的定义 

        int array[3]; //定义了一个一维数组,名字叫array,一共有三个元素,每个元素都是int类型。
        array[0] = 10;
        array[1] = 20;
        array[2] = 30;
        array[3] = 40; //错误,,没有array[3]这个元素,切记
        printf("%d",array[0]); // 10

      2、数组在内存的存储方式
        数组在内存中就是一段连续的空间,每个元素的类型都是一样的。

      3、一维数组初始化
        int array[3] = {1,2,3,};//定义的同时为数组成员赋值
        int array[5] = {1,3,4}; //未赋值的元素自动补0。
        int array[5] = {0};//所有元素均为0。
        循环遍历赋值
        for(i=0;i<10;i++)
        {
          printf("array[%d]=%d ",i,array[i]);
        }

        for(i=0;i<10;i++)
        {
          scanf("%d",&array[i]); //循环输入来赋值

        }

      4、实例:

        1、求数组中最大元素的值  

         
    #include<stdio.h>
    int main(void)
    {
        int
    array[6] = {2,3,-1,4,1513,5}; int max=array[0]; int i; for(i=1;i<7;i++) { if (max<array[i]) { max = array[i]; } } printf("最大值:%d",max);

    return 0;
    }

        2、求数组中最小元素的值和其下标

    #include<stdio.h>
    int main(void)
    {
    
        int array[6] = {2,3,-1,4,1513,5};
        int max=array[0];
        int index = 0;
        int i;
        for(i=1;i<7;i++)
      {
            if (max>array[i])
        {
        max = array[i];
        index = i;
         }    
       }
        printf("最大值:%d,下标:%d",max,index);
            return 0;
    }       
    View Code

         3、将数组元素逆置

    #include<stdio.h>
    int main(void)
    {
      // for循环版
        int array[6] = {2,3,-1,4,1513,5};
        int temp;
        int i;
        for(i=0;i<=2;i++)
        {
            temp = array[i]; //中间变量实现两者的互换
            array[5-i] = array[i];
            array[i] = temp;
                
        }
        for(i=0;i<6;i++)
        {
            printf("array[%d] = %d
    ",i,array[i]);
        }
     
        return 0 ;
    }

        while循环版

    #include<stdio.h>
    int main(void)
    {
      //  while循环版
        int array[6] = {2,3,-1,4,1513,5};
        int temp;
        int max = 5;
        int min = 0;
        while(min<max)
        {
            temp = array[min];
            array[min] = array[max];
            array[max] = temp;
            max--;
            min++;
    
        }
        for(i=0;i<6;i++)
        {
            printf("array[%d] = %d
    ",i,array[i]);
        }
    
          return 0 ;          
    }
    View Code

        4、水仙花数:一个n位数,它的每个位上的n次幂的和,等于这个数本身。

          如:153、370

          实例:求100到999之间的所有水仙花数。     

    #include<stdio.h>
    #include<math.h>
    int main(void)
    {
        int i,g,s,b;
        int sum = 0;
        for(i=100;i<1000;i++)
        {
            g = i%10; // 个位 
            s = i/10%10; // 十位 
            b = i/100; // 百位 
            //sum = g*g*g+s*s*s+b*b*b;
            sum = pow(g,3)+pow(s,3)+pow(b,3); // pow(a,b) a为底数,b为 指数 
        
            if(sum==i)
            {
                printf("水仙花数:%d
    ",i);
            }
        
        }
        return 0;
    }

          答案在这里:

    水仙花数:153
    水仙花数:370
    水仙花数:371
    水仙花数:407
    View Code   

        5、求3到100的素数(素数是除了1和自己以外,不能被其他整数整除的整数。)

    #include<stdio.h> 
    int main(void)
    {
        int i,j;
        
        for(i=3;i<100;i++)
        {
            int flag = 0; //标志位 
            for(j=2;j<i;j++)
            {
                if(i%j==0)
                {
                    flag = 1;  // 不为素数 
                    break;  // 跳出循环 
                }
            }
            if (flag==0)
            {
                printf("%d是素数!
    ",i);
            }
        }
        return 0;
    }

        答案:

    3是素数!
    5是素数!
    7是素数!
    11是素数!
    13是素数!
    17是素数!
    19是素数!
    23是素数!
    29是素数!
    31是素数!
    37是素数!
    41是素数!
    43是素数!
    47是素数!
    53是素数!
    59是素数!
    61是素数!
    67是素数!
    71是素数!
    73是素数!
    79是素数!
    83是素数!
    89是素数!
    97是素数!
    View Code

    二、数组之二维数组

      1、二维数组的定义  

        int array[2][3];//定义了一个二维数组,有两个array[3],即2行3列,更像一个表格
        printf("%d %d ",sizeof(array),sizeof(array[0])); // 24个字节 12个字节
        array[0][0] = 0; //给第1行第1列赋值
        array[0][1] = 1; //给第1行第2列赋值
        array[1][2] = 2; //给第2行第3列赋值 

      2、二维数组的初始化 

        int b[2][3] = {{1,2,3},{5,6,7}}; //定义了一个二维数组同时初始化成员
        int b[2][3] = {0}; //定义了一个二维数组同时初始化成员都为0  

    #include<stdio.h> 
    int main(void)
    {    
        int b[2][3];
        int i,j;
        for(i=0;i<2;i++) 
        {
          for(j=0;j<3;j++)
          {
            printf("b[%d][%d]=%d
    ",i,j,b[i][j]);
          }
        }
        return 0 ;      
    }
       //输出
        /*
            b[0][0]=1
            b[0][1]=2
            b[0][2]=3
            b[1][0]=5
            b[1][1]=6
            b[1][2]=7
        */

      3、实例:

        1、分别求二维数组行、列的和   

    #include<stdio.h>
    
    int main(void)
    {
        int a[2][3] = {{1,2,3},{6,7,8}};
        int i,j;
        for(j=0;j<3;j++) 
        {
        int sum1= 0;
        for(i=0;i<2;i++)
        {
            sum1+=a[i][j];//每一列的值的和
                 
        }
        printf("%d
    ",sum1); // 7 
        }
        for(i=0;i<2;i++)
        {
            int sum2 = 0;
            for(j=0;j<3;j++)
            {
            sum2+=a[i][j];//每一行的值的和
            }
            printf("%d
    ",sum2); // 6 
        }
       return 0;
    }
    View Code

        2、冒泡排序

    #include<stdio.h> 
    int main(void)
    {
        int a[10] = {1,4,2,5,6,21,7,0,32,3};
        int i,j,temp;
        for(i=0;i<10;i++)
        {
            for(j=1;j<10-i;j++)
            {
                if(a[j-1]>a[j])
                {
                    temp = a[j-1];
                    a[j-1] = a[j];
                    a[j] = temp;
                }
            }
        }
        for(i=0;i<10;i++)
        {
            printf("a[%d]=%d
    ",i,a[i]);
        }
        return 0;
    }

      答案:

    a[0]=0
    a[1]=1
    a[2]=2
    a[3]=3
    a[4]=4
    a[5]=5
    a[6]=6
    a[7]=7
    a[8]=21
    a[9]=32
    View Code

      

  • 相关阅读:
    JS BOM对象 History对象 Location对象
    JS 字符串对象 数组对象 函数对象 函数作用域
    JS 引入方式 基本数据类型 运算符 控制语句 循环 异常
    Pycharm Html CSS JS 快捷方式创建元素
    CSS 内外边距 float positio属性
    CSS 颜色 字体 背景 文本 边框 列表 display属性
    【Android】RxJava的使用(三)转换——map、flatMap
    【Android】RxJava的使用(二)Action
    【Android】RxJava的使用(一)基本用法
    【Android】Retrofit 2.0 的使用
  • 原文地址:https://www.cnblogs.com/schut/p/8544842.html
Copyright © 2011-2022 走看看