C-控制流

语句与程序块

分号是语句结束符。
{ }将一组声明和语句括在一起就构成了程序块(也称为复合语句)。
 
 

if-else语句

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

该语句执行时,先计算表达式的值。
若其值为真(非0),则执行语句1。
若其值为假(为0),则执行语句2。
if-else语句可进行嵌套。
每个else与最近的前一个没有else配对的if进行匹配。
建议:在有if语句嵌套时使用{ }表明正确的匹配关系。
跟在if后面要有一个语句,若无可写语句,则用;或 { }来表示一个空语句。
 
 

else-if语句

是编写多路判定最常用的方法。

if (表达式)
    语句
else if (表达式)
    语句
else if (表达式)
    语句
else
    语句

各表达式将被依次求值,一旦某个表达式结果为真,则执行与之相关的语句,并终止整个语句序列的执行。
最后一个else部分用于处理“上述条件均不成立”的情况或默认情况。
 
 

switch语句

是一种多路判定语句。
它测试表达式是否与一些常量整数值中的某一个匹配,并执行相应的分支动作。

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

每一个分支都由一个或多个整数值常量或常量表达式标记。
各分支表达式必须各不相同。
如果没有哪一分支能匹配表达式,则执行标记为default的分支,default分支是可选的。
case的作用只是一个标号,引导语句执行的入口。因此,当匹配到某个分支,该分支中的代码执行完后,顺序向下执行,依次执行完该分支下的所有分支,除非在程序中显式地跳转。(用break语句可以跳出)
题目
编写一个函数,将字符串t复制到字符串s中,并在复制过程中将换行符,制表符转换成可见形式。

void a(char t[], char s[]){
        int i, j;
        for (i = j = 0; t[i] != '\0'; i++){
                switch (t[i]){
                case '\n':
                        s[j++] = '\\';
                        s[j++] = 'n';
                        break;
                case '\t':
                        s[j++] = '\\';
                        s[j++] = 't';
                        break;
                default:
                        s[j++] = t[i];
                        break;
                }
        }
        s[j] = '\0';
}

 
 

while循环和for循环

若表达式的值为真(非0)则执行循环体,不为真(为0)则跳出循环。

表达式1;
while(表达式2){
    语句
    表达式3;
}

for(表达式1;表达式2;表达式3){
    语句;
}

上面的while循环和for循环等价。(在不包含contine语句时)
表达式1通常是赋值,表达式2通常是关系表达式,表达式3通常是向目标的增进。
在for循环中3个表达式都可以省略,用其他方式控制循环。如:for(;;)if(a=1)break;
题目
编写函数expand(s1,s2),将字符串s1中类似a-z这样的速记符号在字符串s2中扩展为完整类表。可以处理大小写字母及数字。

void expand(char s1[], char s2[]){
        int i, j;
        char c;
        i = j = 0;
        while ((c = s1[i++]) != '\0'){
                if (s1[i] == '-' && s1[i + 1] > c){
                        i++;
                        while (c < s1[i])
                                s2[j++] = c++;
                }
                else
                        s2[j++] = c;
        }
        s2[j] = '\0';
}

 
 

do-while循环

在循环体执行后测试终止条件,这样循环体至少被执行一次。

do
    语句
while(表达式);

不要忘记最后的分号,;代表一个语句的结束。
 
 

break语句和continue语句

不通过测试条件而跳出循环。
break从循环和switch中跳出。
continue只能用于循环。在while和do-while中意味着立即执行测试部分,在for循环中意味着使控制转移到表达式3。

猜你喜欢

转载自blog.csdn.net/qq_31730735/article/details/80702340
C-