C语言函数的定义与使用
讲义十三 C语言函数的定义与使用
一、函数的定义:
1、函数的定义:
返回类型 函数名(参数列表){
函数体;
}
如:
1)带返回值的定义
int sum1(int m){
int i,sum=0;
for(i=1;i
sum=sum+i;
return sum;
}
2)没有返回值
void sum2(int m){
int I,sum=0;
for(i=1;i
sum=sum+i;
s=sum;
}
2、函数的引用:
1)带返回值的引用
main(){
int n,s;
s=sum(n);
printf(“%d”,s);
getch();
}
2)没有返回值的引用
Int s;
main(){
int n;
sum2(n);
printf(“%d”,s);
getch();
}
完整的源程序:
#include
#include
int s;
int sum1(int m){
int i,sum=0;
for(i=1;i
sum=sum+i;
return sum;
}
void sum2(int m){
int i,sum=0;
for(i=1;i
sum=sum+i;
s=sum;
}
main(){
int n,s;
scanf(
s=sum1(n);
printf(
getch();
sum2(n);
printf(
getch();
}
3)定义函数的目的:将程序按功能分块,方便程序的使用、管理、阅读、和调试。
二、函数的应用
实例1:把选择排序部分用函数实现。
#include
#include
#include
long a[100],n;//a[100],n均为全局变量
void paixu(){
int i,j,min;
long t;
for(i=1;i
{min=i;
for(j=i+1;j
if (a[j]
t=a[i];a[i]=a[min];a[min]=t;
}
}
main(){
int i,j,min;
scanf(
for(i=1;i
scanf(
//选择排序
paixu();
for(i=1;i
printf(
printf(
getch();
}
实例2:两个数对调的函数实现(值传递和地址传递)
#include
#include
int a=3,b=4;
void swap1(int a,int b){//值传递,也成为单向传递
int t;
t=a;a=b;b=t;
}
void swap2(int *a,int *b){//地址传递,也成为双向传递
int t;
t=*a;*a=*b;*b=t;
}
main(){
swap1(a,b);
printf(
swap2(&a,&b);
printf(
getch();
}
三、文件的读写操作:
文件读写操作的一般格式:
FILE *fp1,fp2;
fp1=fopen(“文件名”,”r”);
fp2=fopen(“文件名”,”w”);
fscanf(fp1,”…”,…);
fprintf(fp2,”….”,….);
fclose(fp1);
fclose(fp2);
注意:文件在程序结束时,必须关闭。
实例3:从文件data.in中读入n个数并求和,将和输出到文件data.out中(两个文件均是文本文件)
#include
#include
main(){
FILE *fp1,*fp2;
fp1=fopen(
fp2=fopen(
int a[20],i,n,s=0;;
fscanf(fp1,
for (i=1;i
fscanf(fp1,
s=s+a[i];
}
printf(
getch();
fprintf(fp2,
fclose(fp1);
fclose(fp2);
}
四、练习:
1、编程打印杨辉三角形(第0层至第n(n
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……………………
参考源程序:
#include
#include
main(){
long a[30][30];
int i,j,n;
scanf(
for (i=0;i
{a[i][0]=1;
a[i][i]=1;
}
for(i=2;i
{ for (j=1;j
a[i][j]=a[i-1][j-1]+ a[i-1][j];
}
for (i=0;i
{ for(j=0;j
printf(
printf(
}
getch();
}
2、编程打印杨辉三角形(第0层至第n(n