c基础 控制语句

控制语句

1.分支语句

1.1   if语句

基本结构:if(表达式)

                   {

                        语句块1

                                 }

                else{

                         语句块2

                        } 

如果条件成立执行语句块1否则执行语句块2 

例:输入a和b两个整数,用if语句实现两数相减 

#include <stdio.h>
int main()
{
    int a, b, c;
    printf("输入两个数:");
    scanf("%d %d", &a, &b);
    if (a > b)
    {
        c = a - b;
        printf("%d", c);
    }
    else
    {
        c = b - a;
        printf("%d", c);
    }
    return 0;
}

分层结构:if(表达式1)

{

语句块1

}else  if(表达式2)

{

语句块2

}else

{

语句块3

}

 例:从终端输入一个学生的成绩,判断学生成绩,打印成绩级别

#include <stdio.h>
int main()
{
    int a;
    printf("请输入您的成绩");
    scanf("%d", &a);
    if (a < 0 || a > 100)
        printf("gun");
    else if (a >= 90 && a <= 100)
    {
        printf("A");
    }
    else if (a >= 80 && a < 90)
    {
        printf("B");
    }
    else if (a >= 70 && a < 80)
    {
        printf("c");
    }
    else if (a >= 60 && a < 70)
    {
        printf("D");
    }
    else
        printf("菜就多练");

    return 0;
}

嵌套结构:if(表达式1)

{

        if(表达式2)

        {

                语句块1

        }else

                {

                    语句块2                    

                }

} else

{

语句块3

}

 例:从终端输入一个学生的成绩,判断学生成绩,打印成绩级别(嵌套版)

#include <stdio.h>
int main()
{
    int a;
    printf("请输入您的成绩");
    scanf("%d", &a);
    if (a < 0 || a > 100)
        printf("gun");
    else
    {
        if (a >= 90 && a <= 100)
        {
            printf("A");
        }
        else if (a >= 80 && a < 90)
        {
            printf("B");
        }
        else if (a >= 70 && a < 80)
        {
            printf("c");
        }
        else if (a >= 60 && a < 70)
        {
            printf("D");
        }
        else
            printf("菜就多练");
    }
    return 0;
}

 1.2 Switch case 

基本结构:switch (变量或表达式)

                        {

                                case 常量1:语句块1;break;

                                case 常量2:语句块2;break;

                                ........

                                case 常量n:语句块n;break;

                                default:语句块n+1;

                        }

#include <stdio.h>
int main()
{
    int a, d;
    printf("请输入成绩");
    scanf("%d", &a);
    d = a / 10;
    if (a >= 0 && a <= 100)
    {
        switch (d)
        {
        case 10:
            printf("A");
            break;
        case 9:
            printf("A");
            break;
        case 8:
            printf("B");
            break;
        case 7:
            printf("C");
            break;
        case 6:
            printf("D");
            break;
        default:
            printf("菜就多练"); break;
        }
    }
    else
        printf("你能输一个正常东西吗");
}

总结:

  1. 执行顺序:先判断switch()中的条件是否满足以下的case,如果满足则执行满足的case中的语句块,如果都不满足则执行default中的默认语句块。
  2. 如果case的语句块和下面case中的语句块相同,则可以省略。形式如下:

case 常量1:

case 常量2:语句块1;break;

遵守switch语句规则

switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:

(1)只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。

(2)case标签必须是常量表达式(constantExpression),如42或者'4'。

(3)case标签必须是唯一性的表达式;也就是说,不允许两个case具有相同的值。

2循环语句

2.1for循环

基本结构:for(表达式1;表达式2;表达式3)

{

                语句块1

}

表达式1:赋初值

表达式2:判断的判断条件

表达式3:增值或减值语句 

 例:

#include <stdio.h>
int main()
{
    int y, m, d, ds = 0;
    int i, n;
    int a[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    scanf("%d %d %d", &y, &m, &d);
    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
    {
        a[2] = 29;
    }
    for (i = 1; i < m; i++)
    {
        ds = ds + a[i];
    }
    n = ds + d;
    printf("%d\n", n);
    return 0;
}

嵌套结构

for(表达式1;表达式2;表达式3)

{

        for(表达式4;表达式5;表达式6)

        {

                语句块;

        }

}

例:打印99乘法表 

#include <stdio.h>
int main()
{
    int i, j;
    for (i = 1; i < 10; i++)//行数
    {
        for (j = 1; j <= i; j++)//列数
        {
            printf("%d*%d=%d\t", j, i, i * j);
        }
        printf("\n");
    }
}

输入任意两个数,输出两数之间(包括这两个数)偶数之和。

#include <stdio.h>
int main()
{
    int a, b, c, i, sum=0;
    printf("请输入两个数");
    scanf("%d %d", &a, &b);
    if (a > b)
    {
        c = a;
        a = b;
        b = c;
    }
    for (i = a; i <= b; i++)
    {
        if (i % 2 == 0)
        {
            sum += i;
        }
    }
    printf("%d", sum);
}

打印以下图案:

要求行数从终端输入。

输入:5

输出以下:

#include <stdio.h>
int main()
{
    int n, i, j;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= i; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= i - 1; j++)
        {
            printf(" ");
        }
        for (j = 1; j <= n - i + 1; j++)
        {
            printf("*");
        }
        printf("\n");
    }
}

 变形:

变形一:

int i=0;

for(;表达式2;表达式3)

{

语句块;

}

变形二:

int i=0;

for(;表达式2;)

{

语句块;

表达式3;

}

变形三:

int i=0;

for(;;)//死循环

{

if(表达式2)

{

语句块;

表达式3;

}

else

{

break; //结束循环

}

}

 

2.2 while循环

格式:

定义循环变量并赋值;

while(判断条件)

{

语句块;

增值或减值语句;

}

2.3 do while

格式:

赋初值语句;

do

{

语句块;

增减值语句;

}while(判断条件);

例: 

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

2.4 死循环

for(;;){}

while(1){};

while(1);

2.5循环控制语句

break:直接结束循环

continue:结束本次循环执行下一次循环

goto:强制跳转到标签位置可以应用于多重循环嵌套尽量不要使用!)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值