Linux下C语言学习(二)——流程控制语句和数组的学习

来源:互联网 发布:淘宝的伞黑胶都在外面 编辑:程序博客网 时间:2024/05/10 07:26

流程控制语句:

1、条件分支  

  if(条件){语句1;}

  else if(条件) {语句2;}

  ...

  else  {语句n;}

例子:

#include <stdio.h>

int main()

{

    int money= 0;

    printf("请输入要存取的金额:\n");

    scanf("%d",&money);

 

    if(money< 10000)

    {

        printf("先生,请耐心排队\n");

    }

    //else后面没有条件

    else

    {

        printf("先生,这边请\n");

    }

    return 0;

}

 

2、多分支结构

  switch(变量/表达式) //变量/变达式结果类型只能是整型或者char型

   {

     case 常量/字面量:语句1;[break;]

     ....

     [default:语句n;]//位置无关

  }  

main(){   int fs;   scanf("%d",&fs);   switch(fs)   {     case 0 :printf("e");break;     case 1 :printf("e");break;     default:printf("cuo");/   }  }

 

注意:

   分支之间的顺序不是固定的,但是不能有重复的分支....

switch语句是穿透的, 也就是说当程序判断某个case的条件为真后,它将在执行该case所带的的语句块之后不再对后面的case的条件进行判断而直接执行

 

  

3、循环

  while(条件) {循环体;}

   

   do{循环体;}while(条件); 一般用于至少执行一次的情况

 

  for(语句1;语句2;语句3) {循环体;

例子:

int main()

{

Int a[]=newint[10];
for (int i=0,i<10;i++) //C99 允许  C89不允许

a[i]= 0;

}

数组:

数组的定义

    数据类型 数组名[数组的长度];

例如:

   int nums[10]; 表示定义了一个可以保存10个int类型数据的名为nums的数组

数组名代表整个数组的首地址

 

变长数组(C99支持)

例子:

   int num = 0;

   printf("请输入数组的长度:\n");

   scanf("%d",&num);

   //使用变量定义数组

   int arr[num];

 

数组的初始化

(1)全部初始化

  int nums[5] = {11,22,33,44,55};

(2)部分初始化

  int nums[5] = {11}; 剩余的元素默认初始化为0

  int nums[5] = {0}; 一般用于将数组中所有的元素初始化为0

  int nums[5] = {};  将数组中所有元素初始化为0,不推荐使用

(3)指定初始化

  int nums[5] = {[2] = 33};  将数组中第三个元素初始化为33

 

(4)数组的遍历

  for(i = 0; i < n; i++)

   {

      printf("%d",nums[i]);

   }

必须通过下标进行一个个遍历

 

 

数组的下标越界访问问题

       由于定义的数组有自己的大小,

如int  num[5], num 这个数组管理的范围最大值就是 sizeof(int)*5  ,当使用下标进行访问是时候,若下标的范围超过管理范围则就会产生越界问题,有时候会产生段错误,因为越界访问的内存有别的数据,访问权限不归你,所以产生段错误

 

二维数组——实际上是一维数组,分成等比例几分,内存连续

二维数组的定义

    数据类型 数组名[行数][列数]

    例子:

       int arr[3][4];  表示定义了一个3行4列的二维数组

注意:

    二维数组在内存中是按照行主序进行排列的

   

二维数组的初始化

全部初始化

   int arr[2][3]; 看做具有两个元素的数组,而每一个元素又是一个具有三个元素的一维数组

   int arr[2][3] = {{11,22,33} ,{44,55,66}};  

部分初始化

   int arr[2][3] = {{11,22},{33}};  剩余元素默认初始化为0

  表格方式显示:

      11 22 0

      33  0 0

      

  int arr[2][3] = {{0}}; 表示将二维数组中所有元素初始化为0

  int arr[2][3] = {0}; 也可以初始化为0

指定初始化

   int arr[2][3] = {[0][2]=33}; 将第一行中第三个元素初始化为33


0 0
原创粉丝点击