day3

switch用法

实例:电梯程序

 1 #include <stdio.h>
 2 int main(void)
 3 {
 4 int val;
 5 printf("请输入您要进入的楼层:");
 6 scanf("%d",&val);
 7 
 8 switch(val)
 9 {
10 case 1:
11 printf("1ceng");
12 break;
13 case 2:
14 printf("2cengkai");
15 break;
16 case 3:
17 printf("3cengkai");
18 break;
19 default:
20 printf("meiyou ");
21 break;
22 }
23 return 0;
24 }

 

break和continue

break如果用于循环是用来终止循环

break如果用于switch则是用于终止switch

break不能直接用于if,除非if属于循环内部的一个子句

#include <stdio.h>
int main(void)
{
int i;

/*&    switch(1)

case 1:
printf("haha\n");
break; //break可以直接用于switch
*/
for(i = 0; i<=3; i++)
{
if(3>2)
break;//break虽然是内部的语句,但breeak终止的确实外部的for循环
printf("嘿嘿\n");//永远不会输出
}
return 0;
}

 

break只能终止它最近的循环

 1 #include <stdio.h>
 2 int main(void)
 3 {
 4 int i,j;
 5 
 6 for(i = 0; i<3; ++i)
 7 {
 8 for(j=1;j<4;++j)
 9 break;//break只能终止塔最近的循环
10 printf("嘿嘿\n");
11 }
12 return 0;
13 }

 

在多层switch嵌套中,break只能终止它最近的switch

例子:

 1 int x=1,y=0,a=0,b=0;
 2 switch (x)//第一个switch
 3 {
 4 case 1:
 5 switch (y)//第二个switch
 6 {
 7 case 0:
 8 a++;
 9 break;//终止的是第二个switch
10 case 1:
11 b++;
12 break;
13 }
14 b=100;
15 break;//终止的是第一个switch
16 }
17 printf("%d %d",a,b);

 

最终输出结果: 1 ,100

 continue

  用于跳过本粗循环余下语句,转去判断是否需要执行下次循环

 1   for123
 3   {
 4 
 5   A;
 6 
 7   B;
 8 
 9   continue; //如果执行该语句,则执行完该语句后,会执行表达式,c和d都会被跳过去

10
11   C;
12 
13   D;
14 
15   }

 

 

1 while(表达式)
2 {
3 A;
4 B
5 continue;//如果执行该语句,则执行完该语句后,会执行表达式,c和d都会被跳过去
6 C;
7 D;
8 }

 

实例:

 1 #include <stdio.h>
 2 int main(void)
 3 {
 4     int i;
 5     char ch;
 6     int j;
 7     scanf("%d",&i);
 8     printf("i=%d\n",i);
 9     while ((ch=getchar()) !='\n')
10         continue;
11     scanf("%d",&j);
12     printf("j= %d\n",j);
13     return 0;
14 }

 

数组

  为什么需要数组

  •     为了解决大量同类型数据的储存和使用问题
  •     为了模拟现实世界

  数组的分类

  一维数组:为n个变量连续分配存储空间

       所有的变量数据类型必须相同

       所有变量所占的字节大小必须相等

    例子:  int a[5]

        一维数组中不代表数组中所有的元素,因为一维数组名代表数组的第一个元素的地址

    有关一维数组的操作:

  •       初始化:完全初始化  

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

          不完全初始化,未被初始化的元素自动为零

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

          不初始化,所有元素为垃圾值

            int a[5];

          清零

            int a[5]={0}

          错误写法: 

            int a[5];

            a[5]={1,2,3,4,5};   //错误

         只有在定义数组的同时才能整体赋值,其他情况下整体赋值是错误的

 

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

a[5]=100; //error 因为没有a[5]这个元素,最大只有a[4]

 

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

int b[5];

如果要把a数组中的值全部赋值给b数组

错误的写法:   b=a; //error

正确的写法 :  for (i=0; i<5;i++)

         b[i]=a[i];

 1 #include <stdio.h>
 2 int main(void)
 3 {
 4     int a[5]={1,2,3,4,5}; //a是数组的名字,5表示数组元素的个数,并且这5个元素分别用a[0] a[1] a[2] a[3] a[4]
 5     int i;
 6     for (i=0;i<5;i++)
 7         printf("%d\n",a[i]);
 8 
 9     return 0;
10 }

 

 

 1 //将数组内的数字倒序
 2 #include <stdio.h>
 3 int main(void)
 4 {
 5     int a[7]={1,2,3,4,5,6,7};
 6     int i;
 7     int j;
 8     int t;
 9 
10     i=0;
11     j=6;
12     while(i<j)
13     {
14         t=a[i];
15         a[i]=a[j];
16         a[j]=t;
17         i++;
18         j--;
19 
20     }
21     for (i=0;i<7;i++)
22         printf("%d\n",a[i]);
23     return 0;
24 }

 

  二维数组

int a[3][4];

总共是12个元素,可以当做3行4列看待,这12个元素的名字依次是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] 

    a[i][j]表示第i+1行j+1列的元素

    int a[m][n];  该二维数组右下角的位置只能是a[m-1][n-1]

初始化

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

int a[3][4]={

    {1,2,3,4},

    {5,6,7,8},

    {9,10,11,12}

};

输出二维数组

 1 #include <stdio.h>
 2 int main(void)
 3 {
 4     int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
 5     int i,j;
 6     for (i=0;i<3;i++)
 7     {
 8         for(j=0;j<4;j++)
 9             printf("%-5d",a[i][j]);//-5d,占5个字节对齐
10         printf("\n");
11     }
12 
13     return 0;
14 }

 

  多维数组

    不存在多维数组,因为内存是线性一维的,n维数组可以当做每个元素是n-1维数组的一维数组

  比如: int a[3][4]   该数组是含有3个元素的一维数组 ,只不过每个元素都可以在分成4个小元素

     int a[3][4][5]  该数组是含有三个元素的一维数组,只不过每个元素都是4行5列的二维数组

 

posted @ 2015-07-06 17:48  花花妹子。  阅读(211)  评论(0编辑  收藏  举报