主页 > 其他  > 

分支语句与循环语句

分支语句与循环语句


文章目录 什么是语句? 分支语句(选择结构) 循环语句 goto语句


前言


一、什么是语句? C 语句可分为以下五类: 1. 表达式语句 2. 函数调用语句 3. 控制语句 4. 复合语句 5. 空语句 控制语句 用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成, C 语 言有九种控制语句。 可分成以下三类: 1. 条件判断语句也叫分支语句: if 语句、 switch 语句; 2. 循环执行语句: do while 语句、 while 语句、 for 语句; 3. 转向语句: break 语句、 goto 语句、 continue 语句、 return 语句。 二、分支语句(选择结构) if语句 语法结构: if ( 表达式 )     语句 ; if ( 表达式 )     语句 1 ; else     语句 2 ; // 多分支     if ( 表达式 1 )     语句 1 ; else if ( 表达式 2 )     语句 2 ; else     语句 3 ; #include<stdio.h> int main() { int age = 0; scanf("%d", &age); //if (age >= 18) // printf("成年\n"); //else // printf("未成年\n"); if (age < 18) printf("青少年\n"); else if (age >= 18 && age < 30) printf("青年\n"); else if (age >= 30 && age < 50) printf("中年\n"); else if (age >= 50 && age < 80) printf("中老年\n"); else if (age >= 80 && age < 100) printf("老年\n"); else printf("老寿星\n"); return 0; } 如果条件成立,要执行多条语句,怎应该使用代码块。 #include <stdio.h> int main () {     if ( 表达式 )   {         语句列表 1 ;   }     else   {         语句列表 2 ;   }     return 0 ; } #include <stdio.h> int main() {    int a = 0;    int b = 2;    if(a == 1)   {        if(b == 2)       {            printf("hehe\n");       }   }    else   {         printf("haha\n");   }          return 0; }  if语句练习 #include<iostream> //判断一个数是否是奇数 //int main() //{ // int n = 0; // scanf("%d", &n); // // if (n % 2 == 1) // printf("奇数\n"); // // return 0; //} //打印1~100之间的奇数 int main() { int i = 1; while (i <= 100) { if (i % 2 == 1) printf("%d ", i); i++; } return 0; } 注意: 如果表达式的结果为真,则语句执行。 在C语言中如何表示真假? 0表示假,非0表示真。

这里的一对 { } 就是一个代码块。

else的匹配:else是和它离的最近的if匹配的。

switch语句 switch 语句也是一种分支语句。 常常用于多分支的情况。 if...else if ...else if 的形式太复杂,那我们就得有不一样的语法形式。 这就是 switch 语句。 switch ( 整型表达式 ) {     语句项;    // 是一些 case 语句:    //如下:    case 整形常量表达式 :    语句 ; } #include <stdio.h> int main() { int day = 0; switch (day) { case 1: printf("星期一\n"); break; case 2: printf("星期二\n"); break; case 3: printf("星期三\n"); break; case 4: printf("星期四\n"); break; case 5: printf("星期五\n"); break; case 6: printf("星期六\n"); break; case 7: printf("星期天\n"); break; } return 0; } /* #include <stdio.h> int main() { int day = 0; switch (day) { case 1: case 2: case 3: case 4: case 5: printf("weekday\n"); break; case 6: case 7: printf("weekend\n"); break; } return 0; } */ switch语句练习 #include <stdio.h> int main() { int n = 1; int m = 2; switch (n) { case 1: m++; case 2: n++; case 3: switch (n) {//switch允许嵌套使用 case 1: n++; case 2: m++; n++; break; } case 4: m++; break; default: break; } printf("m = %d, n = %d\n", m, n); return 0; } 程序结果如图所示:

注意:         在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。         break语句 的实际效果是把语句列表划分为不同的分支部分。         default:写在任何一个 case 标签可以出现的位置。当switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。 三、循环语句 while循环 while ( 表达式 )     循环语句 ;

 打印1~10的数字

#include <stdio.h> int main() { int i = 1; while (i <= 10) { printf("%d ", i); i = i + 1; } return 0; }  

for循环 for ( 表达式 1 ; 表达式 2 ; 表达式 3 ) 循环语句 ; 表达式 1 表达式 1 为 初始化部分 ,用于初始化循环变量的。 表达式 2 表达式 2 为 条件判断部分 ,用于判断循环时候终止。 表达式 3 表达式 3 为 调整部分 ,用于循环条件的调整。 #include <stdio.h> int main() { int i = 0; //for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/) for(i=1; i<=10; i++) { printf("%d ", i); } return 0; }

//请问循环要循环多少次? #include <stdio.h> int main() { int i = 0; int k = 0; for(i =0,k=0; k=0; i++,k++)        k++; return 0; }

do-while循环 do 语句的语法: do 循环语句 ; while ( 表达式 );

#include <stdio.h> int main() { int i = 10; do { printf("%d\n", i); }while(i<10); return 0; }  猜数字游戏 #include <stdio.h> #include <stdlib.h> #include <time.h> void menu() { printf("**********************************\n"); printf("*********** 1.play     **********\n"); printf("*********** 0.exit     **********\n"); printf("**********************************\n"); } //RAND_MAX--rand函数能返回随机数的最大值。 void game() { //时间戳 srand(200); //rand函数返回的随机数的范围是(0~32767) //猜数字游戏的实现 int ret = rand(); printf("%d\n", ret); //猜数字 int random_num = rand() % 100 + 1; int input = 0; while (1) { printf("请输入猜的数字>:"); scanf("%d", &input); if (input > random_num) { printf("猜大了\n"); } else if (input < random_num) { printf("猜小了\n"); } else { printf("恭喜你,猜对了\n"); break; } } } int main() { int input = 0; srand((unsigned)time(NULL)); do { menu(); printf("请选择>:"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: break; default: printf("选择错误,请重新输入!\n"); break; } } while (input); return 0; } 注意:break在while循环中的作用: 其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。         continue在while循环中的作用就是:continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。         for循环的判断部分省略了,就意味着判断恒为真。         do-while循环循环体至少执行一次。

四、goto语句

C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。 从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。

goto语句适合的情景:

for (...)     for (...)   {         for (...)       {             if ( disaster )                 goto error ;       }   }     … error : if ( disaster )         // 处理错误情况

利用goto语句写一个关机程序

#include <stdio.h> #include<stdlib.h> #include<string.h> int main() { char input[10] = { 0 }; system("shutdown -s -t 60"); again: printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>"); scanf("%s", input); if (0 == strcmp(input, "我是猪")) { system("shutdown -a"); } else { goto again; } return 0; }

使用while循环

#include <stdio.h> #include <stdlib.h> int main() {    char input[10] = {0};    system("shutdown -s -t 60");    while(1)   {        printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");        scanf("%s", input);        if(0 == strcmp(input, "我是猪"))       {            system("shutdown -a");            break;       }   }    return 0; }


标签:

分支语句与循环语句由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“分支语句与循环语句