C语言的几个基本结构

一 布尔类型

(1) C89,没有布尔类型,C99有布尔类型. C工程支持C89,OC支持C99
(2)  两种数值
      bool true (真)  不是0就为真  flase(假)  为0 就是假 c语言
      BOOL YES(真)  = 1            NO(假)  = 0 oc 语言
      BOOL的值 的转化符为 %d

(3) 作用于分支结构和循环结构的判断

(4) 关系运算符

一共六个 大于: >, 小于: <, 大于等于: >=,小于等于: <=,等于: ==,不等于: !=

关系运算的结果有两种真假 用BOOL类型的变量来接受结果
  a   关系表达式: 由 常量 ,变量和运算符组成的
      举例  BOOL a1 = 50 > 30 结果为真 YES
        printf 输出 a1 = 1
      BOOL a2 = 50 < 30  结果为假 NO
      printf 输出 a2 = 0;
  b求两个数的最大值的运算:

    int a = 3 int b = 4   a > b ? a : b  输出最大值

  c求两个数的最小值的运算:

   int a = 4 int b = 5   a < b ? a : b  输出最小值

(5)逻辑运算符

     1 逻辑与 逻辑或 逻辑非
     2 逻辑运算的结果有两种,真 假,用BOOL类型变量来接收
     3 逻辑表达式: 常量,变量和逻辑运算符组成的

逻辑与 &&
     1 逻辑与的表达式:  表达式1 && 表达式2
     2 运算规则:
           (1) 先执行表达式1,在执行表达式2
           (2) 表达式1和表达式2结果同时为真,才为真,一假即假
           (3) 短路现象: 表达式1的结果为假,就不在执行表达式2.

逻辑或 ||
     1  逻辑或表达式: || 表达式1 || 表达式2
     2  运算规则
          (1)  先执行表达式1,在执行表达式2.
          (2)  表达式1和表达式2的结果同时为假,才为假,一真即真.
     3  短路现象


 逻辑非 !
     1  逻辑非: 取反运算
     2  运算规则: 对真假取反

    
二 if语句
   if(YES){
      printf("执行语句:");
        }

        if :如果
        condition: 条件表达式,通常是关系表达式和逻辑表达式,判断真假
        statement: 执行的语

        如果 括号()里的条件表达式为真,就运算花括号里的语句,如果为假,就跳过花括号里的语句,执行下面语句.

举例: 控制台输入一个字符,如果输入的是m,则输出男性,否则输出女性

      char a = 0;
      printf("请输入一个字符:");
      scanf("%c",&a);

      判断语句
      if(a == 'm'){
        printf("输出为男性"); 如果条件成立执行语句1
       }else {

             printf("女性")} 如果条件不成立执行语句2
  if语句还有if{}else if{}else if{}else if{}.....形式

三 swich...case...语句

多分支语句
     作用: 提供多个分支,功能类似于if--else联式(多个if--else),代码可读性更好.
      语法:
         1 switch 后面是整型或者字符型的表达式
         2 case 后面是整型或者字符型常量
         3 break 用于结果当前case
     运行逻辑
         1 如果表达式和某个case常量相等,执行这个case后面的语句.
         2 如果没有和表达式相等的case,那么执行default后面的语句

举例:  如果从控制台 输入一个字符,如果 输入的是m ,则输出男性, 输入的是f,则输出女性,否则输出春哥
    
    char gender = 0;
    printf("请输入一个字符:");
    scanf("%c",&gender);
              
    switch (gender) {
        case 'm':
            printf("男的");
            break;
            
        case 'f':
            printf("女的");
            break;
            
        default:
            printf("春哥");
            break;
    }

 注意事项:

      1. default可以省略    2. break不要写在执行语句之间,否则break后的执行语句不被执行
