崔孝鳳
摘要:對于C語言的初學(xué)者來說,用戶自定義函數(shù)既是重點(diǎn)又是難點(diǎn),本文從初學(xué)者的角度出發(fā)由簡單到復(fù)雜依次設(shè)計了4個案例,通過這4個案例依次清楚描述了4種不同形式的C語言用戶自定義函數(shù)的定義及調(diào)用方法。
關(guān)鍵詞:C語言;函數(shù);案例教學(xué)
中圖分類號:G64 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)09-0136-02
1 引言
對于C語言的初學(xué)者來說,用戶自定義函數(shù)既是重點(diǎn)又是難點(diǎn),如何用淺顯易懂的程序案例幫助初學(xué)者理解自定義函數(shù)的參數(shù)的各種使用方法是擺在每一位C語言任課教師面前的一項艱巨的任務(wù)。本文從初學(xué)者的角度出發(fā),遵從由易到難的自然學(xué)習(xí)規(guī)律,設(shè)計出4個案例,依次演示了4種函數(shù)參數(shù)的使用方法。
2 具體案例
2.1 無參函數(shù)的定義和調(diào)用
【例題1】請設(shè)計一個求和函數(shù)qh,功能是計算兩個任意整數(shù)之和,這任意的兩個整數(shù)在函數(shù)qh中輸入,結(jié)果也在函數(shù)qh中輸出,在主函數(shù)main中調(diào)用求和函數(shù)qh。
算法分析:因?yàn)闆]有參數(shù),所以把數(shù)據(jù)的輸入及結(jié)果輸出都放在求和函數(shù)qh中完成,主函數(shù)只是完成函數(shù)調(diào)用。
源代碼如下:
#include
void qh()
{int a,b,s;
printf("請輸入任意的兩個整數(shù):\n");
scanf("%d%d",&a,&b);
s=a+b;
printf("%d+%d=%d\n",a,b,s);
return;
}
int main()
{qh();//調(diào)用函數(shù)qh,沒有參數(shù)
return 0;
}
2.2 有參函數(shù)的定義和調(diào)用—單向的值傳遞
【例題2】請設(shè)計一個求和函數(shù)qh,功能是計算兩個任意整數(shù)之和,這任意的兩個整數(shù)通過函數(shù)qh的兩個參數(shù)接收,結(jié)果由return語句返回主函數(shù),在主函數(shù)main中輸入任意的兩個整數(shù),調(diào)用求和函數(shù)qh并輸出結(jié)果。
算法分析:在求和函數(shù)qh中設(shè)計兩個整型的形參,用來接收主調(diào)函數(shù)傳遞過來的兩個整數(shù),在求和函數(shù)qh中完成計算后用return語句將結(jié)果返回,在主函數(shù)main中完成數(shù)據(jù)的輸入、函數(shù)調(diào)用及結(jié)果輸出。
源代碼如下:
#include
int qh(int a,int b)
{int s;
s=a+b;
return s;
}
int main()
{int a,b,s;
printf("請輸入任意的兩個整數(shù):\n");
scanf("%d%d",&a,&b);
s=qh(a,b);//調(diào)用函數(shù)qh,有兩個參數(shù)
printf("%d+%d=%d\n",a,b,s);
return 0;
}
2.3 有參函數(shù)的定義和調(diào)用—雙向的地址傳遞,結(jié)果仍然通過return語句返回
【例題3】請設(shè)計一個求和函數(shù)qh,功能是計算兩個任意整數(shù)之和,這任意的兩個整數(shù)通過函數(shù)qh的1個數(shù)組參數(shù)接收,結(jié)果由return語句返回主函數(shù),在主函數(shù)main中輸入任意的兩個整數(shù),調(diào)用求和函數(shù)qh并輸出結(jié)果。
算法分析:在求和函數(shù)qh中設(shè)計1個整型的數(shù)組形參,用來接收主調(diào)函數(shù)傳遞過來的數(shù)組首地址,在求和函數(shù)qh中完成計算后用return語句將結(jié)果返回,在主函數(shù)main中完成數(shù)據(jù)的輸入、函數(shù)調(diào)用及結(jié)果輸出。
源代碼如下:
//形參只有一個數(shù)組名
#include
int qh(int a[])
{int s;
s=a[0]+a[1];
return s;
}
int main()
{int a[2],s;
printf("請輸入任意的兩個整數(shù):\n");
scanf("%d%d",&a[0],&a[1]);
s=qh(a);//調(diào)用函數(shù)qh,數(shù)組名作實(shí)參
printf("%d+%d=%d\n",a[0],a[1],s);
return 0;
}
2.4有參函數(shù)的定義和調(diào)用—雙向的地址傳遞,通過數(shù)組元素完成數(shù)據(jù)的傳遞
【例題4】請設(shè)計一個求和函數(shù)qh,功能是計算任意兩個整數(shù)之和,這任意的兩個整數(shù)通過函數(shù)qh的1個數(shù)組參數(shù)接收,結(jié)果由數(shù)組參數(shù)的第3個數(shù)組元素返回主函數(shù),在主函數(shù)main中輸入任意的兩個整數(shù),調(diào)用求和函數(shù)qh并輸出結(jié)果。
算法分析:在求和函數(shù)qh中設(shè)計1個整型的數(shù)組形參,用來接收主調(diào)函數(shù)傳遞過來的數(shù)組首地址,在求和函數(shù)qh中將計算結(jié)果存放在第3個數(shù)組元素中帶回主函數(shù),在主函數(shù)main中完成數(shù)據(jù)的輸入、函數(shù)調(diào)用及結(jié)果輸出。
源代碼如下:
//形參只有一個數(shù)組名,不包含數(shù)據(jù)個數(shù)n,也是可以的
#include
int qh(int a[])
{ a[2]=a[0]+a[1];
}
int main()
{int a[3],s;
printf("請輸入任意的兩個整數(shù):\n");
scanf("%d%d",&a[0],&a[1]);
qh(a);//調(diào)用函數(shù)qh,有1個參數(shù)
printf("%d+%d=%d\n",a[0],a[1],a[2]);
return 0;
}
【說明】程序也可以如下所示:
//形參包含一個數(shù)組名和數(shù)據(jù)個數(shù)n,也是可以的
#include
int qh(int a[],int n)
{ a[2]=a[0]+a[1];
}
int main()
{int a[3],s;
printf("請輸入任意的兩個整數(shù):\n");
scanf("%d%d",&a[0],&a[1]);
qh(a,3);//調(diào)用函數(shù)qh,有2個參數(shù)
printf("%d+%d=%d\n",a[0],a[1],a[2]);
return 0;
}
3 結(jié)束語
以上4個案例具體描述了C語言用戶自定義函數(shù)的4種參數(shù)的定義方式,對初學(xué)者有極好的引導(dǎo)作用,在此基礎(chǔ)上還可以很容易地實(shí)現(xiàn)通過函數(shù)調(diào)用完成任意n個數(shù)的求和等的計算。
參考文獻(xiàn):
[1] 許金蘭,徐崗. “興趣驅(qū)動+案例教學(xué)模式”在C語言教學(xué)中的應(yīng)用[J]. 中國信息技術(shù)教育,2018-03-23.
[2] 劉芝怡. “項目引領(lǐng),任務(wù)驅(qū)動,案例主導(dǎo)”的 C 語言程序設(shè)計教學(xué)改革[J]. 教育現(xiàn)代化,2018-02-12.
[3] 王亮.《C 語言程序設(shè)計》循環(huán)結(jié)構(gòu)教學(xué)案例研究[J]. 科技視界, 2018-01-05.
[4] 陳廣群,胡曉蓉,來敏健. 基于計算思維的C 語言程序設(shè)計課程教學(xué)初探[J]. 電腦知識與技術(shù), 2018,14(4).
[5] 黃金國. 基于項目化教學(xué)的“C 語言程序設(shè)計”課程改革研究[J]. 吉林工程技術(shù)師范學(xué)院學(xué)報, 2018,34(2).
[6] 季麗琴. 以“編、改、調(diào)”三部曲改革C 語言實(shí)踐教學(xué)[J]. 計算機(jī)教育,2018-04-10.
【通聯(lián)編輯:王力】