C语言设计程序-函数
- 格式:pdf
- 大小:894.41 KB
- 文档页数:36
实验六函数一、实验目的1. 熟练掌握函数的定义、函数的类型和返回值。
2. 熟练掌握形式参数与实际参数、参数值的传递。
3. 掌握函数的嵌套调用与递归调用。
4.学会使用指向函数的指针变量。
5.了解指向指针的指针的概念及带参数的main函数。
6. 掌握局部变量和全局变量。
7. 掌握变量的存储类型。
8. 了解内部函数和外部函数。
二、实验学时:8课时三、预习知识1.标准库函数标准库函数是C系统提供的,这些库函数定义了一些基本的、常用的功能,用户可以使用这些库函数,但是在使用库函数之前需要用预编译命令# include将该库函数所在的头文件包含进来。
2.自定义函数定义函数一般有两种形式形式1:存储类型类型符函数名(类型符形参1,类型符形参2 ,… ) { 说明语句执行语句}形式2:存储类型类型符函数名(形参1,形参2 ,……)形参类型说明{ 说明语句执行语句}说明:①形参表中即使没有参数,函数名后的一对圆括号也不能省略。
②函数名前的类型符是用来说明函数返回值的数据类型(也作为函数的数据类型) 。
当函数值为整型时,类型符可以省略。
③当函数只完成某一特定操作不需要返回值时,可用类型标识符 void 说明,将函数定义成空类型。
④C 规定:不允许在一个函数内部再定义另外一个函数,即函数不允许嵌套定义。
⑤函数的存储类型:函数的存储类型有 extern 和 static 两种。
extern 型的函数除了可以被本程序中其它函数调用外,还可以被其它文件中的函数调用,这种函数称为外部函数,如果定义函数时省略 extern ,则隐含为外部函数。
static 型的函数只能被本源程序文件中的函数调用,称为内部函数(静态函数)。
3.函数的参数(1)在定义函数时函数名后面括号中的变量称为形参(形式参数),如果有两个以上形参,形参之间以逗号分隔。
形参是函数的内部变量,只在函数内部才有意义。
在未出现函数调用时,形参不占内存。
对每个形参必须指明其名字和数据类型。
实 验 报 告 七一【实验目的】1.掌握定义函数的方法;2.掌握函数实参与形参的对应关系以及“值传递”的方式; 3.掌握函数的嵌套调用和递归调用的方法;4.掌握动态变量、静态局部变量与全局变量之间的概念和使用方法;二【实验内容】【实验6-1】 编写函数max :求两个数中的较大数main 函数功能:从键盘任意输入两个数,调用max 函数,并在屏幕上输出两个数中的最大数。
【实验6-2】编写函数area :计算三角形面积main 函数: 已知各条边的长度(a,b,c,d,e,f,g ),通过调用area 函数求多边形面积【实验6-3】编写power 函数,其功能是求:n 的k 次方main 函数功能: 从键盘提示并输入n ,k 的值,调用power 函数,求得k k k n +++ 21 的值并输出【实验6-4】编写函数sort :对数组a 中的数进行从小到大排序main 函数:从键盘输入N 个数存放到数组a 中,通过调用sort 函数对数组a 中的数进行从小到大排序,并将排序后的结果输出。
三【实验过程】实验1:#include<stdio.h> int max(int a,int b) { if(a>b) return a; else return b; }void main() { int m,n,maxnum;scanf("%d %d",&m,&n);maxnum=max(m,n);printf("最大值为%d\n",maxnum);}实验2:#include<stdio.h>#include<math.h>float area(float a,float b,float c){float s;float area;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));return area;}void main(){float a,b,c,d,e,f,g,s1,s2,s3,s4;printf("请输入各条边的长度:\n");scanf("%f %f %f %f %f %f %f",&a,&b,&c,&d,&e,&f,&g);s1=area(a,b,c);s2=area(c,d,e);s3=area(e,f,g);s4=s1+s2+s3;printf("多边形面积为:%.2f\n",s4);}实验3:#include<stdio.h>int power(int n,int k){int power=n;int i;for(i=1;i<k;i++) power *= n;return power;}void main(){int s=0,i=1,n,k;printf("请分别输入n,k的值:\n");scanf("%d %d",&n,&k);for(i=1;i<=n;i++)s +=power(i, k);printf("结果=%d\n",s);}实验4:#include<stdio.h>#define N 10void sort(int a[],int n){int i,j,t;for(i=0; i<n; i++)for(j=i+1; j<n; j++){if(a[i]>a[j]){ t=a[i];a[i]=a[j];a[j]=t;}}}void main(){int a[N],i;printf("请输入十个待排序的元素:\n");for(i=0; i<N; i++)scanf("%d",&a[i]);sort(a,N);printf("排序后的结果:\n");for(i=0; i<10; i++){printf("%d ",a[i]);}printf("\n");}四【实验结论】通过这次实验,对函数的定义及其调用基本掌握,但对有些概念不是特别熟悉,还要多看书多理解。
4.2.2数学库函数C/C++程序通常用标准库函数和程序员编写的新函数写成。
各种C/C++版本都提供函数库,这些函数能够完成常用的数学计算、字符串操作、输入输出以及其它很多操作。
这些函数为程序员编写程序提供了很多方便,很多操作都可以调用标准库函数去完成,因此可以减少程序员的工作量。
除了库函数以外,程序员也可以自己定义一些函数完成某些特殊的任务。
下面以数学函数为例介绍库函数的使用,后面各章中也将逐步介绍其它库函数的使用。
使用库函数时,要根据函数的类别,用预处理命令#include将函数所在的头文件包含进来。
例如,使用数学库中的函数时,应该首先用预处理命令#include<math.h>指明要用到的数学函数的描述所在的头文件。
调用数学函数时,要给出函数名,后面是一对圆括号,括号内是使用函数所需的参数,参数可以是常量、变量或表达式。
例如,计算并打印2的3次方的语句可以写成:printf(“%7.2f”,pow(2.0,3.0));调用的数学函数pow需要两个参数,这两个参数都是double型的,返回值也是double 型的,语句执行结果为打印8.00。
数学库中所有函数的参数和返回值都是double类型的。
常用的数学函数见表4-2。
表4-2常用的数学函数(头文件math.h)函数原型函数功能函数返回值int abs(int x)求整数x的绝对值返回x的绝对值double fabs(double x)求实数x的绝对值返回实数x的绝对值double exp(double x)求e x返回e的x次方x,即lnx返回以e为底x的对数值double log(double x)求logedouble log10(double x)求logx返回以10为底x的对数值10求x y返回x的y次方double pow(double x,doubley)double cos(double x)求x的余弦值返回弧度x的余弦值double sin(double x)求x的正弦值返回弧度x的正弦值double tan(double x)求x的正切值返回弧度x的正切值double fmod(double x)求x/y的余数返回x/y的余数值double sqrt(double x)计算x的平方根返回x平方根值【例4-1】输入三角形的三边长,求三角形的面积。
实验四函数一、实验目的1.掌握函数的定义、函数的说明和调用。
2.掌握函数的参数及其传递方式,函数值的正确返回。
二、实验内容1.[目的]掌握标准库函数的说明和调用方法。
[题目内容]编写一个程序,首先显示一个菜单,然后根据用户的选择,输入数据后,执行相应的操作。
[输入]用户选择和函数自变量值[输出]如下菜单:=======MENU======1.。
sin2.。
cos3.。
pow4.。
sqrt0.。
exit==================[提示]使用标准库函数、多分支选择结构。
2.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
[题目内容]编写一个用户自定义函数,该函数有一个整型参数,函数的功能是:当这个整型数的值是偶数时,函数的返回值为0,当这个整型数的值是奇数时,返回值为1 。
编写一个程序,从键盘输入任意10个整数,分别调用用户自定义函数来判断这10个整数的奇偶性。
[输入]任意10个整数[输出]这10个整数的奇偶性[提示]在主函数中使用循环结构输入10个整数。
根据子函数的返回值输出相应的判断结果信息。
3.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
[题目内容]编写一个用户自定义函数,该函数有三个整数参数,函数的功能是:求解这三个整数的最大值,函数的返回值为三个参数的最大值。
编写一个程序,从键盘输入任意5个整数,分别两次调用用户自定义函数来求出这5个整数中的最大值。
[输入]任意5个整数[输出]这5个整数的最大值[提示]先用前三个整数调用函数,求出的最大值作为参数之一,再与另两个整数一起求出最大值即为所求。
4.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
[题目内容]nA表示从m各元素中抽出n个元素的排列的个数。
它的计算公式为:m)!(!n m m A n m -=。
编写一个用户自定义函数,该函数有一个整数参数,函数的功能是:求解这个整数的阶乘,函数的返回值为这个整数的阶乘。
c语言程序设计——标准输入函数
scanf(),printf(),均定义在文件stdio.h中,需要在程序开头做预处理声明#include<stdio.h>一、标准输入函数
scanf() 是格式化输入函数,它从标准输入设备读取输入的信息。
1.scanf()的调用格式:scanf(格式化字符串,变量地址表);
2.scanf()使用说明
①scanf()在读操作中自动忽略一个或多个空白字符
②scanf()在读操作中忽略与一个非空白字符相同的字符
③格式化说明符:%开始,后面跟一个或几个规定字符来确定输入输出的内容格式
3.变量地址表:
①变量地址表是需要读入的所有变量的地址,各变量地址之间用逗号隔开,“&”是取
地址符
②对于各个变量,类型说明符是什么,对应的格式化说明符就应该是什么,否则程序会
出现错误或者实际输入的数据与预期输入的数据不同。
③对于数组或者字符串变量,由于数组名和指针本身就是地址,所以在scanf()函数中不
需要加取地址符。
④可以在格式化字符串中的“%”和格式化规定符之间加入一个数字,表示输入读取的
最大位数。
⑤当使用多个scanf()连续输入多个字符变量时,会出现错误。
(完成一次输入时,按下
回车键,此时回车符在缓冲区,在进行下一次输入时,回车符被赋给下一个变量)解决办法:在输入函数之前加入清除函数fflush(),或者在第二个scanf();之前加一个getchar();。