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

      

  • 相关阅读:
    zookeeper笔记整理(二)
    zookeeper笔记整理(一)
    SpringBoot源码分析(三)整合MyBatis
    四、MyBatis终结篇(补充中...)
    三、SpringMVC终结篇(补充中...)
    二、SpringAOP终结篇(补充中...)
    一、SpringIOC终结篇(补充中...)
    跳出初学MySQL知识的原理整理(一)
    SpringBoot源码分析(二)启动原理
    一文带你学会基于SpringAop实现操作日志的记录
  • 原文地址:https://www.cnblogs.com/schut/p/8544842.html
Copyright © 2011-2022 走看看