您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页C语言函数的定义与使用

C语言函数的定义与使用

来源:尚车旅游网


讲义十三 C语言函数的定义与使用

一、函数的定义:

1、函数的定义:

返回类型 函数名(参数列表){

函数体;

}

如:

1)带返回值的定义

int sum1(int m){ int i,sum=0; for(i=1;i<=m;i++) sum=sum+i; return sum; //定义sum函数

//定义变量

//循环

//累加

//取出sum函数的值

}

2)没有返回值

void sum2(int m){

int I,sum=0;

for(i=1;i<=m;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<=m;i++)

sum=sum+i;

return sum;

}

void sum2(int m){

int i,sum=0;

for(i=1;i<=m;i++)

sum=sum+i;

s=sum;

}

main(){

int n,s;

scanf(\"%d\

s=sum1(n);

printf(\"sum1(n)=%d\\n\

getch();

sum2(n);

printf(\"sum2(n)=%d\

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<=n;i++)

{min=i;

for(j=i+1;j<=n;j++)

if (a[j]t=a[i];a[i]=a[min];a[min]=t;

}

}

main(){

int i,j,min;

scanf(\"%d\

for(i=1;i<=n;i++)

scanf(\"%d\

//选择排序

paixu();

for(i=1;i<=n;i++)

printf(\"%d\\

printf(\"\\n\");

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(\"a=%d,b=%d\\n\

swap2(&a,&b);

printf(\"a=%d,b=%d\\n\

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(\"data.in\

fp2=fopen(\"data.out\

int a[20],i,n,s=0;;

fscanf(fp1,\"%d\

for (i=1;i<=n;i++){

fscanf(fp1,\"%d\

s=s+a[i];

}

printf(\"%d\\n\

getch();

fprintf(fp2,\"%d\\n\

fclose(fp1);

fclose(fp2);

}

四、练习:

1、编程打印杨辉三角形(第0层至第n(n<=20)层的所有元素值,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(\"%d\

for (i=0;i<=n;i++)

{a[i][0]=1;

a[i][i]=1;

}

for(i=2;i<=n;i++)

{ for (j=1;ja[i][j]=a[i-1][j-1]+ a[i-1][j];

}

for (i=0;i<=n;i++)

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

printf(\"%6ld\j]);

printf(\"\\n\");

}

getch();

}

2、编程打印杨辉三角形(第0层至第n(n<=20)层的所有元素值),n从文件data.in中输入,结果输出到文件out.txt中。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务