C语言之函数

函数:为了完成某些功能而编写若干行代码的集合。可以供同一个程序或其他程序调用。

    函数是C语言的基本组成单位。

函数的优点:代码更加简洁,易于维护,可以提高代码的重用性。

如何自定义函数:

返回值类型    函数名称 (参数)

{

  //函数体;

  返回值;

}

生活案例:做火腿

火腿类型    做火腿(生猪)

{

杀猪;

脱毛;

剁肉;

加入淀粉;

加入三聚氰胺;

  …..

  打包;

  出火腿;

}

注意:

1.返回值类型:可以有返回值,也可以没有返回值(void)

2.函数名:为函数起一个名称,类似于人名(简单说就为函数起个名称,方便后期调用)

3.参数:原材料

C语言中的函数分为内置函数和自定函数

常见的内置函数:


内置函数


头文件


用途


double sqrt(double x)


math.h


计算x的平方根 


double pow(double x, double y)


计算xy次幂 


double ceil(double x)


求不小于x的最小整数,并以double形式显示 


double floor(double x)


求不大于x的最大整数,并以double形式显示 


int toupper(int x)


ctype.h


如果x为小写字母,则返回对应的大写字母 


int tolower(int x)


如果x为大写字母,则返回对应的小写字母 


int rand(void)


stdlib.h


产生一个随机数 


void exit(int retval)


终止程序 

示例:

//计算1~10平方根和立方

    int i;
    double square,power;
    for(i=1;i<=10;i++){
        square=sqrt(i); //使用sqrt(x)函数计算x平方根
        power=pow(i,3); //使用pow(x,y)函数计算x的y次方

        printf("%d的平方根是%.2lf,立方是%.2lf\n",i,square,power); //.2lf:double类型精确到小数点后两位
    }

floor()和ceil()函数:

//floor(x);--->不大于x的最大整数,不会四舍五入
printf("floor(12.1)=%f\n",floor(12.1));//12
printf("floor(-12.1)=%f\n",floor(-12.1));//-13

//ceil(x);--->不小于x的最小整数,不会四舍五入
printf("ceil(12.1)=%f\n",ceil(12.1));//13
printf("ceil(-12.1)=%f\n",ceil(-12.1));//-12

获取随机数:

srand((unsigned)time(NULL)); //设置随机种子,time(NULL):获取当前时间距1970-01-01 00:00:00的秒数

for(i=0;i<10;i++){

// printf("%d\t",rand());//rand():伪随机数;产生的随机数0~32767之间

//产生一个0~99之间的随机数
printf("%d\t",rand()%100);
}
时间: 2024-11-05 10:48:34

C语言之函数的相关文章

[C/C++基础] C语言常用函数sprintf和snprintf的使用方法

Sprintf 函数声明:int sprintf(char *buffer, const char *format [, argument1, argument2, -]) 用途:将一段数据写入以地址buffer开始的字符串缓冲区 所属库文件: <stdio.h> 参数:(1)buffer,将要写入数据的起始地址:(2)format,写入数据的格式:(3)argument:要写的数据,可以是任何格式的. 返回值:实际写入的字符串长度 说明:此函数需要注意缓冲区buffer溢出,要为写入的arg

C语言strlen()函数用法

C语言strlen()函数:返回字符串的长度 头文件:#include <string.h> strlen()函数用来计算字符串的长度,其原型为:unsigned int strlen (char *s);  s为指定的字符串 eg: #include<stdio.h> #include<string.h> int main() { char *str1 = "http://see.xidian.edu.cn/cpp/u/shipin/"; char

C语言_函数