四 while语句
    while (<#condition#>) {
        <#statements#>
    }
     当....的时候
     condition: 条件表达式,有两个值: 真 假
     {} 花括号里面是循环体(循环语句)
     当条件表达式为真,那么执行循环体中的语句,否则跳过循环体.
  举例:  int count = 0;

    printf("做一个俯卧撑");
    while (YES) {
       printf("做一个俯卧撑"); // 循环语句

             count++;
    }
    当条件表达式一直为真的时候,就会形成死循序.
  正确的表达方式:

如:   使用while循环打印1~10 之间的数
    int count = 1;
    while (count <= 10) {
       printf("%d\n",count); // 循环语句
        count++; // 循环量
     }
while语句中也可嵌套if等语句

举例:用while循环打印1~100之间不是7的倍数,并且不包含7的数
        int count = 1;   
      while (count <= 100) {
        BOOL r1 = count % 7 != 0;
        BOOL r2 = count % 10 != 7;
        BOOL r3 = count / 10 != 7;
        if (r1 && r2 && r3) {
            printf("%d\n",count);
        }
       count++;

       }

五 随机数

int num = arc4random()
   随机数: arc4random() 取随机数时必须有变量接收随机数
   取值范围: [20,40] arc4random() % (40 -20 +1) + 20
六 beake 和 continue

(1) break 结束整个循环 break后不再执行

举例: 1 ~ 50 之间的数,当输入45之后,停止输出
       int count = 1;   
   while (count <= 50) {
        if (count == 45) {
            break;
        }
        printf("%d ",count);
        count++;
    }   
    printf("我在while循环后"); 输出到45后就不在输出数字

(2) continue 结束本次循环,continue后不再执行,回到条件判断处

举例:  输出 1 ~ 50 之间的数,当遇到10的倍数时,不输出
        (提示: 排除10的倍数用n % 10 == 0)
       int count = 1;   
   while (count <= 50) {       
        count++; // 循环增量
        if (count % 10 == 10) {
            continue; // 结束本次循环,下面的代码不执行,回到条件判断处.

        }       
        printf("%d",count);
    }   输出的结果没有10以及10的倍数,即当遇到10或10的倍数时由于continue的原因本次循环结束,进入下次循环
七 for循环

a.  1~4 代表的是执行顺序
  for (<#initialization#>1; <#condition#>2; increment4) {
        <#statements#>3
    }
for: 自带装备
     initiaization: 初始化,在一个循环内只初始化一次.
     condition: 循环条件
     increment: 循环增量
     statements: 循环体(语句)

举例 用for打印出 1 ~ 100之间不是7的倍数,并且不包含7的数
    for (int i = 1; i < 100; i++) 

        进行判断
        if (i % 7 !=0 && i / 10 != 7 && i % 10 != 7) {
            printf("%d ",i);
        }
    }

b. 循环嵌套

练习 1 打印出乘法口诀表
    for (int i = 1; i <= 9; i++) {
       for (int j = 1; j <= i; j++) {
            printf("%d × %d = %-2d ",j,i,i * j);
        }
        printf("\n");
    }
2  循环打印十进制所有的可能的三位数
    (提示: 从100 ~999所有数
    分析: 百位 十位 个位
    控制百位
    for (int i = 1; i <=9; i++) {
       //控制十位
        for (int j = 0; j <= 9; j++) {
            //控制个位
           for (int k = 0; k <= 9; k++) {
                printf("%d\n",i*100 + j*10 + k);
            }
        }
    }
c for循环 和 while循环的区别
  
     while循环可以用不知道循环次数的循环,除此外,与for循环的格式不用,其他都一样
举例    循环打印输入的字符,如果输入的字符为0,不打印.
        char a = 0;   
        while (a != '0') {
        printf("请输入一个字符:");
        scanf("%c",&a);
        getchar();
        printf("打印%c\n",a);
    }
    printf("打印结束");


 

posted @ 2015-09-25 15:40  hahasunshine  阅读(731)  评论(0编辑  收藏  举报