• 假期C语言学习笔记4


    函数

    • 经过三个星期的慕课的学习大致上学会了C的一些基本知识,在经过三个星期的C语言课本实践将书上的例题,课后练习实践挨个做了一遍,终于到了函数这一章。时间过的好快呀。
    • 函数分为库函数和自定义函数;有返回值(
    • 和没有返回值
    • 变量有实参(全局变量)形参(局部变量)

    函数设计

    • 一般某种功能使用超过三次以上,考虑将其写成函数
    • 函数的设计要遵循“信息隐藏”的指导思想即把函数有关的代码和数据对程序的其他部分隐藏起来。

    基本原则

    1. 函数规模要小,尽量控制在50行代码以内,这样的函数比代码更长的函数更容易维护,出错几率更小。
    2. 函数功能要单一,不要设计有多种用途的函数
    3. 每个函数只有一个入口和一个出口,尽量不要使用全局变量向函数传递参数。
    4. 函数接口中要清楚的定义函数的行为,包括入口参数,出口参数,返回状态,异常处理等;让调用者清楚函数所能进行的操作及操作是否操作成功,应尽可能的多考虑一些可能出错的情况,定义好接口后不要轻易改动。
    5. 在函数入口处对参数的有效性进行检查。
    6. 在执行某些敏感性操作时(如除法,开方,取对数,赋值,函数参数传递等)尽可能多考虑一些出错情况,定义好函数接口后轻易不要改动。
    7. 不能认为调用一个函数总会成功,要考虑到一个函数调用失败后该如何处理。
    8. 对于与屏幕显示无关的函数,通常需要通过返回值来报告错误,因此调用函数时要检验函数的返回值,以判断函数是否调用成功;对于与屏幕显示有关的函数,函数要负责相应的错误处理。错误代码一般放在函数末尾,对于某些错误还要设计专门的错误处理函数。
    9. 由于并非所有的编译器都能捕获实参与形参不匹配的错误,所以程序设计人员在函数调用时应确保实参类型与形参类型相匹配,在程序开头进行函数原型声明,并将函数参数的类型书写完整(没有参数时用void声明)有助于编译器进行匹配检查
    10. 当函数需要返回值时,应确保函数所有分支都有返回值,函数没有返回值时用void声明

    为了更深刻理解函数的返回值问题,今天写练习的时候,特意写了下面这个代码

    #include <stdio.h>
    #include <stdlib.h>
    int pd_Ss(int n)
    {
        int i;
        for(i=1;i<n;i++)
        {
            if(n%i==0)
            {
                return i;
    
            }
    
        }
    
    }
    int main()
    {
        int m,result;
        scanf("%d",&m);
        result=pd_Ss(m);
        printf("因子有%d",result);
    
    }
    
    
    • 事实证明函数的返回值只能有一个!

    三目运算符

    • 在做数组这一章练习这一章练习题目的时候,我使用的是
    int Average(int score[],int n)
    {
        int i;
        int sum=0;
        for(i=0;i<n;i++)
        {
            sum+=score[i];
        }
        if(n>0) return sum/n;
        else return -1;
    }
    
    • 书上参考代码
    int Average(int score[],int n)
    {
        int i;
        int sum=0;
        for(i=0;i<n;i++)
        {
            sum+=score[i];
        }
        return n>0?sum/n:-1;
        
     }
    
    

    -发现了三目运算符这个好东西,在网上寻找答案。找到一个比较好理解的解释:"(a<b)?a:b"是一个"条件表达式",它是这样执行的:如果a<b为真,则表达式取a值,否则取b值.
    这相当于一个判断语句。

    感想

    • 在这段时间的踏踏实实敲代码中,明确感受到了自己的不足和自己的进步,我并不喜欢抄书上的内容,但是这一部分有几点都是我容易错误的,感觉是一个非常重要的部分需要记录下来,在电脑上再敲一遍有助于理解和记忆,所以我将《C语言程序设计》(第三版)中的这一部分抄写下来。
  • 相关阅读:
    hdu 4825 Xor Sum(01字典树模版题)
    poj 2778 DNA Sequence(ac自动机+矩阵快速幂)
    codeforces 626 G. Raffles(线段树+思维+贪心)
    hdu 2615 Division(暴力)
    hdu 6092 Rikka with Subset(多重背包)
    codeforces 688 E. The Values You Can Make(01背包+思维)
    JavaUtil smtp 邮件发送
    JavaUtil 处理Base64的图片上传
    Centos7 在apache+php7环境下 安装 Discuz!X3.4
    Centos7 安装 apache + php7.0 环境
  • 原文地址:https://www.cnblogs.com/hpl20155329/p/7194101.html
Copyright © 2020-2023  润新知