C语言_6 函数

本文介绍了C语言中的函数概念,包括函数的分类、作用、调用方式以及函数的定义。函数是C程序的基本模块,有助于代码的模块化和简化程序结构。文中详细讲解了系统函数和用户定义函数,强调了函数在减少代码冗余和提高程序可读性方面的作用。此外,还阐述了函数调用的5要素,以及如何定义和调用函数,包括形参、实参、返回值和函数声明。
摘要由CSDN通过智能技术生成

6 函数

6.1 概述
6.1.1 函数分类
C程序是由函数组成的,我们写的代码都是由主函数main()开始执行的。函数是C程序的基本模块,是用于完成特定任务的程序代码单元。
从函数定义的角度看,函数可分为系统函数和用户函数两种:

  • 系统函数,即库函数:这是由编译系统系统的,用户不必自己定义这些函数,可以直接使用它们,如我们常用的打印函数是printf()。
  • 用户定义函数:用以解决用户的专门需求。

6.1.2 函数的作用

  • 函数的作用可以省去重复代码的编写,降低代码重复率。冗余

  • 函数可以让程序更加模块化,从而有利于程序的阅读,修改和完善
    假如我们编写一个实现以下功能的程序:读入一行数字:对数字进行排序;找到它们的平均值;打印出一个柱状图。如果我们把这些操作直接写在main()里,这样可能会给用户感觉代码会有点凌乱。但,假如我们使用函数,这样可以让程序更加清晰、模块化。
    这里我们可以这么理解:程序就像公司,公司是由部门组成的,这个部门就类似于C程序的函数。默认情况下,公司就是一个大部门(只有一个部门的情况下),相当于C程序的main()函数。如果公司比较小(程序比较小),因为任务小而简单,一个部门即可(main()函数)胜任。但是,如果这个公司很大(大型应用程序),任务多而复杂,如果只是一个部门管理(相当于没有部门,没有分工),我们可想而知,公司管理、运营起来会有多混乱,不是说这样不可以运营,只是这样不完美而已,如果根据公司要求分成一个个部门(根据功能封装一个一个函数),招聘由行政部门负责,研发由技术部门负责等,这样就可以分工明确,结构清晰,方便管理,各部门之间还可以相互协调。

6.1.3 函数的调用:产生随机数
当调用函数时,需要关心5要素:

  • 头文件:包含指定的头文件
  • 函数名字:函数名字必须和头文件声明的名字一样
  • 功能:需要知道此函数能干嘛后才调用
  • 参数:参数类型要匹配
  • 返回值:根据需要接收返回值

#include<time.h>
time_t time(time_t *t);
功能:获取当前系统时间
参数:常设置为NULL
返回值:当前系统时间,time_t相当于long类型,单位为毫秒

#include<stdlib.h>
void srand(unsigned int seed);
功能:用来设置rand()产生随机数时的随机种子
参数:如果每次seed相等,rand()产生随机数相等
返回值:无

#include<stdlib.h>
int rand(void)
功能:返回一个随机数值
参数:无
返回值:随机数

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main01()
{
   
	//sand(unsigned int seed);
	//time_t timer=time(NULL);
	//srand((size_t)timer);//强制类型转换,把time.h的返回值作为srand的参数
	//添加随机数种子
	srand((size_t)time(NULL));
	//rand() 鼠标放上去 返回值为int类型
	for(int i=0;i<100;i++)
	{
   
		printf("%d\n",rand()%100);//取余%100,得到数的范围为0-99
		//rand()%101 -->0-100
		//rand()%51+50  -->50-100 %51得到0-50再+50,得到范围50-100
	}
	return 0;
}
int main02()
{
   
	//双色球 6个红球 1-32 蓝球 1-16
	srand((unsigned int)time(NULL));
	int arr[6]={
   0};
	int value=0;//接收1-32随机数
	int flag=0;//arr里有几个球
	int i,j;
	//for(int k=0;k<10;k++)//把整体代码括起来,执行10次
	//{
   
	flag=0;
	for(i=0;1<6;i++)
	{
   
		value=rand()%32+1;//%32得到0-31,再+1得到1-32
		//去重
		for(j=0;j<flag;j++)
		{
   
			if(value==arr[j])
			{
   
				i--;//保证程序执行多次,有效次数执行6次
				break;
			}
		}
	}
	if(j==flag)//表示之前所有的数都没有重复
	{
   
		arr[flag]=value;
		flag++;
	}
	for(i=0;i<6;i++)
	{
   
		printf("%d\n",arr[i]);
	}
	printf("+%d\n",
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值