[C语言]

跟着狄泰唐老师学C语言进阶教程的笔记之分支语句

[复制链接]
714|0
手机看帖
扫描二维码
随时随地手机跟帖
Damon_1|  楼主 | 2017-6-23 21:28 | 显示全部楼层 |阅读模式
1.if语句分析
if语句用于根据条件选择执行语句
esle不能独立存在且总是与它最接近的if相匹配
else 语句后可以接连其它if语句
if语句中零值比较注意点
A.bool型变量应该出现于条件中,不能进行比较,直接使用
B.变量和0值比较时,0值应该出现在比较符号的左边,避免将==写为=
C.float 型变量不能直接进行0值比较,需要定义精度
               
示例:
void f1(int i)
{
        if (i < 6)
        {
                printf("Failed!\n");
        }
        else if ((6 <= i) && (i <= 8))
        {
                printf("Good!\n");
        }
        else
        {
                printf("Perfect!\n");
        }
}
2.switch 语句分析
switch 语句对应当个条件多个分支的情形
case 语句分支必须要break,否则导致分支重叠
case 语句中的值只能是整型或字符型
case 语句的排列顺序
A.按照字母或数字顺序排列各条语句
B.正常情况下放在前面,异常放在后面
C.default语句只能用于处理真正的默认情况
default 语句有必要加上,以处理特殊情况
示例:
void f(int i)
{
        switch (i < 6)
        {
        case 1:
                printf("Failed!\n");
                break;
        default:
                switch ((6 <= i) && (i <= 8))
                {
                case 1:
                        printf("Good!\n");
                        break;
                default:
                        printf("Perfect!\n");
                        break;
                }
                break;
        }
}
3.小结
if 语句适用于复杂逻辑进行判断的情形中
switch语句用于对离散值进行判断的情况
if和switch语句在功能上可以相互替换的
if语句对于“按片”分支判断的情形更加简洁
switch语句对于多分支的情形更加简洁

第七课 循环语句分析
1.循环语句分析
循环语句的基本工作方式
A.通过条件表达式判定是否执行循环体
B.条件表达式遵循if语句表达式的原则
do,while,for的区别
A.do 语句先执行后判断,循环体至少执行一次
B.while 语句先判断后执行,循环体可能不执行
C.for语句先判断后执行,相比while更简洁
2.do...while循环方式

3.while循环方式


4.for循环方式

5.示例:计算1加到100的值
#include<stdio.h>
int f1(int n)
{
        int ret = 0;
        if (n > 0)
        {
                do
                {
                        ret += n;
                        n--;
                } while (n > 0);
        }
        return ret;
}
int f2(int n)
{
        int ret = 0;
        while (n > 0)
        {
                ret += n;
                n--;
        }
        return ret;
}
int f3(int n)
{
        int ret = 0;
        for (int i = 0; i <= n; i++)
        {
                ret += i;
        }
        return ret;
}
int main1()
{
        printf("%d\n", f1(100));
        printf("%d\n", f2(100));
        printf("%d\n", f2(100));
        getchar();
        return 0;
}
6.break 和 continue 的区别
break 表示终止循环的执行
continue表示终止本次循环,进入下次循环执行
示例:
void f11(int n)
{
                int i = 0;
        for (i = 1; i <= n; i++)
        {
                if ((i % 2) == 0)
                {
                        break;
                }
                printf("%d ", i);
        }
        printf("\n");
}
void f22(int n)
{
        int i = 0;
        for (i = 1; i <= n; i++)
        {
                if ((i % 2) == 0)
                {
                        continue;
                }
                printf("%d ", i);
        }
        printf("\n");
}
int main2()
{
        f11(10);
        f22(10);
        getchar();
        return 0;
}
7.do...while(0)妙用----避免内存泄漏案例
#include <stdio.h>
#include <malloc.h>
int func(int n)
{
        int i = 0;
        int ret = 0;
        int* p = (int*)malloc(sizeof(int) * n);
        do
        {
                if (NULL == p) break;
                if (n < 5) break;
                if (n > 100) break;
                for (i = 0; i<n; i++)
                {
                        p[i] = i;
                        printf("%d\n", p[i]);
                }
                ret = 1;
        } while (0);
        printf("free(p)\n");
        free(p);//do while 可以方便是释放
        return ret;
}
int main()
{
        if (func(10))
        {
                printf("OK\n");
        }
        else
        {
                printf("ERROR\n");
        }
        getchar();
        return 0;
}
8.小结
for 循环先进行判断在进入循环体
循环适合于次数固定的场合
while 循环先进行判断再进入循环体执行
while 循环适合于循环次数不定的场合
do...while 循环先执行循环体再进行条件判断
do...while 循环体至少执行一次循环体

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

10

帖子

1

粉丝