《TCPL》 第3章 控制流

程序语言中的控制流语句用于控制各计算操作执行的次序。

3.1 语句与程序块

表达式加一个分号就变成了语句。

用一对花括号“{”,“}”把一组声明和语句括在一起就构成了一个复合语句,也叫程序块。如函数体中,if-else、while、for之后被括住的多条语句。

3.2 if-else语句

3.3 else-if语句

通过一个折半查找函数说明三路判定程序的用法。该函数用于判定已排序的数组v中是否存在某个特定的值x。数组v的元素必须以升序排列。如果v中包含x,则该函数返回x在v中的位置(介于0~n-1之间的一个整数);否则返回-1。

/*折半查找*/
int binsearch(int v[],int x,int n)
{
    int low=0;
    int high=n-1;
    int mid;
    while(high>=low)
    {
        mid=(low+high)/2;
        if(x>v[mid])
            low=mid-1;
        else if(x<v[mid])
            high=mid+1;
        else
            return mid;
    }
    return -1;
}

3.4 switch 语句

在switch语句最后一个分支(即default分支)后面也可上一个break语句,这样做逻辑上没有必要,但是当我们需要向switch语句后添加其他分支时,这种防范措施会降低犯错误的可能性。

3.5 while循环和for循环

for循环中的三个表达式都可以省略但是分号必须保留,下面我们通过重新编写atoi函数来熟悉循环的用法。atoi要处理前置的空白符以及一个可选的加(+)或(-)号。

int atoi(char *s)
{
    int sign,i,n;
    while(*(s++)==' ')
        ;
    sign=*s=='-'?-1:1;
    if(*s=='+' || *s=='-')
        s++;
    for(n=0;isdigit(*s);s++)
        n=n*10+(*s-'0');

    return n;
}

3.6 do-while循环

do-while循环在条件判断之前行执行循环体内的语句,如果条件表达式为真则继续执行循环。while后面的有个分号。下面用do-while语句写一个将整数转换成字符串的函数itoa

/*itoa将数字n转换为字符串,并保存到数组s中*/
void itoa(int n,char s[])
{
    int i=0,sign;
    if((sign=n)<0)
        n=-n;
    do{
        s[i++]=n%10+'0';
    }while(n/=10>0);
    if(sign<0)
        s[i++]='-';
    s[i]='\0';
    reverse(s);
}

3.7 break语句和continue语句

breadk与contiune语句用于控制循环的中途退出,break直接终止循环,而contine跳过下面的循环语句进入下一次循环。

你可能感兴趣的:(tcp)