码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员——程序结构

时间:2015-05-22 00:00:07      阅读:388      评论:0      收藏:0      [点我收藏+]

标签:

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、程序的结构分类

1.顺序结构     “直流型”

     技术分享

2.分支结构     “岔路型”

技术分享

3.循环结构      

技术分享

二、顺序结构

顺序结构是3种结构中最简单的,也是默认的流程结构:程序中的语句是按照书写顺序执行的。

三、分支结构

  1.if语句

   C语言的if语句有三种基本形式。

   1)第一种形式: if(表达式) {语句};

      原理:如果表达式的值为真,则执行其后的语句,否则不执行该语句。例如:

int a = 7;
int b=3

if ( a>b)
{
    printf("a>b\n");
    
} 
return 0;

  2)第二种形式为:if(表达式) {语句1;}else{ 语句2;}
        原理:如果表达式的值为真,则执行语句1,否则执行语句2 。例如:

#include <stdio.h>
int main(void){
    int a, b;
    printf("输入两个数:");
    scanf("%d%d",&a,&b);
    if(a>b)
        printf("max=%d\n",a);
    else
        printf("max=%d\n",b);
    return 0;
} 

  3)第三种形式为:         if(表达式1)
                                语句1;
                           else  if(表达式2) 
                                 语句2;
                           else  if(表达式3) 
                                 语句3;
                                  … 
                           else  if(表达式m) 
                                语句m;
                           else
                                语句n;
  
    原理:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。例如:

int a = 10;
if ( a==0 ) {
    printf("a等于0");
} else if( a>0 ) {
    printf("a大于0");
} else {
    printf("a小于0");
}

       4)if语句的嵌套

          例如:

#include <stdio.h>
int main(void){
    int a,b;
    printf("please input A,B:    ");
    scanf("%d%d",&a,&b);
    if(a!=b)
    if(a>b)  printf("A>B\n");
    else     printf("A<B\n");
    else     printf("A=B\n");
    return 0;
}

  C语言规定,else 总是与它前面最近的if配对。

2.switch语句

  形式:

       switch(表达式){ 
    case 常量表达式1:  语句1;
    case 常量表达式2:  语句2;
    … 
    case 常量表达式n:  语句n;
    default:  语句n+1;
    }

    原理:先计算表达式的值,再逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。

  

#include <stdio.h>
int main(void){
    int a;
    printf("input integer number: ");
    scanf("%d",&a);
    switch (a){
        case 1:printf("Monday\n");
        case 2:printf("Tuesday\n");
        case 3:printf("Wednesday\n");
        case 4:printf("Thursday\n");
        case 5:printf("Friday\n");
        case 6:printf("Saturday\n");
        case 7:printf("Sunday\n");
        default:printf("error\n");
    }
    return 0;
}

  上述程序,表达的是用户输入一个数,根据用户输入的数输出相应数对应的以及其后的所有语句。

      注意:但我们只需要输出一个语句时,我们可以在每个case语句后加”break;“,其作用是结束操作并跳出switch语句。

     使用switch语句注意事项:

     1)switch(表达式)以及case(常量表达式)中的表达式必须是整型或者可以转变为整型的值。

    •  整型变量   int num=9;switch(num)
    •  整型常量   switch(5)
    •  返回值是整型的表达式   switch(5+3)
    •  可以转换为int类型的表达式  switch(‘a’+‘a’)

     2)case语句和default语句可以在switch内任意排序。

     3)在case后的各常量表达式的值不能相同。

     4)case语句中需要定义变量必须加大括号

四、循环结构

    循环语句的条件:循环条件、循环体、循环结束语句。

   1.while

     形式:

            while ( 条件 )
           {
             语句1;
             语句2;
             ....
             }

   原理:判断条件,当条件为真(非0)时,执行循环体语句,然后再次判断条件,重复上述过程,直到条件不成立就结束while循环。

       

 1 #include <stdio.h>
 2 int main(void){
 3     int i,sum=0;
 4     i=1;
 5     while(i<=100){
 6         sum=sum+i;
 7         i++;
 8     }
 9     printf("%d\n",sum);
10     return 0;
11 }

    上述程序表示1+2+...+100的值。

   使用while语句注意事项:

        1)条件为非0值,程序将一直循环下去,变为死循环。

        2)当条件为一个变量与一个常量进行==或!=的时候,通常把常量写在前面

             int num=3;

             while(3==num)

        3)如果while后只有一个语句可以省略大括号。

2.do-while

         形式:

              do {

             语句1;
             语句2;
             ...
           } while (条件);
 1 #include <stdio.h>
 2 int main(void){
 3     int i,sum=0;
 4     i=1;
 5     do{
 6         sum=sum+i;
 7         i++;
 8     }
 9     while(i<=100);
10     printf("%d\n",sum);
11     return 0;
12 }

特点:不管while中的条件是否成立,循环体中的语句至少会被执行一遍。

3.for

形式: 

    for(表达式1;控制条件; 表达式2)  循环体
原理:

1)先求解表达式1。

2)判断控制条件,若其值为真(非0),则执行for语句中指定的内嵌语句(循环体),然后执行下面第3步;若其值为假(0),则结束循环,转到第5步。

3)求解表达式2。

4)转回上面第2步继续执行。

5)循环结束,执行for语句下面的一个语句。                                                                                                                        

   其他形式:1)定义变量可在括号外

int i=1;
for( ; i<=100 ;  i++){
    sum=sum+i;
   
} 

      2)表达式2省略

for( i=1; i<=100 ; ){
    sum=sum+i;
    i++;
} 

        3)都可省略

int i=0;
for( ;  ; ){
   if(i<=100)
    sum=sum+i;
    i++;
}else{
break;
}

      for循环的嵌套

 1 #include <stdio.h>
 2 int main(void){
 3     int i, j, k;
 4     printf("i j k\n");
 5     for (i=0; i<2; i++){
 6         for(j=0; j<2; j++){
 7             for(k=0; k<2; k++){
 8                 printf("%d %d %d\n", i, j, k);
 9        }
10         }
11           }
12              return 0;
13    }

 

五、break和continue的使用

   1.break

    break语句用于do-while、for、while循环语句中,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起,即满足条件时便跳出循环。break只会影响它所在的那个循环。

 1 #include <stdio.h>
 2 int main(){
 3 for (int x = 0; x<2; x++) {
 4     for (int y = 0; y<2; y++) {
 5         printf("x=%d, y=%d \n", x, y);
 6     }
 7 
 8     break;
 9 }return 0;
10 }

  2.continue

   continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。跟break一样,continue只会影响它所在的那个循环。

 1 #include <stdio.h>
 2 int main(){
 3 for (int x = 0; x<50; x++) {
 4     if (x%2==0) {
 5         continue;
 6     }
 7 
 8     printf("x=%d \n", x);
 9 }
10 return 0;
11 }

上述程序表示的是0-50之间能被2整除的数。

 

                 

 

黑马程序员——程序结构

标签:

原文地址:http://www.cnblogs.com/YjAdair/p/4520907.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!