C语言-分支和循环

代码规范

  1. 变量命名(有意义,规范 例如:first_time、FirstTime)
  2. 空格,空行,换行
  3. 常量写在==等符号左边防止有错仍然运行例如:(5 == num)写成(num = 5)

C语言语句分为五类:

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句

控制语句 用于控制程序执行的流程,以实现程序的各种结构方式

  1. 条件判断: if switch
  2. 循环: do...while ,while,for
  3. 转向 :break,go...to,continue,return

分支语句

if...else语句

如果表达式的结果为真,则语句执行。0表示假,非0表示真。

#include "stdio.h"

int main(){
    int age = 19;
    scanf("%d",&age);
    if(age < 18){ //条件为真打印
        printf("少年\n");
    } else if(age >= 18 && age < 28){
        printf("青年\n");
    } else if (age >= 28 && age < 60){
        printf("中年\n");
    } else{
        printf("老年\n");
    }
    return 0;
}

悬空else 

代码不打印内容,因为a为0不为1条件为假不进入代码块,else看似和第一个if匹配,实则和最近的if匹配也就是b==2的if,所以要加大括号规范编码

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}
 switch语句

常用于多分支的情况,整型表达式(常量 字符);switch允许嵌套,其中的break只能跳出自己的switch语句。

switch(整型表达式)
{
    语句项;//case表达式 
}
#include "stdio.h"

int main(){
    int day = 0;
    scanf("%d",&day);

    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;
        default:
            printf("输入有误\n");
    }
    return 0;
}

循环语句

while循环

while循环中的:break用于永久的终止循环,continue用于跳过本次循环后面的代码(也就是本次循环中continue后边的代码不会再执行),直接去判断部分,进行下一次循环

while(表达式)
 循环语句;
#include "stdio.h"

int main(){
    char ch = '\n';
    while ((ch = getwchar()) != EOF){
        if (ch < '0' || ch > '9'){
            continue;
        }
        putchar(ch);
    }
}
for循环
for(表达式1; 表达式2; 表达式3)
 循环语句;

表达式1:初始化 、表达式2:条件判断部分 、 表达式3:调整部分

#include "stdio.h"
int main(){
    int i = 0;
    for (int i = 0; i < 10; ++i) {
        if (i == 5){
            continue;
        }
        printf("%d\n",i);
    }
    return 0;
}

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

  1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
  2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。(例如:i=0;i<10;i++)
do...while循环

至少执行一次

do
 循环语句;
while(表达式);
#include "stdio.h"

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

练习:

1.计算 n的阶乘。
int main(){
    int n = 0;
    int i = 1;
    int ret = 1;
    scanf("%d",&n);
    for (int i = n; i > 0; i--) {
        ret = ret * i;
    }
    printf("%d\n",ret);
    return 0;
}
2.在一个有序数组中查找具体的某个数字n。(二分查找法)
#include "stdio.h"
//二分查找
int main(){
    int arr[] = {1,2,3,4,5,6,7,8,9};
    int k = 7;
    int sz = sizeof(arr)/sizeof(arr[0]);
    int right = sz-1;
    int left = 0;
    while (left <= right){
        int mid = (left + right) / 2;
        if(arr[mid] < k){
            left = mid +1;
        }else if(arr[mid] > k){
            right = mid-1;
        } else{
            printf("下标是: %d\n",mid);
            break;
        }
    }
    if(left > right){
        printf("找不到");
    }
    return 0;
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值