函数 1.函数构成 int main(int argc, const char * argv[]) { // insert code here... return 0; } 返回值类型  函数名(函数参数) { 函数体语句: return 返回值: } 2.函数分类 1)标准函数 由官方或第三方库提供的函数,可以直接调用,无需实现: 2)自定义函数 由程序员自己实现的函数: 3.编写函数的步骤 1)声明函数 写在头文件 2)实现函数 写在原文件 3)调用函数 C阶段,一般在主函数调用 [注意事项

C语言学习-函数和递归函数

C源程序是由函数组成的,有且只有一个主函数(main()函数). 一.函数 1.自定义函数的书写格式: 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…) { 函数体 }例如: 1 include <stdio.h> 2 void test(); 3 4 int main() { 5 test(); 6 return 0; 7 } 8 9 void test() { 10 11 printf("hello world!"); 12 13 } 2.定义函数的

C语言基础 函数--思想的体现

1.C语言由函数组成,main函数又称主函数,是程序的入口. 1.1函数定义:    1.1.1    格式:        返回值类型 函数名(形式参数列表)        {            函数体        }     1.1.2    函数名:  不允许相同 1.1.3    参数注意点:        1.形式参数: 定义函数时函数名后面括号中的参数,简称形参        2.实际参数: 调用函数时传入的具体数据,简称实参        3.实参个数必须等于形参个数    

C语言中函数和指针的参数传递

最近写二叉树的数据结构实验,想用一个没有返回值的函数来创建一个树,发现这个树就是建立不起来,那么我就用这个例子讨论一下c语言中指针作为形参的函数中传递中隐藏的东西. 大家知道C++中有引用的概念,两个数据引用同一个数据,那么更改任意的一个都相当于更改了本体,那么另一个数据所对应的值也会改变,可是C中是没有这个概念的.所以就产生了一些东西.和我们本来想的有差别. 一.明确C语言中函数的入口: C语言中函数的形参负责接收外部数据,那么数据究竟怎么进入函数的呢,其实我们在函数体内操作的形参只是传递进来

从头开始-05.C语言中函数

函数: 完成特定功能代码段 特点:函数只有调用的时候才会执行 定义格式:返回值类型 函数名称(形参类型 形参名称,...){ 语句; ...  } 函数参数 形式参数:在定义函数的时候,函数名后面小括号中的参数 实际参数:在函数调用的时候,函数名后面小括号中的参数 注意点: 形参与实参必须一一对应 实参与形参的类型必须一致 基本数据类型作为函数参数传递是值传递 组作为函数参数传递是地址传递 指针作为函数参数传递是地址传递 结构体作为函数参数传递是值传递 返回值: return 作用: 1.结束函

C语言之函数可变参数

先上一段代码: #include<cstdarg> #include<iostream> #include<string> using namespace std; void error(char* format,...){//至少要有一个参数,后边的...表示参数可变 va_list ap; int d,flag; char c, *s; va_start(ap,*format);//从args参数开始后面都是可变参数,va_start,va_end都为宏 while

Go语言之函数方法

在Go语言中,函数和方法不太一样,有明确的概念区分.在其他语言中,比如Java,一般来说,函数就是方法,方法就是函数.但是在Go语言中,函数是指不属于任何结构体.类型的方法.也就是说,函数是没有接收者的:而方法是有接收者的.我们说的方法要么是属于一个结构体的,要么属于一个新定义的类型的. 函数 函数和方法,虽然概念不同,但是定义非常相似.函数的定义声明没有接收者,所以我们直接在Go文件里.Go包之下定义声明即可. func main() {     sum := add(1, 2)     fm

【C语言】函数指针与回调函数

在C语言中:指针是C语言的特色,有着各种各样的指针,普通的变量指针,常量指针,数组指针,指针数组,函数指针,指针函数.我们就讲一下函数指针与回调函数吧 首先关于函数指针,其实很简单. 对于一个函数指针来说,顾名思义,就是一个指向函数的指针,需要知道的是,对于指针而言,他总是存储一块地址,地址里面有着一个,一组,或者一块数据,在函数中,函数的存储是放在代码段的,每个函数都有着一个函数首地址,调用了这个地址相当于调用的这个函数. 具体的可以观看我的这篇博客,其中就通过在内存阶段改变栈帧返回值,成功的