c语言------数组(7)

            数组是指一组数据的集合 ,其中的每个数据被称作元素,在数组中可以存放任意类型的元素.数组是一种将一组数据存储在单个变量名下的优雅方式。

            接下来,我会从4个方面逐一讲解数组

(1)一维数组       (2)二维数组         (3)字符数组         (4)一些数组的展示

    为了方便大家理解,就把其想象成一个小孩,一维数组是一个小孩,他可以有帅气的外表,极高的学习天赋等等,int   a[2] (小孩)=   {1(帅气的外表),2(极高的学习天赋)};这个时候,就有人要问了,二维数组,咋理解了? 这也好办。 int a [3](小孩的个数) [2](小孩)  =   {{1,2,} ,{4,7},{6,5}} ;    注  小孩的属性不一样,很合理吧!  字符数组就想象成一个特殊的小孩。那我们开始喽!              

        *变量的定义:类型名 变量名;

        *数组的定义:类型名 数组名[数组元素个数] = {初值1,初值2,。。。};

1一维数组

(1)初始化

            给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋值的方法
            数组初始化赋值是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行
的。这样将减少运行时间,提高效率。
            初始化赋值的一般形式如下:
            类型说明符数组名[常量表达式]=(值,值……值);
其中,在()中的各数据值即为各元素的初值,各值之间用逗号间隔。
            例如:

         

​
   int a[10]={0,1,2,3,4,5,6,7,8,9};

​


            相当于a[0]=0;a[1]=1···a[9]=9。


           C语言对数组的初始化赋值还有以下几点规定:
          (1)可以只给部分元素赋初值。当()中值的个数少于元素个数时,只给前面部分元素平 赋值。
          例如:  

        

​
  int a[10]={0,1,2,3,4};

​


         表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值


         (2)只能给元素逐个赋值,不能给数组整体赋值。
          例如给十个元素全部赋1值,只能写为
         

​
 int a[10]={1,1,1,1,1,1,1,1,1,1};

​


          而不能写为
          int a[10]=1;


          (3)如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。

           例如:

         

​
  int a[5]={1,2,3,4,5};

​

          可以写成:

          

​
 int a[ ]={1,2,3,4,5};

​

(2)注意点

         (1)int c_score[5] = { 90,80,85,95,70 };//全部赋初值
         (2) int ps_score[5] = { 90,80 };//部分赋初值,未赋值的元素默认为0
         (3)int mysql_score[ ] = { 90,80,85,95 };//省略长度赋初值;    
         (4)int arr[3] = { 90,80,85,95,70 }; //错误,初值个数超过数组长度
         (5)int arr[3] = { 90,80.5,95.5 };
                  int是一个整形变量,80.5为小数,int出来后为80,不四舍五入;
         (6)int b[5]; //没有赋初值,b[0]是0吗? 不是,是随机数

2二维数组

(1)初始化

       二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。
      例如对数组a[5][3]:
     (1)按行分段赋值可写为
 

​
it a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};

​

      (2)按行连续赋值可写为

int a[5][3]={80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};


   (2)  二维数组初始化说明

          (1)可以只对部分元素赋初值,未赋初值的元素自动取0值。
          例如:
    

      int a[3][3]={{1},{2},{3}};


       是对每一行的第一列元素赋值,未赋值的元素取0值。赋值后各元素的值为

      1   0   0
      2   0   0
      3   0   0

   int a [3][3]={{0,1},{0,0,2},{3}};

  赋值后的元素值为
  0   1   0
  0   0   2
  3   0   0

  (2)如对全部元素赋初值,则第一维的长度可以不给出。
  例如:

int a[3][3]={1,2,3,4,5,6,7,8,9};


 可以写为
 

int a[3]={1,2,3,4,5,6,7,8.9};

 (3)数组是一种构造类型的数据。二维数组可以看作是由一维数组的嵌套而构成的,一维数组的每个元素都又是一个数组,就组成了二维数组。前提是各元素类型必须相同。据这样的分析,一个二维数组也可以分解为多个一维数组。C语言允许这种分解。

  例如二维数组a[3][4],可分解为三个一维数组,其数组名分别为
    a[0]
    a[1]
    a[2]
对这三个一维数组不需另作说明即可使用。这三个一维数组都有4个元素,例如:一组a[0]的元素为a[0][0]、a[0][1]、a[0][2]、a[0][3]。

必领强调的是,a[0],a[1],a[2]不能当作下标变量使用,它们是数组名,不是一个单下标变量。

3字符数组

   (1)初始化

       字符数组也允许在定义时作初始化赋值。
       例如:
      

 char c[10]={‘c’,‘ ’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’};


    赋值后各元素的值为
   c[0]=‘c’; c[1]=’ ’; c[2]=‘p’; c[3]=‘r’; c[4]=‘o’;
   c[5]=‘g’; c[6]=‘r’; c[7]='a’; c[8]='m’;
   其中,c[9]未赋值,由系统自动赋予0值,对全体元素赋初值时也可以省去长度说明,
   例如:
 

​
 char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’};

​


   这时C数组的长度自动定为9。

注 :

     /0  为字符串的结束标志

(2)相关知识点(拓展)

       6104c1128d0f48328bef95953188e85e.png

 %d、%f、%c和%s:

在printf函数中,%d、%f、%c和%s等是用来指定输出格式的转换字符。它们分别表示输出整数、浮点数、字符和字符串

 转义字符:

在C语言中,可以使用转义字符来输出一些特殊字符。例如,\n表示换行符,\t表示制表符。

4一些数组的展示

 程序代码:


      #include"stdio. h"
      int main( )

      {       char string[81];
               int i,num=0,word=0;
               char c;
               gets(string);
               for(i=0;(c=string[i])!=\0;i++)
               if(c== ‘ ’) word=0;
               else if(word==0){
               word=1;
               num++;

                }
               printf("There are %d words in the line\n",num);
               return 0;

   } 

  程序执行结果:

       I an a student!

       There are 4 words in the line 

  程序说明:

       本程序中若当前字符是空格,那么未出现新单词,使word=0,num不累加,若当前字符 不是空格,分两种情况:

(1)如果前一字符为空格,即word==0,新单词出现,word=1,num加1

(2)如果前一字符为非空格,即word==1,未出现新单词,num不变。

     

       希望对大家有帮助哦!拜拜!500232eb18d34862ab49cdd9cf2cfb8e.gif

  • 24
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值