c语言学习第四天

函数:
什么是函数:是一段具有某项功能的代码,是管理C语言代码的最小单位,英语是function,早期被翻译成函数,但是与数学中的函数没有关系,而现在的编程语言都翻译为方法。
当一段代码需要在一个地方反复执行时,用循环语句解决即可,如果一段代码需要在不同的地方被多次执行,那么就应该把这段代码封装成函数,既方便管理也方便重复使用。
函数的分类:标准库函数、系统函数、第三方库函数、自定义函数。

标准库函数:
C语言标准委员会为C语言以函数形式提供的一些基础功能,这些函数被封装在libc.so库文件中,使用时需要包含相应的头文件,根据:函数名(参数) 即可调用。
输入输出类型的函数:stdio.h
int printf(const char *format, …);
功能:输出数据
format:提示信息+占位符+转义字符所组成的字符串字面值
…:若干个变量名
返回值:成功输出的字符个数。
int scanf(const char *format, …);
功能:输入数据
format:占位符
…:若干个变量地址
返回值:成功输入数据的变量个数
注意:在一些刷题的平台使用scanf函数时,如果不使用该函数的返回值,会产生警告,忽略即可。
练习1:完成PAT乙级真题练习的第一题。
int putchar(int c);
功能:输出一个字符
int getchar(void);
功能:输入一个字符

数学类型的函数:math.h 使用这些数学函数需要在编译时添加 -lm 参数
    double pow(double x, double y);
    功能:计算x的y次方
    double sqrt(double x);
    功能:对x进行开方
    double floor(double x);
    功能:向下取整,返回一个少于x的最大整数
    double ceil(double x);
    功能:向上取整,返回一个大于x的最小整数
字符判断类型的函数:
    int isalnum(int c);
    功能:判断字符c是否是数字或字母。
    int isalpha(int c);
    功能:判断字符c是否是字母
    int iscntrl(int c);
    功能:判断字符c是否是控制字符(0~31,127)。
    int isdigit(int c);
    功能:判断字符c是否是数字(48~57)
    int isgraph(int c);
    功能:判断字符c是否是可见字符(33~126)
    int islower(int c);
    功能:判断字符c是否是小字字母
    int isprint(int c);
    功能:判断字符c是否是可打印字符(32~126)
    int ispunct(int c);
    功能:判断字符c是否是标点符号
    int isspace(int c);
    功能:判断字符c是否是空格
    int isupper(int c);
    功能:判断字符c是否是大写字母
    int isxdigit(int c);
    功能:判断字符c是否是16进制中的字符(0~9,a~f,A~F)
字符串类型的函数:string.h
    strlen/strcat/strcpy/strcmp
内存管理类型的函数:stdlib.h
    malloc/calloc/realloc/free
时间类型的函数:time.h
    time_t time(time_t *tloc);
    功能:获取自1970年1月1日 00:00:00 到现在一共过了多少秒,格林时间+8小时=北京时间。
    struct tm *localtime(const time_t *timep);
    功能:获取当前系统时间
    struct tm {
        int tm_sec;    /* Seconds (0-60) */
        int tm_min;    /* Minutes (0-59) */
        int tm_hour;   /* Hours (0-23) */
        int tm_mday;   /* Day of the month (1-31) */
        int tm_mon;    /* Month (0-11) */
        int tm_year;   /* Year - 1900 */
        int tm_wday;   /* Day of the week (0-6, Sunday = 0) */
        int tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */
        int tm_isdst;  /* Daylight saving time */
    };
其它类型的函数:stdlib.h 
    int system(const char *command);
    功能:调用系统命令
    返回值:成功返回0,失败则会根据错误原因返回一些负值
    int abs(int j);
    功能:计算出j的绝对值
    int rand(void);
    功能:获取随机数
    注意:计算机中的随机数都是伪随机的,把是所有整数打乱顺序存储在计算机中,然后依次获取,默认是从头开始获取的,想要得到不同的随机数,需要设置获取随机数的位置。
    void srand(unsigned int seed);
    功能:设置获取随机数的位置,
    seed:每次运行时都要变化,否则产生的随机数会与上次一样,最合适的就是设置为时间。
练习2:生成10个[100,666]之间的随机数。
    rand()%(b-a)+a [a,b)
    a=100,b=667
    rand()%(667-100)+100

练习3:随机生成一注福彩双色球彩票。
    红球6个,每组从1-33中抽取一个,六个互相不重复
    蓝球1个,是从1-16中抽取一个数字,整个组成的一注双色球彩票
练习4:一家公司开年会,需要一个摇奖程序,已知该公司的工号范围是:1001~1266,需要抽出一等奖1名,二等奖3名,三等奖5名,且员工不能重复获奖。

系统函数:
操作系统以函数接口形式接口一些高级功能,这些功能包括:
内存管理、信号处理、文件IO、文件管理、进程管理、进程间通信、线程管理、线程同步、网络通信等。
注:该知识点会在Linux系统环境编程、Linux、windwos系统网络编程时讲解。

第三方库函数:
一些开源组织、个人和一些收费公司提供的第三方库,如:GTK、cJSON、MD5、XML、Qt。

自定义函数:
程序员为了更好的管理代码、减少代码冗余把一些经常使用代码封装成一个个函数。
函数声明:
返回值类型 函数名(参数列表);
1、函数声明是为了让编译器检查调用者的使用方法、提供的参数是否匹配,如果函数的定义语句出现在调用之前,函数声明可以省略。
2、以函数的功能为函数取名字,一般函数名小写,用下划线分隔单词。
3、如果不需要参数,参数列表写void,不要空着(参数空着不写代表任何参数都可以调用,容易让人产生误会,不要这样)。
4、如果函数不需要返回值则写void。
5、函数声明时参数列表中的变量名可以省略,因为编译器在检查参数时只需要类型符合即可,与名字无关。
6、如果函数之间出现互相调用的情况,则必须实现函数声明。
7、如果多文件编程,一般函数声明实现在头文件,函数定义实现在源文件。
函数定义:
返回值类型 函数名(参数列表)
{
// 函数体
return 数据;
}
函数调用:
函数名(实参);
函数执行完毕后,返回值会放置函数的调用位置,可以直接使用,也可以使用变量保存下来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值