C语言分支和循环

分支语句和循环语句
*分支语句

  • if
  • switch
    *循环语句
  • while
  • for
  • do while

1.语句

C语句可分为以下五类:

  1. 表达式语句

  2. 函数调用语句

  3. 控制语句

  4. 复合语句

  5. 空语句

    控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。
    可分成以下三类:
    *a. 条件判断语句也叫分支语句:*if语句、switch语句;
    *b. 循环执行语句:*do while语句、while语句、for语句;
    *c. 转向语句:*break语句、goto语句、continue语句、return语句。

2.分支语句

(1).if语句
语法结构:

if(表达式)
    语句;
if(表达式)
    语句1;
else
    语句2;
//多分支    
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;
    //注意:如果表达式为真,则执行语句
    //0表示假,非0表示真

代码演示

//代码1
int main()
{
    
    
 int age = 0;
    scanf("%d", &age);
    if(age<18)
   {
    
    
        printf("未成年\n");
   }
}
//代码2
#include <stdio.h>
int main()
{
    
    
 int age = 0;
    scanf("%d", &age);
    if(age<18)
   {
    
    
        printf("未成年\n");
   }
    else
   {
    
    
        printf("成年\n");
   }
}
//代码3
#include <stdio.h>
int main()
{
    
    
 int age = 0;
    scanf("%d", &age);
    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)
   {
    
    
        printf("老年\n");
   }
}

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

(2).switch语句
switch语句也是一种分支语句。
常常用于多分支的情况。其表达形式如下

switch(整型表达式) 
{
    
    
    case 常量表达式:
    语句;
}
#include <stdio.h>
int main()
{
    
    
    int day = 0;
    scanf("%d",&day);
    switch(day)
   {
    
    
        case 1//day为1,则打印星期一
            printf("星期一\n");
            break;
        case 2:    //day为2,则打印星期二
            printf("星期二\n");
            break;
        case 3:    //day为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; 
 }

有时候我们的需求变了:

  1. 输入1-5,输出的是“weekday”;
  2. 输入6-7,输出“weekend”
#include <stdio.h>
//switch代码演示
int main()
{
    
    
    int day = 0;
    switch(day)
   {
    
    
        case 1case 2:
        case 3:
        case 4:
        case 5:
            printf("weekday\n");
            break;   //1-5都打印weekday
        case 6:
        case 7:
            printf("weekend\n");
            break;    //6-7打印weekend
   }
    return 0; 
}

3. 循环语句

  • while
  • for
  • do while
    **(1)while循环:同一件事情我们需要完成很多次。
//while 语法结构
while(表达式)
 循环语句;

比如在屏幕上打印1-10的数字。

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

(2)while语句中的break和continue
break在while循环中的作用:其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。所以:while中的break是用于永久终止循环的。
continue在while循环中的作用就是:continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
(3)for循环
语法

for(表达式1; 表达式2; 表达式3)
 循环语句;

表达式1
表达式1为初始化部分,用于初始化循环变量的。
表达式2
表达式2为条件判断部分,用于判断循环时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。

例如使用for循环 在屏幕上打印1-10的数字

#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; 
 }

3. do…while()循环

语法

do
 循环语句;
while(表达式);
#include <stdio.h>
int main()
{
    
    
 int i = 1;
 do
 {
    
    
 printf("%d\n", i);
 i++}while(i<10);
 return 0; 
}
//打印1,2,3,4,5,6,7,8,9

二分查找(中间数)

实现一个二分查找函数:
int bin_search(int arr[], int left, int right, int key) {
    
    
 int mid = 0;
 while(left<=right)
 {
    
    
 mid = (left+right)>>1;
 if(arr[mid]>key)
 {
    
    
 right = mid-1;
 }
 else if(arr[mid] < key)
 {
    
    
 left = mid+1;
 }
 else
 return mid;//找到了,返回下标
 }

猜你喜欢

转载自blog.csdn.net/qq_62316056/article/details/124070862