C语言学习记录——오 分支与循环(1)

目录

C语言语句

分支语句(选择结构)

if, else ,else if。

switch语句

循环语句

while循环


分支语句:if ,switch

循环语句:while ,for ,do while

goto语句

C语言语句

C语言是一门结构化的程序设计语言。有顺序,选择,循环结构。C语言中语句是有分号隔开的语句,比如之前声明一个变量,写输出函数。

分支语句(选择结构)

if, else ,else if

之前也写过。if和else if后都可以写表达式,两个都不符合,那就else。写一个特殊的代码

int main()
{
    int a = 0;
    int b = 2;
    if (a == 1)
        if (b == 2)
            printf("hehe\n");
        else
            printf("haha\n");
    return 0;
}

else和第二个if匹配。实际打字即可发现。else与最近的未匹配的if进行匹配。这是一种悬空else,不看实际写起来else与哪个if对齐。

    int num = 4;
    if (num = 5)
    {
        printf("hehe\n");
    }
    return 0;

       会打印hehe,因为num又被赋值为5,此时整个语句为真,然后就会执行输出。=是赋值,不是等于,所以可以执行。这样的代码可以运行,但不能告诉程序员这是个不合格的代码,容易出bug。改为5 == num,这样执行后什么都打印不出来,但是可以运行,这样就会得到提醒。常量和变量相比较时,常量放左边比较好。做一个练习:判断数字是不是奇数,输出1~100之间的奇数。可以有两种。

    int i = 1;
    while (i <= 100)
    {
        if (i % 2 != 0)
            printf("%d ", i);
        i++;
        //或者
        //printf("%d ", i);
        //i += 2;
    }
    return 0;

switch语句

为了更好的选择。

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

语句项就是case表达式

case 整形常量表达式:

语句;

现在看两个程序。

if else方法:

    int day = 0;
    scanf("%d", &day);
    if (1 == day)
        printf("monday\n");
    else if (2 == day)
        printf("tuesday\n");

比较复杂

another:

    int day = 0;
    scanf("%d", &day);
    switch (day)
    {
    case 1:
        printf("monday\n");
        break;
    case 2:
        printf("tuesday\n");
        break;
    //......
    case 7:
        printf("일요일\n");
        break;
    }

此时打印就可以输入一个数字,然后打印出相应的星期。break的使用是用来及时退出,也是一个代码习惯,选中一个数字后,执行完对应的语句就退出整个代码块,去执行switch之后的代码。

    switch (day)
    {
    case 1:
    case 2:
    //......
    case 5:
        printf("工作日\n");
        break;
    case 6:
    case 7:
        printf("休息日\n");
        break;
    }

输入1~5,就可以打印工作日,输入6或7就可以打印休息日。7后面的break是习惯问题。应该有个好习惯,防止之后还有8的话,程序不出错。再者,在现在的程序里,如果输入没有的数字,程序会执行,但是没有结果,为了防止这个事件。在最后加入default

    case 7:
        printf("休息日\n");
        break;
    default:
        printf("输入错误\n");
        break;

default和case顺序无所谓。这里面也可以出现if语句

    case 1:
        if (day == 1)
            printf("hehe\n");

输入1之后就会打印hehe,工作日。continue就不要出现了,不一定跳到了哪。

循环语句

while循环

先看一下if语句,if是条件为真,就执行,比如

if(1)

    printf("haha\n");

如果if改成while,那么就会一直打印haha,一个死循环。while需要一直循环,知道判断为假再停止。

while有break和continue语句。

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

打印出1~4。如果是continue

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

       这样碰到continue后,本次循环后面的代码就会跳过了,就会回到上面,进入下一次循环,输出1234后就没有下文了,如果把i++放到if前面,那么就可以打印出除了5之外的数字。while中break是用于永久终止循环的,而continue用于终止本次循环。

多写一点东西。

    int ch = getchar();
    putchar(ch);
    printf("%c\n", ch);
    return 0;

当输入一个字符,就会打印出两个,一个是putchar,一个是printf。

    int ch = 0;
    while ((ch = getchar()) != EOF)
    {
        putchar(ch);
    }
    return 0;

        执行后,输入一个数字,就打印这个数字,想结束程序,也不是输入EOF,而是ctrl+c,EOF是三个字符,程序读取三次,打印三个字符。EOF是文件结束标志,本质是-1这个值,是end of file。这个不用多理解。

结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值