c语言随机函数函数基础

|||||||||||||||||||||
您现在的位置: &
> C语言程序设计基础讲座之函数
C语言程序设计基础讲座之函数
00:03作者:出处:唯C世界责任编辑:方舟
  函数定义的一般形式  1.无参函数的一般形式   类型说明符 函数名()   {    类型说明    语句   }  其中类型说明符和函数名称为函数头。 类型说明符指明了本函数的类型,函数的类型实际上是函数返回值的类型。 该类型说明符与第二章介绍的各种说明符相同。 函数名是由用户定义的标识符,函数名后有一个空括号,其中无参数,但括号不可少。{} 中的内容称为函数体。在函数体中也有类型说明, 这是对函数体内部所用到的变量的类型说明。在很多情况下都不要求无参函数有返回值, 此时函数类型符可以写为void。  我们可以改为一个函数定义:
void Hello(){ printf ("Hello,world \n");}  这里,只把main改为Hello作为函数名,其余不变。Hello 函数是一个无参函数,当被其它函数调用时,输出Hello world字符串。  2.有参函数的一般形式   类型说明符 函数名(形式参数表)   型式参数类型说明   {    类型说明    语句   }  有参函数比无参函数多了两个内容,其一是形式参数表, 其二是形式参数类型说明。在形参表中给出的参数称为形式参数, 它们可以是各种类型的变量, 各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。 形参既然是变量,当然必须给以类型说明。例如,定义一个函数, 用于求两个数中的大数,可写为:
int max(a,b)int a,b;{if (a&b)}   第一行说明max函数是一个整型函数,其返回的函数值是一个整数。形参为a,b。第二行说明a,b均为整型量。 a,b 的具体值是由主调函数在调用时传送过来的。在{}中的函数体内, 除形参外没有使用其它变量,因此只有语句而没有变量类型说明。 上边这种定义方法称为“传统格式”。 这种格式不易于编译系统检查,从而会引起一些非常细微而且难于跟踪的错误。ANSI 的新标准中把对形参的类型说明合并到形参表中,称为“现代格式”。  例如max函数用现代格式可定义为:
int max(int a,int b){if(a&b)}  现代格式在函数定义和函数说明(后面将要介绍)时, 给出了形式参数及其类型,在编译时易于对它们进行查错, 从而保证了函数说明和定义的一致性。例1.3即采用了这种现代格式。 在max函数体中的return语句是把a(或b)的值作为函数的值返回给主调函数。有返回值函数中至少应有一个return语句。 在C程序中,一个函数的定义可以放在任意位置, 既可放在主函数main之前,也可放在main之后。例如例1.3中定义了一个max 函数,其位置在main之后, 也可以把它放在main之前。  修改后的程序如下所示。
int max(int a,int b){if(a&b)}void main(){int max(int a,int b);int x,y,z;printf("input two numbers:\n");scanf("%d%d",&x,&y);z=max(x,y);printf("maxmum=%d",z);}  现在我们可以从函数定义、 函数说明及函数调用的角度来分析整个程序,从中进一步了解函数的各种特点。程序的第1行至第5行为max函数定义。进入主函数后,因为准备调用max函数,故先对max函数进行说明(程序第8行)。函数定义和函数说明并不是一回事,在后面还要专门讨论。 可以看出函数说明与函数定义中的函数头部分相同,但是末尾要加分号。程序第12 行为调用max函数,并把x,y中的值传送给max的形参a,b。max函数执行的  结果 (a或b)将返回给变量z。最后由主函数输出z的值。  函数调用的一般形式前面已经说过,在程序中是通过对函数的调用来执行函数体的,其过程与其它语言的子程序调用相似。C语言中, 函数调用的一般形式为:   函数名(实际参数表) 对无参函数调用时则无实际参数表。 实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。 各实参之间用逗号分隔。'Next of Page在C语言中,可以用以下几种方式调用函数:  1.函数表达式  函数作表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。例如: z=max(x,y)是一个赋值表达式,把max的返回值赋予变量z。'Next of Page  2.函数语句  函数调用的一般形式加上分号即构成函数语句。例如: printf ("%D",a);scanf ("%d",&b);都是以函数语句的方式调用函数。  3.函数实参  函数作为另一个函数调用的实际参数出现。 这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。例如: printf("%d",max(x,y)); 即是把max调用的返回值又作为printf函数的实参来使用的。在函数调用中还应该注意的一个问题是求值顺序的问题。 所谓求值顺序是指对实参表中各量是自左至右使用呢,还是自右至左使用。 对此, 各系统的规定不一定相同。在3.1.3节介绍printf 函数时已提  到过,这里从函数调用的角度再强调一下。 看例5.2程序。
void main(){int i=8;printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);}  如按照从右至左的顺序求值。例5.2的运行结果应为:  8  7  7  8  如对printf语句中的++i,--i,i++,i--从左至右求值,结果应为:  9  8  8  9  应特别注意的是,无论是从左至右求值, 还是自右至左求值,其输出顺序都是不变的, 即输出顺序总是和实参表中实参的顺序相同。由于现定是自右至左求值,所以结果为8,7,7,8。上述问题如还不理解,上机一试就明白了。函数的参数和函数的值
相关搜索:
相关文章及软件
关注此文读者还看过
文章排行本周本月最近更新
12345678910
12345678910
12345678910
12345678910
Copyright (C) 1999-, All Rights Reserved 版权所有 天极网络商务联系、网站内容、合作建议:010--
渝ICP证B2-号浅谈C语言中函数入门的讲解
浅谈C语言中函数入门的讲解
摘要:本文探讨了C语言中函数的讲解内容及讲解方法,提出了提高C语言教学质量一些建议和方法。
关键词:C语言 函数&
程序& 模块&
字义& 声明& 调用
C语言是国内外广泛使用的一种计算机语言,是计算机应用人员应掌握的一种程序设计工具。C语言是一种高级语言,采用结构化的程序设计方法:自顶向下、逐步细化、模块化设计、结构化编码。程序中的模块化在C语言中通常用函数来实现,因此对于学习C语言的人员来讲,熟练掌握函数是学好C语言的关键一步。本文根据教学过程中的实践经验,提出了一种新教学方法,以促进学生对函数的熟练掌握。
在程序设计中常采用模块设计的方法,尤其是当程序比较复杂时,更有必要。在遇到一个大任务时,一般把它分为若干个小的子任务,每一个子任务就相对简单了。这些子任务就可以看作模块,每个模块完成特定的功能,按照一定的顺序执行这些模块,这个大任务就能顺利完成。在C语言中,可用函数来实现模块的功能。一个C程序可由一个主函数和若干个函数构成,由主函数调用其他函数,其他函数之间也可互相调用,同一个函数也可被一个或多个函数调用任意次。
要想掌握函数,必须掌握函数的三大操作:定义、声明和调用。
2. 函数的定义
函数定义的一般形式:
类型标识符 函数名(形式参数表列)
&&&&&&&&&&&&&
&&&&&&&&&&&&&
函数的类型标识符是函数要返回的数据的类型,函数的形式参数是函数要进行数据处理时,需要从主调函数里获取的值。例:用函数实现计算两个整数的和。
因为函数的功能是计算两个整数的和,首先要涉及到两个整数,而这两个整数不是固定的,要把这两个整数作为函数的形式参数;而最后得到的结果是这两个整数的和,要返回到主调函数,所以函数的类型标识符也应该是整型;而函数的功能则是把这两个整数相加,利用return语句返回两个整数的和。
函数的定义如下:
int add(int x,int y)
(1)函数的名字是add,函数起名时也要遵循C语言标识符的规定;
(2)函数的形式参数(简称“形参”)是x和y两个整数;
(3)函数的功能是计算x+y的值,并把它的值赋给z,然后将z值返回;
(4)因为z值是整数,所以函数的类型设置为int。
3. 函数的声明
在主调函数中一般要写上被调用函数的声明,除非被调用函数在主调函数前被定义。
函数的声明是把函数的名字、函数的类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时系统按照此进行对照检查。上面函数例子的声明就是:int
add(int x,int y);
有时在函数声明中可以不写形参名,只写形参的类型,称为函数的原型:int
add(int,int);
4. 函数的调用
对函数的调用也是函数功能的实现。函数调用的一般形式为:函数名(实参表列);
函数的实参是真正进行计算的数据,一般都有具体的数据。实参可以没有,但括弧不能省略。各实参之间用逗号间隔,实参与形参按顺序对应,一一传递数据。
例:对上述函数的调用
void main()
&&&&&&&&&&&&&
int a,b,c;
&&&&&&&&&&&&&
scanf(“%d,%d”,&a,&b);
&&&&&&&&&&&&&
c=add(a,b);
&&&&&&&&&&&&&
printf(“%d”,c);
在此程序中:
(1)a和b为实参,从键盘上输入,有固定的值;
(2)调用add(a,b)函数时,把实参的值按照顺序对应一一传递给形参,即有x=a,y=b;
(3)函数add通过形参得到实参的值后,进行运算z=x+y;
得到两个整数的和;
(4)再通过return语句将z的值返回到主调函数;
(5)主调函数通过调用add(a,b)得到z的值,并将它赋值给c,得到了两个整数a,b的和。
5. 如何编写函数
编写函数时最主要的是函数的定义,因为函数的定义决定了函数声明和函数调用的格式,而函数的定义主要掌握函数的输入、输出和处理。
(1)函数的输入,一般指函数的形参,即希望函数对哪些数据进行处理,这些数据大都要作为函数的形参而参与计算;
(2)函数的输出,一般指函数的返回值,即希望函数调用后得到的数值;
(3)函数的处理,一般函数内部所实现的功能,即通过何种算法利用形参的值得到返回值。
在编写函数时,一般要确定好函数的输入、输出和处理。
比如:利用函数计算n!的运算。
分析这个问题,可以得到:
(1)函数的输入是n,是一个整数;
(2)函数的输出是n!,也是一个整数;
(3)函数的处理,是进行1*2*3*……*n的运算得到n!的值,可用for循环进行计算。
根据上述分析,编写函数时,首先给函数起一个名字,要做到“见名知义”。可以给函数起一个名字:jiancheng;函数的形参是一个整数,可命名为n;函数的返回值是一个整数,但这个整数的值可能会很大,它的数据类型可以设置为长整型,以满足计算的要求。如此,函数的定义如下:
long jiancheng(int n)
//因此返回值为长整型数,首先定义一个长整型变量nn,来存储n!的值
//然后在程序的最后一条语句中写上return
nn语句,再写中间的语句
for(i=2;i&=n;i++) //利用for循环计算n!
&&&&&&&&&&&&&
&&&&&&&&&&&&&
函数定义好以后,就可以在其他函数中任意次地进行调用。
void main()
for(j=1;j&=10;j++)
{ printf(“%ld\n”,jiancheng(j)); }
这个函数实现的功能是在屏幕上输出1!,2!,……,10!,
jiancheng函数被调用了10次,每一次调用函数的实参都不相同。
在讲解函数的入门知识,强调函数的三大操作:定义、声明、调用,在编写函数时,提醒并强调学生注意函数的输入、输出和处理,就可使学生对于函数有充分深刻的理解,并能顺利地掌握函数的书写,从而提高C语言的教学质量。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。当前位置:
> > 查看文章
函数03 – 零基础入门学习C语言34
第七章:函数03
让编程改变世界
Change the world by program
函数的调用
函数调用的一般形式
函数调用的一般形式为: 函数名(实参表列)
如果是调用无参函数,则“实参表列”可以没有,但括弧不能省略。
如果实参表列包含多个实参,则各参数间用逗号隔开。实参与形参的个数应相等,类型应匹配。实参与形参按顺序对应,一一传递数据。
有点小东西要注意一下!
如果实参表列包括多个实参,对实参求值的顺序并不是确定的,有的系统按自左至右顺序求实参的值,有的系统则按自右至左顺序。
许多C版本是按自右而左的顺序求值,例如Tubro C++。
实参求值的顺序
&&&#include &stdio.h&
void main()
int f(int a,int b);
/* 函数声明 */
int i=2,p;
p=f(i,++i);
/* 函数调用 */
(&%dn&,p);
int f(int a,int b)
函数定义 */
if(a&b)
else if(a==b)
return(c);
函数的两种调用方式
函数调用的方式
按函数在程序中出现的位置来分,可以有以下三种函数调用方式:
1. 函数语句
把函数调用作为一个语句。如例8.1中的printstar(),这时不要求函数带回值,只要求函数完成一定的操作。
2. 函数表达式
函数出现在一个表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如:c=2*max(a,b);
3. 函数参数
函数调用作为一个函数的实参。
例如: m = max (a , max ( b , c ) ) ;
其中max ( b , c )是一次函数调用,它的值作为max另一次调用的实参。m的值是a、b、c三者中的最大者。又如: printf (“%d”, max (a,b));也是把max ( a , b )作为printf函数的一个参数。
函数调用作为函数的参数,实质上也是函数表达式形式调用的一种,因为函数的参数本来就要求是表达式形式。
对被调用函数的声明和函数原型
在一个函数中调用另一函数(即被调用函数)需要具备哪些条件呢?
1) 首先被调用的函数必须是已经存在的函数(是库函数或用户自己定义的函数)。但光有这一条件还不够。
2) 如果使用库函数,还应该在本文件开头用 #include 命令将调用有关库函数时所需用到的信息“包含”到本文件中来。
3) 如果使用用户自己定义的函数,而该函数的位置在调用它的函数(即主调函数)的后面(在同一个文件中),应该在主调函数中对被调用的函数作声明。
关键词区别一下
“声明”一词的原文是delaration,过去在许多书中把它译为“说明”。声明的作用是把函数名、函数参数的个数和参数类型等信息通知编译系统,以便在遇到函数调用时,编译系统能正确识别函数并检查调用是否合法。 (例如函数名是否正确,实参与形参的类型和个数是否一致)。
函数的“定义”和“声明”不是一回事。函数的定义是指对函数功能的确立,包括指定函数名,函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。(占内存)
而函数的声明的作用则是把函数的名字、函数类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。(不占内存)
对被调用的函数作声明
&&&#include &stdio.h&
void main()
float add( float x, float y );
float a, b, c;
scanf(&%f,%f&, &a, &b);
c = add(a, b);
(&sum is %fn&, c);
float add(float x, float y)
z = x + y;
如果 被调用函数的定义出现在主调函数之前,可以不必加以声明。
因为编译系统已经先知道了已定义函数的有关情况,会根据函数首部提供的信息对函数的调用作正确性检查。
给大家练练手感
1.自己实现pow()函数并尝试验证……
2.猜想下sqrt()函数的原理并尝试编程……(暂时只要求整型数据)
3.编写一个用来统计输入的各个数字、空白符(空格、制表符、换行符)以及所以其他字符出现次数的程序。
分别存储在变量num[10], blank, others里边并打印出来……
小甲鱼在干啥
如果您觉得小甲鱼的视频能够给您带来知识和快乐,您可以选择赞助我们,让我们可以持续为您推出更多精彩的原创编程教学^_^
手机用户打开支付宝钱包,扫描下方支付宝二维码即可:
电脑用户点击下方按钮即可跳转至支付宝转账页面:
感谢您对我们发展的支持和认可!
更多新鲜事儿
加载中……

我要回帖

更多关于 c语言字符串函数大全 的文章

 

随机推荐