bk-Mr-ji

导航

Day4——分支与循环

分支与循环语句

if条件语句:if(判断条件)…else if(条件二)…  …… else

while循环语句:  while(条件)    {  }

for循环:for(初始值;条件句;调整值)

switch分支语句:switch(常量){ case 1;  case 2;…}

do{…}while();循环语句:与while类似,但是要先执行 再判断。

 

可以相互嵌套,以找出最优解法为优

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>



int main()
{

    //分支与循环语句

    //分支语句

    //if语句;辨真假语句——>表达式为真,即执行,否则跳出执行下一条指令——>判别方式:0即为假,非0为真
    int age = 10;
    scanf("%d", &age);

    if (age < 18)
        printf("未成年,请离开\n");
    else if (age >= 18 && age < 50)
        printf("已成年,感谢使用\n");
    else                                       // else 仅 与离他 最 近的 if 匹配
        printf("请注意使用时间,以免对身体造成伤害\n");


    //判断一个数是否为奇数
    int a = 0;
    scanf("%d", &a);
    if (a % 2 == 1)
        printf("该数为奇数\n");
    else
        printf("该数为偶数\n");

    //switch语句:常用于多分支,case值决定入口,如果要单条执行需要在其后添加break; 考虑操作数不在switch中的可能,用default编辑超出时的提示信息

    int week = 0;
    scanf("%d", &week);
    if (week > 7)
        week = week % 7;
    switch (week)
    {
    case 1:
        printf("星期一");
        break;
    case 2:
        printf("星期二");
        break;
    case 3:
        printf("星期三");
        break;
    case 4:
        printf("星期四");
        break;
    case 5:
        printf("星期五");
        break;
    case 6:
        printf("星期六");
        break;
    case 7:
        printf("星期日");
        break;
    }

    //循环语句:while    for     do......while

    //while循环:表达式为真,则一直循环,否则推出;也可以break跳出循环;continue作用为跳过本次循环后面语句,重新判断是否继续进行循环;
    int ch = 0;
    while ((ch = getchar()) != EOF)         //getchar()  得到一个新字符
    {
        putchar(ch);                        //putchar()  输出一个新字符
    }

    //for循环:   for(赋初值;给条件;调整初值)
    int i = 0;
    for (i = 1; i <= 10; i++)
    {
        printf("i=%d\n", i);
    }

    //do...while循环:先执行一次后判断
    int q = 0;
    do
    {
        printf("q=%d \n", q);
        q++;
    } while (q < 10);


    //练习:
    //计算n的阶乘
    int n = 0;
    int m = 0;
    int j = 1;
    int o = 0;
    //printf("请输入N值:\n");
    //scanf("%d", &n);
        
    //练习:在一个有序数组中查找具体的某个数字;如查找7;
        int arr1[] = { 0,1,2,3,4,5,6,7,8,9 };
        //try1(遍历)
        /*int x = 0;
        for (x = 0; x < 10; x++)
        {
            arr1[x];
            printf("%d", arr1[x]);
            if (arr1[x] == 7)
            {
                printf("在第%d位", x);
                break;
            }
        }*/


        //try2(二分)
        int f = 7;             //要查找的数字
        int se = sizeof(arr1) / sizeof(arr1[0]);      //可求解数组元素个数
        int L = 0;                                    //第一位元素
        int R = se-1;                                    //最后以为元素
        
        while (L <= R)
        {
            int mind = (L + R) / 2;
            if (arr1[mind] < f)
            {
                L = mind + 1;
            }
            else if (arr1[mind] > f)
            {
                R = mind - 1;
            }
            else
            {
                printf("在第%d位", mind);
                break;
            }
            if (L > R)
            {
                printf("找不到了");
            }
        }

    return 0;
}

 

posted on 2023-02-07 23:56  拾霏  阅读(15)  评论(0编辑  收藏  举报