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

黑马程序员----流程控制(顺序结构、选择结构、循环结构)

时间:2015-02-02 00:37:24      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

一、顺序结构

  • 默认的流程结构,按照书写的顺序执行;

二、选择结构

  • 概念:对给定的条件进行判断,根据判断结果来决定执行那一段代码;

1. if语句

  • if语句的基本使用

/*
 1.if的第一种结构
 if(条件)
 {
    语句1;
    语句2;
    ......
 }
 
 2.if的第2种结构
 if(条件1)
 {
    语句1;
    语句2;
    ......
 }
 else
 {
    语句3;
    语句4;
    .......
 }
 
 3.if的第3种结构(按顺序判断条件,遇到某个条件成立就执行其代码(也说明该条件前的所有条件都不成立),执行完不再对条件进行判断)
 
 if(条件1)
 {
    语句1;
    语句2;
    .......
 }
 else if(条件2)
 {
    语句3;
    语句4;
    .......
 }
 else if(条件3)
 {
    语句5;
    语句6;
    .......
 }
 else
 {  // 前面条件都不成立就来到这里
    语句7;
    语句8;
    .......
 }
 
 
 4.if的第4种结构
 if(条件)
    语句1; // 条件成立就执行语句1
    语句2; // 语句2与if语句没有关系,必然执行
    .......
 
*/

#include <stdio.h>

int main()
{
    /*
     // 练习1
     int count = 40;
    
    if (count > 50)
    {
        printf("开班!!!\n");
        printf("准备机器!!!\n");
    }
    else
    {
        printf("不开班!!!\n");
        printf("不准备机器!!!\n");
    }*/
    
    
    /*
    // 练习2
    
    int a = 5;
    
    if (a==10)
    {
        printf("a=10\n");
    }
    
    else if(a==5)
    {
        printf("a=5\n");
    }
    
    else if(a==3)
    {
        printf("a==3\n");
    }
    
    else
    {
        printf("a=其他值\n");
    }*/
    
    
    /*
    //练习3
    int a = 10;
    
    if (a++ > 10) // 先将a=10 与 10 比较判断(假),再加1 即 a=11
    {
        printf("A\n");
    }
    
    else if(a++ > 5) // 此时a=11,先将a=11 与 5 比较判断(真,下面的条件就不再进行运行、判断,) 再让a加1  即a=12
    {
        printf("B\n");
    }
    
    else if(a++ > 3) // 由于条件2成立了,一下代码不再进行运行、判断,a不会再进行加1操作
    {
        printf("C\n");
    }
    
    else
    {
        printf("D\n");
    }
    
    printf("a的值是%d\n", a); // 运行结果为:B   a的值是12
    */    
    
     // 练习4
    int a = 10;
    
    if(a > 11) // 条件没有成立,不会执行哈哈哈哈,但还是会执行嘿嘿嘿嘿
        printf("哈哈哈哈\n");
    printf("嘿嘿嘿黑\n"); // 此语句与if语句没有关系,必然会执行
                         // 运行结果为: 嘿嘿嘿嘿    
    
    return 0;
}
  • if语句的陷阱

陷阱一:比较大小时,常量放在左边,变量放在右边

int a = 10431;

if (a == 0) // 如果少写了一个 =  ,即:a = 0; 相当于赋值操作,而且不会报错,没有提醒!!!

{

  语句1;

}

else

{

  语句2;

}

/* 总结:

比较大小时,常量放在左边,变量放在右边

即:if (0 == a)  如果少写一个 = ,即:0 = a; 此时由于常量不能被赋值,会报错提醒!!!

*/

 

陷阱二:注意赋值运算符 = 不要写成了 ==

int a = 10;

a = 15; // 如果多写了一个 = ,即:a == 15; 此时有一个警告,并不会报错,但是并没有对a再次赋值为15,a还是等于10;

printf("%d", a);

/*

总结:注意赋值运算符 = 不要写成了 == ,后果很严重!

*/

 

陷阱三:if后面不要随便写分号

if (5 > 6); // 多写了一个分号; 导致大括号里面的代码成了一个代码块,必然会执行

{

  printf("A");

}

// 总结:if后面不要随便写分号   ; 

 

陷阱四:作用域问题

if (10 > 6);

{

  int a = 5; // 变量a的作用域为if后面的大括号内

}         // 变量a再内存中被销毁了

printf("%d", a);

// 解释:作用域问题:a只在大括号内有效,执行到printf函数时,变量a已经被回收,就会报错:(error: use of undeclared identifier ‘a‘),使用了未定义的标识符;

 

陷阱五:作用域不明确

#include <stdio.h> 

int main()
{

  if
(10 > 6)     int a = 5;
}
// 解释:从整个代码来看,变量a是属于main函数,但是对于if语句来讲,变量a的作用域只在if语句内有效,会造成变量a的作用域不明确问题; // 报错信息:error: expected expression // 总结:如果要在if语句后面的代码中定义新的变量,必须用大括号扩住

 

 

 

 

 

 

 

 
 
 
 

黑马程序员----流程控制(顺序结构、选择结构、循环结构)

标签:

原文地址:http://www.cnblogs.com/unique-ios/p/4266601.html

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