分文件编程好处
将main函数和其他功能性函数放在不同的文件中,分模块的编程思想,分工明确,查找错误比较容易,责任可以划分清楚,程序也方便调试,并且主函数比较简洁。
将文件从同一目录下的另一个文件夹拷贝到当前文件夹
cp ../together.c(文件名称) .
这个代码是没有分文件编程的
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void initscores(int datas[],int size)
{
int i;
for(i=0;i<size;i++){
printf("qing shu ru di%dge xue sheng de fen shu :\n",i+1);
scanf("%d",&datas[i]);
if(datas[i]>100||datas[i]<0){
printf("input error\n");
system("pause");
exit(-1);
}
}
}
void printscores(int datas[],int size)
{
int i;
for(i=0;i<size;i++){
printf("di %dge xue sheng de cheng ji shi :%d\n",i+1,datas[i]);
}
}
int findmax(int datas[],int size)
{
int i;
int max;
max=datas[0];
for(i=0;i<size;i++){
if(datas[i]>max)
max=datas[i];
}
return max;
}
int findmin(int datas[],int size)
{
int i;
int min;
min=datas[0];
for(i=0;i<size;i++){
if(datas[i]<min)
min=datas[i];
}
return min;
}
int findavagerge(int scores[],int size)
{
int sum=0;
int i;
float avagerge;
for(i=0;i<size;i++){
sum+=scores[i];
}
avagerge=(float)sum/10;
return avagerge;
}
int printret(int max,int min,float avagerge)
{
printf("zui gao fen :%d\n",max);
printf("zui di fen ¿%d\n",min);
printf("ping jun fen:%f\n",avagerge);
}
int main()
{
int scores[10];
int len;
int max;
int min;
float avagerge;
len=sizeof(scores)/sizeof(scores[1]);
initscores(scores,len);
printscores(scores,len);
max=findmax(scores,len);
min=findmin(scores,len);
avagerge=findavagerge(scores,len);
printret(max,min,avagerge);
system("pause");
return 0;
}
主函数部分代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include"togetherfunc1.h"
int main()
{
int scores[10];
int len;
int max;
int min;
float avagerge;
len=sizeof(scores)/sizeof(scores[1]);
initscores(scores,len);
printscores(scores,len);
max=findmax(scores,len);
min=findmin(scores,len);
avagerge=findavagerge(scores,len);
printret(max,min,avagerge);
system("pause");
return 0;
}
// < >这个符号表示gcc在编译的时候默认的在/usr/include 或 /usr/local/include 下找这些头文件
" " 这符号表示优先从当前路径去找(当前的文件夹),然后再从/usr/include 下去找,找不到就报错。
功能性函数代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void initscores(int datas[],int size)
{
int i;
for(i=0;i<size;i++){
printf("qing shu ru di%dge xue sheng de fen shu :\n",i+1);
scanf("%d",&datas[i]);
if(datas[i]>100||datas[i]<0){
printf("input error\n");
system("pause");
exit(-1);
}
}
}
void printscores(int datas[],int size)
{
int i;
for(i=0;i<size;i++){
printf("di %dge xue sheng de cheng ji shi :%d\n",i+1,datas[i]);
}
}
int findmax(int datas[],int size)
{
int i;
int max;
max=datas[0];
for(i=0;i<size;i++){
if(datas[i]>max)
max=datas[i];
}
return max;
}
int findmin(int datas[],int size)
{
int i;
int min;
min=datas[0];
for(i=0;i<size;i++){
if(datas[i]<min)
min=datas[i];
}
return min;
}
int findavagerge(int scores[],int size)
{
int sum=0;
int i;
float avagerge;
for(i=0;i<size;i++){
sum+=scores[i];
}
avagerge=(float)sum/10;
return avagerge;
}
int printret(int max,int min,float avagerge)
{
printf("zui gao fen :%d\n",max);
printf("zui di fen ¿%d\n",min);
printf("ping jun fen:%f\n",avagerge);
}
.h 文件代码
void initscores(int datas[],int size);
void printscores(int datas[],int size);
int findmax(int datas[],int size);
int findmin(int datas[],int size);
int findavagerge(int scores[],int size);
int printret(int max,int min,float avagerge);
//.h 是将函数名拿来装在这个文件中的。
如何编译
gcc togetherfunc1.c togetherfunc.c
//这两个文件顺序可以调换
在/usr/include下查找文件
ls /usr/include
ls /usr/include |grep stdio(要查找的文件)
| 表示管道 过滤查找自己想要的文件