c语言函数实战指南:库函数与自定义函数用法,附学生成绩管理案例

admin C语言 4


刚学 C 语言的朋友,是不是写代码时总觉得费劲?比如算个平均分要写一堆重复的代码,输个数据每次都要敲 scanf,改起来还特别麻烦。其实我也这样,后来才发现,用好函数能省不少事。今天就聊聊库函数和自定义函数怎么用,最后带个学生成绩管理的例子,新手小白跟着学,保准能明白。
先说库函数吧,这东西就像现成的工具,C 语言自带的,不用自己写就能用。比如我们常用的 printf,用来打印东西的,还有 scanf,用来输入的,这些都是库函数。那为啥要用库函数?你想啊,要是每次打印都得自己写代码操作屏幕,多费劲,库函数就把这些麻烦事做好了,我们拿来直接用就行。
常用的库函数有哪些呢?给新手列几个最常用的:
  • printf:输出信息,头文件要加 #include ,用法比如 printf ("成绩是:% d", score);
  • scanf:输入信息,同样要加 stdio.h,用法 scanf ("% d", &score); 注意变量前要加 &
  • strlen:算字符串长度,头文件 ,比如 strlen ("hello") 会返回 5
  • sqrt:算平方根,头文件 ,比如 sqrt (16) 会返回 4.0

可能有人问,怎么知道用哪个库函数?其实不用死记,用到的时候查资料就行。菜鸟教程上有个库函数列表,分类很清楚,新手照着查就行。但要注意,用库函数必须加对相应的头文件,不然编译器会报错。我当初用 sqrt 的时候,没加 math.h,结果编译半天没通过,后来才知道少了头文件。


再说说自定义函数,这个就是自己造的工具。库函数虽然方便,但解决不了所有问题,比如你想算学生的平均分,库函数里可没有现成的,这时候就得自己写个函数。
自定义函数怎么写?格式很简单:返回值类型 函数名 (参数) { 代码 }。比如写个算平均分的函数:
float getAverage(int scores[], int n) {
int sum = 0;
for(int i=0; isum += scores[i];
}
return sum / (float)n;
}

这里 float 是返回值类型(因为平均分可能是小数),getAverage 是函数名,参数是成绩数组和人数,里面就是具体的计算。调用的时候,直接写 getAverage (scores, 5) 就能得到 5 个学生的平均分。
有人会问,参数怎么设才合理?其实就看你需要啥数据。比如算平均分需要成绩和人数,那就把这两个设为参数。返回值呢?如果函数要给出一个结果(比如平均分),就设对应的类型;如果只是做件事(比如打印成绩),就用 void,不用返回值。


下面对比下库函数和自定义函数,新手可能容易混:
类型特点优点缺点
库函数系统自带,无需自己编写节省时间,稳定性高功能固定,不能随意修改
自定义函数自己编写,按需设计灵活,能解决特定问题需要自己调试,可能有 bug

其实实战中,这俩往往一起用。比如做个学生成绩管理程序,输入成绩用 scanf(库函数),算平均分用自己写的 getAverage(自定义函数),打印结果用 printf(库函数),配合起来特别方便。


就拿学生成绩管理案例来说说吧,这个程序主要做三件事:输入 5 个学生的成绩,算平均分,找出最高分。
第一步,输入成绩。用 scanf 库函数,写个自定义函数 inputScores,专门负责输入:
void inputScores (int scores [], int n) {
for (int i=0; iprintf ("请输入第 % d 个学生成绩:", i+1);
scanf ("% d", &scores [i]);
}
}

第二步,算平均分,就用前面写的 getAverage 函数。
第三步,找最高分,再写个自定义函数 getMax:
int getMax(int scores[], int n) {
int max = scores[0];
for(int i=1; iif(scores[i] > max) {
max = scores[i];
}
}
return max;
}

最后在 main 函数里把这些串起来:
int main () {
int scores [5];
inputScores (scores, 5); // 调用自定义函数输入
float avg = getAverage (scores, 5); // 调用自定义函数算平均分
int max = getMax (scores, 5); // 调用自定义函数找最高分
printf ("平均分:%.1f\n", avg); // 用库函数打印
printf ("最高分:% d\n", max);
return 0;
}
你看,这样一来,代码是不是清楚多了?每个函数干一件事,改的时候也方便,比如想改输入提示,只需要改 inputScores 里的 printf 就行。
我当初写这个程序的时候,一开始没拆分函数,全堆在 main 里,后来想加个排序功能,改得头都大了。拆成函数后,再想加功能,直接加个新函数就行,清爽多了。
最后说点我的看法,新手学函数,别觉得复杂。库函数就像借别人的工具,先用起来再说;自定义函数就像自己做工具,刚开始可能做得不好,但多做几个就顺手了。实战中多写写类似成绩管理这样的小案例,用着用着就明白函数的好处了。记住,函数的核心就是 “分工”,让每个部分干好自己的事,代码自然就不难写了。

标签: getAverage 字符串

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~