二c语言初阶之分支和循环

Posted I am Supreme

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二c语言初阶之分支和循环相关的知识,希望对你有一定的参考价值。

1 分支语句

1.1 if

       if分支语句常用于选择结构

1.1.1if语句的语法结构

语法结构:
if(表达式)
    语句;
if(表达式)
    语句1;
else
    语句2;
//多分支
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;

 演示代码:

#include <stdio.h>
//代码1
int main()
{
    int age = 0;
    scanf("%d", &age);
    if(age<18)
    {
    printf("未成年\\n");
    }
    return 0;
}

 代码2

//代码2
#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d", &age);
    if(age<18)
    {
        printf("未成年\\n");
    }
    else
    {
        printf("成年\\n");
    }
    return 0;
}

1.2 switch

switch语句也是一种分支语句。 常常用于多分支的情况。

比如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期天
用if else的形式则太复杂

1.2.1 switch语句

switch(整型表达式)
{
    case 整形常量表达式:
    语句;
}

 在switch语句中,我们没法直接实现分支,搭配break使用才能实现真正的分支。
比如:
 

#include <stdio.h>
int main()
{
    int day = 0;
    switch(day)
    {
        case 1:
            printf("星期一\\n");
            break;
        case 2:
            printf("星期二\\n");
            break;
        case 3:
            printf("星期三\\n");
            break;
        case 4:
            printf("星期四\\n");
            break;
        case 5:
            printf("星期五\\n");
            break;
        case 6:
            printf("星期六\\n");
            break;
        case 7:
            printf("星期天\\n");
            break;
    }
    return 0;
}

 但是有时候我们的需求变了:

1. 输入1-5输出的是“weekday”;
2. 输入6-7输出“weekend”

所以我们的代码就应该这样实现了:

 

#include <stdio.h>
//switch代码演示
int main()
{
    int day = 0;
    switch(day)
    {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("weekday\\n");
            break;
        case 6:
        case 7:
            printf("weekend\\n");
            break;
    }
    return 0;
} 

 break语句的实际效果是把语句列表划分为不同的部分。

 default子句:

当 switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会被执行。
所以,每个switch语句中只能出现一条default子句。

2、循环语句

  1. while
//while 语法结构
while(表达式)
    循环语句;

 while语句中的break:break在while循环中的作用:其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。

continue在while循环中的作用就是:continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

  1. for
for(表达式1;表达式2;表达式3)
    循环语句;

 表达式1 表达式1为初始化部分,用于初始化循环变量的。 表达式2 表达式2为条件判断部分,用于判断循环时候终止。 表达式3 表达式3为调整部分,用于循环条件的调整。

for循环和while的区别:可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。所以,for循环的风格更胜一筹。 for循环使用的频率也最高。

  1. do while
do
    循环语句;
while(表达式);

do语句的特点:循环至少执行一次,使用的场景有限,所以不是经常使用

 练习题一:编写代码,演示多个字符从两端移动,向中间汇聚。

#include <stdio.h>
int main()
{
    char arr1[] = "welcome to here"
    char arr2[] = "###################"
    int left = 0;
    int right = strlen(arr1)-1;
    printf("%s\\n",arr2);
    //while循环实现
    while(left<=right)
    {
        Sleep(1000)
        arr2[left]
        arr2[right]
        left++;
        right--;
        printf("%s\\n",arr2);
    }
    //for循环实现
    for (left=0, right=strlen(src)-1);left<=right;left<=right;left++,right)
    {
        Sleep(1000)
        arr2[left]
        arr2[right]
        printf( "%s\\n",target);

    }
    return 0;
}

练习二:编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。


int main()
{
    char psw[10] = "" ;
    int i = 0;
    int j = 0;
    for (i = 0; i < 3 ; ++i)
    {
        printf( "please input:");
        scanf("%s", psw);
        if (strcmp(psw, "password" ) == 0)
            break;
    }
    if (i == 3)
        printf("exit\\n");
    else
        printf( "log in\\n");
    return 0;
}

练习三:实现一个二分查找函数

int bin_search(int arr[],int left,int right,int key)
{
    int mid = 0;
    while(left<=right)
    {
        mid=(left+right)>>1;
        if(arr[mid]>key)
        {
            right=mid-1;
        }
        else if(arr[mid]<key)
        {
            left=mid+1;
        }
        else
            return mid;//返回下标
    }
    return -1;

}

以上是关于二c语言初阶之分支和循环的主要内容,如果未能解决你的问题,请参考以下文章

R语言学习——图形初阶之散点图

C语言初阶笔记分支和循环语句

perl语言初阶之从零开始--标量

SAP WM初阶之LX04 Capacity Load Utilization

SAP WM 初阶之不常用事务代码LB01 - Create TR Document

SAP WM初阶之事务代码LS22 - Change Quant