分支语句和循环语句的分析及运用(折半查找、二分查找)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_44759710/article/details/99710614

语句

在C语言中,由一个分号隔开的就是一条语句

分支语句

分支语句即选择语句

if语句

语法结构

 if(表达式)
     语句;
     
 if(表达式)
     语句1;
 else
     语句2;
        
 if(表达式1)
     语句1;
 else if(表达式2)
     语句2;
 else
     语句3;

注意

当一个if语句套入另一个if中,应注意if悬空的问题,例:

 #include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("1\n");
    else
        printf("2\n");
    return 0; 
 }

应当选择使用{ }来区分不同的if语句:

 #include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
    {
        if(b == 2)
            printf("1\n");
     }
    else
    {
        printf("2\n");
     }
    return 0; 
 }

switch语句

switch语句也是一种分支语句。 常常用于多分支的情况

语法结构

switch(整型表达式) 
{
    语句项;
} 

样例示范:

int main()
{
    int day = 0;
    switch(day)
    {
        case 1printf("星期一\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;
        default:
            break;     
     } 
     return 0;  
}

break用于划分不同部分语句部分,default用于处理与标签值不匹配的情况

循环语句

while语句

语法结构

while(表达式)
   循环语句;

样例示范:

int main()
{
   int i = 1;
   while(i<=10)
   {
      printf("%d ", i);
      i = i+1;
   }
   return 0; 
}

注意

在while语句中,常用break及continue,break用于停止运行后面的语句并跳出循环,continue用于停止运行后面的语句并立即进入下一次循环的判断部分

for语句

语法结构

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

样例示范

int main()
{
   for(int i = 0 ; i < 10 ; i++)
   {
      printf("%d ", i);
   }
   return 0; 
}

同样的,break和continue适用于for语句,且具有相同意义

do…while语句

语法结构

do
   循环语句;
while(表达式);  

语句特点为至少进行一次循环
样例示范:

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

语句使用

写一个折半查找的程序:

int main()
{
   int arr[] = {1,2,3,4,5,6,7,8,9,10};
   int left = 0;
   int right = sizeof(arr)/sizeof(arr[0])-1;
   int key = 7;
   int mid = 0;
   while(left<=right)
   {
      mid = (left+right)/2;
      if(arr[mid]>key)
      {
         right = mid-1;
      }
      else if(arr[mid] < key)
      {
         left = mid+1;
      }
      else
      break;
   }
   if(left <= right)
      printf("%d\n", mid);
   else
      printf("找不到\n");
}

写一个函数实现二分查找:

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;
   }
   return -1;
}

猜你喜欢

转载自blog.csdn.net/qq_44759710/article/details/99710614