C语言<三>-控制流

语句和程序块

  • 语句以”;” 结尾
  • 用一堆花括号”{“和”}”把一组声明括在一起就构成了一个复合语句,右括号用以结束程序块,其后不需要分号

if-else、switch语句

就说说switch语句吧,老不用,都快忘了
switch语句是一种多路判定语句,它测试表达式是否与一些常量整数值中的某一个值匹配,并执行相应的分支动作,形式如下

switch (表达式)
{
    case 常量表达式: 语句序列 
    case 常量表达式: 语句序列 
    default : 语句序列 
}

while循环与for循环

  • 在写程序时到底选用 while还是for循环?如
while ( (c=getchar())==' ' || c=='\n' || c=='\t')
for (i=0; i<n; i++) 

其中由于 while中没有初始化或重新初始化的操作,使用while 语句会更自然些,而for语句中需要执行简单的初始化和变量递增,使用for语句会更合适些,下面看一个例子:aoti函数的编写

#include <ctype.h>

int atoi(char s[])
{
    int i,n,sign;
    for (i=0; isspace(s[i]); i++); //跳过空白符
    sign = s[i]=='-'?-1:1; 
    if (s[i]=='+' || s[i]=='-')
        ++i; //跳过符号
    for (n=0; isdigit(s[i]); i++)    //可以把n的初始化放在这里 
        n = 10*n + (s[i]-'0');

    return sign*n;
}

标准库中提供了一个更完善的函数strtol,它将字符串转换为长整型数。
下面看一个简单的程序,for语句中,可将多个表达式放在各个语句成分中,比如同时处理两个循环控制变量。

void reverse(char s[])
{
    int i,j,c;
    for (i=0,j=strlen(s)-1; i<j; i++,j--)
    {
        c = s[i];
        s[i] = s[j];
        s[j] = c;
    }
}

do while循环

经验表明do-while循环用的比while和for循环用的少,下面看一个例子,将数字转换为字符串保存起来

void itoa(int n, char s[])
{
    int i,sign;
    if ( (sign=n) < 0)  
    {
        n = -n;
    }
    i = 0;
    do
    {
        s[i++] = n%10 + '0';
    }while( (n /= 10) > 0);
    if (sign < 0)
        s[i++] = '-';
    s[i] = '\0';
    reverse(s);

}

break和continue语句

这个区别一般都知道,这里不细说,break看一下例子,下面的trim函数用于删除字符串末尾的空格符、制表符、换行符。

void trim(char s[])
{
    int i;
    for (i=strlen(s)-1; i>=0; --i)
    {
        if (s[i]!=' ' && s[i]!='\t' && s[i]!='\n')
            break;
    }
    s[i+1] = '\0';
}

你可能感兴趣的:(C语言<三>-控制流)