• C语言初阶—分支和循环语句1


            

            C语句可分为以下五类:

            1.表达式语句

            2.函数调用语句

            3.控制语句

            4.复合语句

            5.空语句

            控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有9种控制语句。

            可分为以下三类:

            1.条件判断语句也叫分支语句:if语句,switch语句

            2.循环执行语句:do while语句,while语句,for语句

            3.转向语句:break语句,goto语句,continue语句,return语句

            条件判断语句默认只包含关键字后面的一条语句,如果有多条语句需要执行,需要加上{},使之成为代码块。

            大家看看这个代码输出的是什么?

    1. #include
    2. int main()
    3. {
    4. int a = 0;
    5. int b = 2;
    6. if(a == 1)
    7. if(b == 2)
    8. printf("hello");
    9. else
    10. printf("world");
    11. return 0;
    12. }

            大家答对了吗?

            其实规范的代码书写应该是这样的:

    1. #include
    2. int main()
    3. {
    4. int a = 0;
    5. int b = 2;
    6. if(a == 1)
    7. if(b == 2)
    8. printf("hello");
    9. else
    10. printf("world");
    11. return 0;
    12. }

            因为else和与其离得最近的if匹配。

            或者加上括号,更加清晰明了

    1. #include
    2. int main()
    3. {
    4. int a = 0;
    5. int b = 2;
    6. if(a == 1)
    7. {
    8. if(b == 2)
    9. printf("hello");
    10. else
    11. printf("world");
    12. }
    13. return 0;
    14. }

            良好的代码风格非常重要,可以避免一些错误而且易于阅读和理解代码。

            关于代码规范,大家可以去看看《高质量的C++编程》,附pdf链接:高质量编程指南.pdf (vrlab.org.cn)

            换种写法可以规避错误。

            判断一个数是否为奇数

    1. int main()
    2. {
    3. //判断一个数是否为奇数
    4. int a = 0;
    5. scanf("%d",&a);
    6. if(a % 2 != 0)
    7. printf("%d是奇数\n",a);
    8. else
    9. printf("%d不是奇数\n",a);
    10. return 0;
    11. }

            输出1—100之间的奇数

    1. int main()
    2. {
    3. //输出1—100之间的奇数
    4. int i = 1;
    5. while(i <= 100){
    6. if(i % 2 != 0)
    7. printf("%d\n",i);
    8. i++;
    9. }
    10. return 0;
    11. }

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

    字符也可以,因为字符存储的是ASCII码值,是整型

    1. int main()
    2. {
    3. int i = 0;
    4. scanf("%d",&i);
    5. switch(i)
    6. {
    7. case 1:
    8. printf("星期一\n");
    9. break;
    10. case 2:
    11. printf("星期二\n");
    12. break;
    13. case 3:
    14. printf("星期三\n");
    15. break;
    16. case 4:
    17. printf("星期四\n");
    18. break;
    19. case 5:
    20. printf("星期五\n");
    21. break;
    22. case 6:
    23. printf("星期六\n");
    24. break;
    25. case 7:
    26. printf("星期天\n");
    27. break;
    28. }
    29. return 0;
    30. }
    1. int main()
    2. {
    3. int i = 0;
    4. scanf("%d",&i);
    5. switch(i)
    6. {
    7. case 1:
    8. case 2:
    9. case 3:
    10. case 4:
    11. case 5:
    12. printf("weekday\n");
    13. break;
    14. case 6:
    15. case 7:
    16. printf("weekend\n");
    17. break;
    18. default:
    19. printf("输入错误\n");
    20. break;
    21. }
    22. return 0;
    23. }

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

            break用在循环里是跳出整个循环,永久终止循环continue用在循环里是跳出本次循环,直接去判断部分,进行下一次循环的判断

            不可在for循环体内修改循环变量,防止 for 循环失去控制。

            建议 for 语句的循环控制变量的取值采用“前闭后开区间”写法。

            for循环的判断部分省略意味着判断会恒成立。

            = —> 赋值,== —> 判断是否相等

            计算n的阶乘

    1. int main()
    2. {
    3. //计算n的阶乘
    4. int n = 0;
    5. int sum = 1;
    6. int i = 1;
    7. scanf("%d",&n);
    8. for(i = 1;i <= n;i++)
    9. {
    10. sum = sum * i;
    11. }
    12. printf("%d\n",sum);
    13. return 0;
    14. }

            计算1!+2!+3!+...+10!

    1. int fac(int n)
    2. {
    3. int i = 1;
    4. int sum = 1;
    5. for(i = 1;i <= n;i++)
    6. {
    7. sum = sum * i;
    8. }
    9. return sum;
    10. }
    11. int main()
    12. {
    13. //计算1!+2!+3!+...+10!
    14. int sum = 0;
    15. int i = 1;
    16. for(i = 1;i <= 10;i++)
    17. {
    18. sum = sum + fac(i);
    19. }
    20. printf("%d\n",sum);
    21. return 0;
    22. }

            上面这种办法,每次阶乘都会从1开始计算,n!=(n-1)!*n,可以把上次计算的结果拿来用,可以减少计算量。

    1. int main()
    2. {
    3. //计算1!+2!+3!+...+10!
    4. int sum = 0;
    5. int ret = 1;
    6. int i = 1;
    7. for(i = 1;i <= 10;i++)
    8. {
    9. ret = ret * i;
    10. sum = sum + ret;
    11. }
    12. printf("%d\n",sum);
    13. return 0;
    14. }
  • 相关阅读:
    2023Android白名单保活(后台定位)分享
    小程序源码:云之道知识付费独立线传版V2-2.4.9-多玩法安装简单
    谷粒商城-基础篇-Day01
    跨域访问时SameSite设置级别导致的SetCookie失败的问题分析及解决
    【数据结构】树、二叉树的概念和二叉树的顺序结构及实现
    PTA平台-2023年软件设计综合实践_5(指针及引用)
    递归求解斐波那契数列
    LitCTF2024部分wp
    Lua重回TOP 20,TIOBE 3月编程语言排行榜出炉
    【扩展阅读之编译和解释语言的区别】
  • 原文地址:https://blog.csdn.net/m0_63525059/article/details/136330988