C语言学习 8 (九大控制流语句)

一、九大控制流 --- 控制流语句

基本总览

1)if

2) for

3) while

4) do .. while

5) return

6) goto

7) break

8) continue

9) switch case

1)if 条件判断语句

1) 

if(判断表达式) 执行语句(只能有一句); 

或者

if(判断表达式) 

    执行语句(语句1);
    执行语句(语句2);  //  { } 内可以执行多句。

2) 

if(判断表达式)   执行语句(只能有一句); 

else     执行语句(只能有一句) ;

或者

if(判断表达式); 

    执行代码段 ;

else 

    执行代码段; 

3) 
if(判断表达式) 
{
         执行代码段 ;

else if(判断表达式) 

        执行代码段;

...

...                      //可以一直 else if 下去

else if(判断表达式) 
{
         执行代码段 ;

else                     //最后以 else 结尾
{
         执行代码段 ;
}

例子 ① 键盘输入一个数,判断这个数是不是偶数,如果是则打印他是偶数

① if判断

#include <stdio.h> 

int main() 
{ 
    int data_int; 
    printf("请输入一个数"); 
    scanf("%d",&data_int); 

    if(data_int % 2 == 0) 
    { 
        printf("该数为偶数!\n"); 
    } 

    return 0; 
} 


② if 和 else组合

#include <stdio.h> 
int main() 
{ 
    int data_int; 
    printf("请输入一个数"); 
    scanf("%d",&data_int); 

    if(data_int % 2 == 0) 
    { 
        printf("该数为偶数!\n"); 
    } 
    else 
    { 
        printf("该数不是偶数!\n"); 
    } 

    return 0; 
}
例子 ② 键盘输入一个字符,判断这个字符是大写的,还是小写的,还是不是字母

#include <stdio.h> 

int main() 
{ 
    char data_c; 
    printf("请输入一个字符"); 
    scanf("%c",&data_c); 

    if(data_c >= 'A' && data_c <= 'Z') 
    { 
        printf("是大写字母\n"); 
    } 
    else if(data_c >= 'a' && data_c <= 'z') 
    { 
        printf("是小写字母\n"); 
    } 
    else 
    { 
        printf("不是字母\n"); 
    } 
    
    return 0; 
} 

补充:逗号表达式

int a=0;

int b;

int c;

if(c=2,b=a)                //从右向左计算,看b的值,b为零则为假,否则为真进入

{

        printf("dadada\n");

}

2)for -- 循环语句

for的写法

执行语句1:初始化一个变量

执行语句2:用初始化好的变量计算循环次数

条件判断语句:判断能不能进行循环,如果不成立则直接跳出循环 

for(执行语句1;条件判断语句 ; 执行语句2)   

{

        循环的代码段

}

                                // 执行语句2一般用来改变计算循环次数的变量的值:递增 或者 递减

3) while

写法:

1)

while(条件判断)

{

        循环语句代码段

}

2)

while(条件判断) 循环语句(只能一句)

3)

while(1);      //相等于  for(;;);   这是死循环

4)do...while

特点:至少循环一次 (先循环之后再判断)

写法

1)

do

{

        循环语句代码段

}while(1);

do 循环语句代码行(只能一行) while(1);

5) return

专门给函数用的,所以只能写在函数里面 --- 没有函数就没有return

1)

return 不能写在函数外面! 不管return写在函数的内部的哪个位置,只要被执行到函数就无条件结束该函数

return 可以 跟一个返回值,返回值可以是基本类型常量也可以是基本类型变量.

void main()

{

        int a=110;

        char b='s';

        printf("hello\n");

        return b;

        printf("world\n");   //

}

如果你的函数不想要返回值,那么函数的返回值类型可以写成void(无类型). 返回值和返回值类型要一致 return后面可以加表达式:return a>b?a:b; 或者 return a+b;

return只能返回一个数据值或者一个变量 0 -1 函数的返回值可以用来表示函数的调用情况 (使用情况:正常 不正常 还有很多自定义情况)

所以函数中的retuen一般返回0,然后写在函数的最后面。在系统中,早就已经默认返回0表示函数正常使用。-1:异常调用

return返回值的自定义

#include <stdio.h>

int Fun() //这个函数已经是一个具有功能的接口(API)

{

        int int_data;

        printf("请输入这个数:");

        scanf("%d",&int_data);

        if(int_data % 2 == 0)

        {

                return 9999;

        }

        else

        {

                return 7777;

        }

}

int main()

{

        int return_value = Fun(); //函数结束的时候,该函数的调用语句就是其返回值         if(return_value == 9999)

        {

                printf("该数是偶数!\n");

        }

        if(return_value == 7777)

        {

                printf("该数是奇数!\n");

        }

}

6)goto

(无条件跳转语句)

int fun() 
{ 

} 

int main() 
{ 
    int flag = 0;    //0"不跳 1:跳" 
                    // 先定义标签才能跳转 
    
    loop: 
        printf("-----\n"); 

    flag = 1; 

    if(flag == 1)    //一般会先进行条件判断,条件满足之后才跳转 
        goto loop;  //会跳到loop:执行,到这里又进入loop:就死循环了
        goto loop_2;//会跳到loop_2:执行,也就是跳过了printf("+++++");

    printf("+++++");

    loop_2: 
        printf("----\n"); 
        goto loop; 
    
    return 0; 

} 


    使用goto要注意: 
    goto的标签的作用域里面不能定义变量,只添加逻辑简单不涉及复杂和内存操作的代码 一般需要进行条件判断才用goto 
    goto可以定义多个,但是建议goto使用在小规模的代码中 
    goto不能夸函数跳 goto语句标签不能定义在函数外面,避免goto造成死循环,也就是说goto要有次数限制

7)break

break跳出循环

break:跳出当前循环结构,一定要和循环结构或者switch搭配才能用,一般在条件成立的时候使用

8)continue

 continue:结束本次循环,进入下一次循环,,一定要和循环结构

循环次数有很多次,执行到continue的时候会直接取消本次循环,直接进入下一次循环 

9)switch case 条件分支语句

注意:switch case 常和 break 和 while搭配(多次条件判断)

基本写法:轮询机制 --- 软件上位机

while(1)

{

        int a = 0;

        scanf("%d",&a);

        switch(a)        // a常量表达式,只能整形或者字符型

        {

                case 1 :执行语句;break;

                case 2 :执行语句;break;

                case 3 :执行语句;break;

                case 4 :执行语句;break;

                case 5 :执行语句;break;

                case 6 :执行语句;break;

                case 7 :执行语句;break;

                case 8 :执行语句;break;

                ...

                default: 执行语句;break;

        }

}

        ps:关于printf的输出特点:

printf默认是行缓冲机制输出的。

遇到换行符才显示输出。

要不等待程序退出才显示,要不等待标准输出缓存区满才输出

加\n就会正常输出, 如果不加\n: 要不就等到缓存区满了才输出 要不就等到程序退出的时候才输出,因为程序退出的时候会自动刷新标准输出缓存区 要不和scanf搭配也可以输出

自己刷新缓存区

        关于 scanf 和 getchar 的特点:

就是返回接收的有效数据的个数,如果你输入的数据的类型不是 scanf 想要的他就不理不接受

这个数据

getchar()

一般用来清理键盘输入的数据中的回车(\n)

一般写做

while( getchar( ) != ' \n ' ) ;

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值