C语言教学过程
----教学过程函数
在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公用选用,这样可以减少很多重复的代码编写量说明:
1.一个源程序文件由一个或多个函数组成,
C语言以源程序为单位进行编译
2.一个 C程序由一个或多个源文件组成,
对于较大的程序通常将函数和其它内容放在若干个源文件中函数
3.C程序的执行从 main函数开始,调用了用户自定义函数后仍然返回 main函数执行
4.所有的函数都是平行的,函数之间可以互相调用,但不能嵌套定义,也不能调用系统定义的 main函数函数
----函数的分类从用户的角度分:
分为:标准函数(库函数)和用户自定义函数从函数的形式分:
分为:无参函数和有参函数函数
函数定义的一般形式
1.无参函数的定义形式类型标识符 函数名 ()
{
声明变量;
函数体语句;
}
函数无参函数举例:
void display ()
{
printf(“please input sth:\n”);
}
2.有参函数的定义形式类型标识符 函数名(形参列表)
{ 声明变量;
函数体语句;
}
函数有参函数举例:
int max(int a[],int n)
{
int i,temp;
for (i=0;i<n-1;i++)
{ if (a[i]>a[i+1])
{temp=a[i];
a[i]=a[i+1];
a[i+1]=temp; }
}
return(a[n-1]);
}
函数
3.可以有“空函数”
类型说明符 函数名()
{}
即函数体内什么内容也没有,调用此函数的时候,没有任何实际作用。
往往这种函数是预留在主函数中,当要对程序扩充功能的时候可以将语句写在这一类函数中函数
函数参数和函数的值
----形式参数和实际参数在调用函数时,通常主调函数和被调函数之间有数据传递关系,这种传递可以通过带参函数来实现
1,形参:在定义函数时,函数名后面的括号中的变量称为形式参数
2.实参:在主调函数调用一个函数时,
添在被调函数括号中的变量为实参函数
关于形参和实参的说明:
1.形参在函数定义的时候指定,在该函数没有被调用的时候,形参不占用内存空间,只有当函数被调用的时候才临时分配存储空间,调用完毕后,马上释放存储空间
2.实参可以是变量,表达式或数组(数组作为实参只填入数组名即可),在调用函数时,实参把值传递给形参函数
3.在定义被调用函数时,必须在函数名后面的括号中定义参数的 类型
4.实参和形参的类型必须是相同的,或者是兼容的(整形和字符型)
5.C语言规定,实参对形参的值传递是单向的,即实参和形参不是同一个存储单元,当形参的值发生变化的时候,实参的值仍然不变函数(程序一)
#include <stdio.h>
#include <stdlib.h>
void trans(int a,int b)
{
a++;
b++;
printf("形参 a=%d,形参 b=%d\n",a,b);
}
main()
{
int a,b;
printf("please input two numbers,\n");
函数(程序一)
scanf("%d%d",&a,&b);
trans(a,b);
printf("实参 a=%d,实参 b=%d\n",a,b);
system("pause");
}
函数
函数的返回值如果希望通过函数调用使主调函数得到一个确定的值,这就是函数的返回值
1.函数的返回值可以通过 return函数取得,
如果需要调用函数返回值,则必须要
return语句,否则可以不要,一个函数中可以有多个 return语句,执行到哪个,则哪个起作用函数
ruturn语句的格式:
return ();
括号中可以是变量,也可以是表达式
2.函数的类型如果一个函数要有返回值,则一定要指定它的返回类型。
注意,return括号中的表达式或变量的类型一定要和函数的类型相同或兼容函数
3.如果被调用函数中没有 return 语句,则函数不返回一个确定的,用户希望得到的值,如果要得到一个确定的值,一定要使用 return语句
4,如果被调用函数明确的不需要返回值,
则可以在定义函数前的数据类型处写:
void(无类型 ),这样系统就保证被调用函数不返回任何值给主调函数函数(程序二)
#include <stdio.h>
#include <stdlib.h>
int maxyueshu(int x,int y)
{
int temp;
while((x%y)!=0)
{
temp=x%y;
x=y;
y=temp;
}
return(y);
函数(程序二)
}
main()
{
int a,b,result;
printf("please input two numbers:\n");
scanf("%d%d",&a,&b);
result=maxyueshu(a,b);
printf("最大公约数为,%d\n",result);
system("pause");
}
函数(程序三)
从键盘输入年,月,日,计算该日是当年的第几天
#include <stdio.h>
#include <stdlib.h>
int daynum(int year,int month,int day)
{
int i,sum=0,a[11]={31,29,31,30,31,30,31,31,30,31,30};
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
for(i=0;i<month-1;i++)
{
sum =sum +a[i];
}
函数(程序三)
sum=sum+day;
}
else
{
for(i=0;i<month-1;i++)
{
if(i==1)
{
sum=sum+a[i]-1;
continue;
}
sum=sum+a[i];
函数(程序三)
}
sum=sum+day;
}
return(sum);
}
main()
{
int year,month,day,result;
printf("please input the date(年,月,日 ):\n");
scanf("%d,%d,%d",&year,&month,&day);
result=daynum(year,month,day);
printf("该日期是当年的第 %d 天 \n",result);
函数(程序三)
system("pause");
}