国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于C語言的數(shù)學(xué)菜單的設(shè)計與實現(xiàn)

2021-12-17 00:50嚴宇
電腦知識與技術(shù) 2021年33期
關(guān)鍵詞:C語言

嚴宇

摘要:函數(shù)的定義與調(diào)用是C語言初學(xué)者的一個難點,用已知的數(shù)學(xué)知識去輔助理解未知的C語言函數(shù)知識,可以加速對新知識自定義C語言函數(shù)的學(xué)習(xí)過程,新知識可以反過來提升老知識的泛化能力。運用C語言編寫了實現(xiàn)數(shù)學(xué)功能的三個函數(shù),由易到難,從簡單到復(fù)雜地定義和調(diào)用函數(shù),取得較好的學(xué)習(xí)效果。

關(guān)鍵詞: C語言; 函數(shù)定義;函數(shù)調(diào)用; 遷移學(xué)習(xí)法

中圖分類號:TP311? ? ? 文獻標識碼:A

文章編號:1009-3044(2021)33-0063-02

開放科學(xué)(資源服務(wù))標識碼(OSID):

Design and Realization of Math Menu Based on C Language Application of case-when in MySQL

YAN Yu

(Henan Normal University, Xinxiang 453007 China)

Abstract: Function definition and call is a difficult point for beginners of C language. Using known mathematical knowledge to assist in understanding unknown C language function knowledge can accelerate the learning process of customizing C language function with new knowledge, and the new knowledge can in turn improve the generalization ability of the old knowledge. Using C language to write three functions to realize the mathematical function, from easy to difficult, from simple to complex to define and call the function, get better learning effect.

Key words:C language; function definition;function call; transfer learning method

1 問題提出

C語言是多數(shù)專業(yè)的大一新生必學(xué)的一門專業(yè)基礎(chǔ)課,學(xué)習(xí)目的是掌握程序設(shè)計的基本方法,會用計算機解決本專業(yè)的實際問題。C 語言是函數(shù)的語言,自定義函數(shù)的定義與調(diào)用是C語言初學(xué)者的一個重難點,很多初學(xué)者學(xué)習(xí)函數(shù)時非常吃力,不能靈活應(yīng)用函數(shù)進行程序設(shè)計。

為了突破C語言函數(shù)學(xué)習(xí)這一難點,培養(yǎng)正確定義函數(shù)和調(diào)用函數(shù)解決實際問題的能力,筆者采用了遷移學(xué)習(xí)法,用已知的數(shù)學(xué)知識去輔助理解未知的C語言函數(shù)知識,可以加速對新知識自定義C語言函數(shù)的學(xué)習(xí)過程,新知識可以反過來提升老知識的泛化能力。解除了學(xué)習(xí)C語言函數(shù)的疑惑,取得較好的學(xué)習(xí)效果。

2 實現(xiàn)方案

實踐表明,初學(xué)者不能正確運用函數(shù)解決實際問題的原因主要有兩個,一方面是不能合理地確定參數(shù)的個數(shù)和類型,即正確定義函數(shù);另一方面是不能適當(dāng)?shù)剡x取實參,正確調(diào)用函數(shù)。為了破解這些學(xué)習(xí)難點,以及對函數(shù)的定義和調(diào)用做到舉一反三的考慮,也為了方便日常的數(shù)學(xué)計算,運用C語言編寫了實現(xiàn)數(shù)學(xué)功能的三個函數(shù),并且以菜單的形式進行展現(xiàn)和調(diào)用。

2.1 菜單設(shè)計

先確定一個主菜單,運用多路選擇的switch語句設(shè)計,將其分為求組合數(shù),求階乘,求斐波那契數(shù)列三個部分,用戶可根據(jù)所需情況選擇相應(yīng)的函數(shù)計算,而后分析各個函數(shù)執(zhí)行的功能,分別定義相應(yīng)函數(shù),編寫各種語句以實現(xiàn)函數(shù)功能,最后在主函數(shù)上實現(xiàn)函數(shù)調(diào)用,用于日常數(shù)學(xué)的快速運算,增加用戶的辦事效率和準確性。

2.2 菜單簡介

為了方便用戶快速熟悉并使用程序進行數(shù)學(xué)計算,主菜單有詳細的文字介紹,用戶打開程序會直接彈出能進行的三項數(shù)學(xué)運算,以阿拉伯?dāng)?shù)字加以區(qū)分,最下方的有可選擇項,用戶根據(jù)所需選擇對應(yīng)的阿拉伯?dāng)?shù)字,程序會跳轉(zhuǎn)至具體子菜單,用戶根據(jù)提示輸入具體數(shù)字參與運算。主菜單與子菜單的存在將使用戶操作更加便捷易懂,增加用戶體驗感。

3 具體實現(xiàn)

3.1 主菜單的設(shè)計和實現(xiàn)

為了增強界面的整齊性和美觀性,主菜單在功能介紹的前后分別用符號分隔開,整體使用漢語解釋說明以方便用戶操作,主菜單的程序代碼和運行結(jié)果如下。

main()

{int n,num,k;

printf("\t\t\t? 歡迎來到數(shù)學(xué)王國 \n\n");

printf("-----------------------------------------------------\n");

printf("可進行的數(shù)學(xué)運算有:\n");

printf("\t\t\t 1.計算組合數(shù):\n\n");

printf("\t\t\t 2,求斐波那契數(shù)列:\n\n");

printf("\t\t\t 3.計算n的階乘:\n\n");

printf("-----------------------------------------------------\n");

printf("請選擇,輸入數(shù)字n:");

scanf("%d",&n);

printf("請輸入?yún)⑴c運算數(shù)num,k:");

scanf("%d%d",&num,&k);

switch(n)

{case 1:Zuheshu(num,k);

break;

case 2:Fib(num,k);

break;

case 3:printf("n的階乘為%ld:\n",F(xiàn)act(num));

break;}}

3.2 階乘函數(shù)的設(shè)計與實現(xiàn)

求正整數(shù)n的階乘這個問題,需要知道正整數(shù)n的值 ,才能求解出來n這個正整數(shù)的階乘的值 。所以,定義階乘函數(shù)時,依據(jù)實際需求,確定該函數(shù)的形式參數(shù)有而且只有一個整數(shù)n,又因為n的階乘的值仍然是整數(shù) ,但是數(shù)值較大,因此函數(shù)的返回值類型需要定義為長整型。確定了函數(shù)返回值的類型、形式參數(shù)的個數(shù)與 類型,再遵循見名知義的原則確定函數(shù)的名稱,就可以定義函數(shù)首部為:

unsigned long Fact(unsigned int n)

常用來求階乘的方法有五種:用for循環(huán)求階乘、用while語句求n的階乘、用do-while語句求n的階乘、用靜態(tài)變量求n的階乘、用迭代法計算無符號整型變量n的階乘,文章采用第五種方法求階乘。

unsigned long Fact(unsigned int n)

{unsigned int i;

unsigned long combnum=1;

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

combnum*=i;

return combnum;}

3.3 組合數(shù)函數(shù)的設(shè)計與實現(xiàn)

函數(shù)定義是函數(shù)應(yīng)用中較為關(guān)鍵的一步,因為所有的用戶自定義函數(shù)均要“先定義,后使用”。定義的目的是通知編譯系統(tǒng)函數(shù)返回值的類型、函數(shù)的名字、函數(shù)的參數(shù)個數(shù)與類型以及函數(shù)實現(xiàn)什么功能。定義函數(shù)的目的是重復(fù)使用,因此只有在程序中調(diào)用函數(shù)才能實現(xiàn)函數(shù)的功能。C語言程序從 main函數(shù)開始執(zhí)行,自定義函數(shù)的執(zhí)行通過被別的函數(shù)調(diào)用來實現(xiàn)。

組合數(shù)的計算問題實質(zhì)是多個階乘的乘除,因此組合函數(shù)需要調(diào)用階乘函數(shù),這就需要正確進行函數(shù)調(diào)用。函數(shù)調(diào)用的一般形式是:函數(shù)名(實際參數(shù)列表)。函數(shù)調(diào)用的方式按出現(xiàn)的位置有函數(shù)語句和函數(shù)表達式兩種。調(diào)用函數(shù)時使用的函數(shù)名要和定義函數(shù)時的完全一致,并且實參的個數(shù)和類型要和形參的一一對應(yīng)。計算組合數(shù)時需要用到階乘函數(shù)的返回值,這種情況下,調(diào)用函數(shù)需要以表達式的成分出現(xiàn),為此,組合函數(shù)的實現(xiàn)代碼如下。

int Zuheshu(int num,int k)

{unsigned long p;

p=Fact(num)/(Fact(k)*Fact(num-k));

printf("p=%lu\n",p);

return 0;}

3.4 斐波那契數(shù)列函數(shù)的設(shè)計與實現(xiàn)

主菜單中用戶輸入數(shù)字2后,將進行斐波那契數(shù)列的計算,這里設(shè)置循環(huán)會將所求項及之前所有項對應(yīng)的斐波那契數(shù)一一顯示出來,設(shè)定好基線情況和一般情況,隨后用遞歸法求得各項斐波那契數(shù)。為了方便第一項主菜單設(shè)置輸入兩個數(shù)字,第二項只需一個有效數(shù)字,在主菜單的設(shè)置中,前一個數(shù)字代表項數(shù),因此第一位填入所需斐波那契項數(shù),第二個數(shù)字一般填1。

//函數(shù)功能:求斐波那契數(shù)列

int Fib(int k)

{int i,x;

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

{x=Fi(i);? //調(diào)用遞歸函數(shù)Fi()計算數(shù)列第n項

printf("Fib(%d)=%d\n",i,x);}

return 0;}

//函數(shù)功能:用遞歸法計算數(shù)列中的第n項

long Fi(int n)

{if(n==0) return 0;? //基線情況

else if(n==1) return 1;? //基線情況

else return(Fi(n-1)+Fi(n-2)); } //一般情況

運行結(jié)果如圖2。

4 結(jié)論

編寫一個C語言程序解決一個實際問題,初學(xué)者往往將程序所有語句寫在main 主函數(shù) 中,這樣不利于閱讀和調(diào)試。恰當(dāng)?shù)乩煤瘮?shù)將復(fù)雜問題分解為若干個相對簡單的子問題,每個子問題完成一項具體任務(wù),由一個函數(shù)實現(xiàn),如果已有解決子問題的函數(shù)代碼,就可以直接調(diào)用函數(shù)解決復(fù)雜問題。這樣的程序可讀性強,調(diào)試方便,也有利于提高程序代碼的利用率,實現(xiàn)模塊化?!昂瘮?shù)”能夠簡化程序 ,化難為易。學(xué)習(xí)過程中,注重培養(yǎng)使用“函數(shù)”的習(xí)慣,正確定義和調(diào)用函數(shù)。

參考文獻:

[1] 楊泉.C語言程序設(shè)計中函數(shù)參數(shù)傳遞的研究[J].福建電腦,2020,36(12):108-109.

[2] 楊新宇,蘭全祥.C語言中遞歸的分析及應(yīng)用[J].電腦知識與技術(shù),2020,16(22):237-238,243.

[3] 張曉雯,祁薇.任務(wù)驅(qū)動的C語言函數(shù)課堂教學(xué)設(shè)計[J].電腦知識與技術(shù),2018,14(30):129-131.

[4] 黃敏.淺析程序設(shè)計與數(shù)學(xué)的關(guān)系——C語言程序設(shè)計為例[J].重慶工貿(mào)職業(yè)技術(shù)學(xué)院學(xué)報,2007(3):37-38.

[5] 陶予祺,王卓瑜,郭雨.基于C語言的數(shù)學(xué)競賽成績管理系統(tǒng)設(shè)計[J].信息與電腦,2017(2):144-146.

【通聯(lián)編輯:唐一東】

猜你喜歡
C語言
基于Visual Studio Code的C語言程序設(shè)計實踐教學(xué)探索
51單片機C語言入門方法
基于C語言的計算機軟件編程
C語言程序設(shè)計課程教學(xué)與學(xué)科專業(yè)相結(jié)合的探索
《C語言程序設(shè)計》翻轉(zhuǎn)課堂教學(xué)改革要點
淺談基于C語言的計算機軟件程序設(shè)計
高職高專院校C語言程序設(shè)計教學(xué)改革探索
基于C語言的學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)
基于C語言的常用排序算法比較研究
論子函數(shù)在C語言數(shù)據(jù)格式輸出中的應(yīng)用
简阳市| 樟树市| 财经| 会宁县| 巴里| 若羌县| 化隆| 怀宁县| 绥阳县| 楚雄市| 沂南县| 凤山县| 峨山| 厦门市| 灌云县| 宁化县| 远安县| 犍为县| 博湖县| 平谷区| 滦南县| 格尔木市| 安多县| 雷山县| 罗定市| 阳新县| 阳高县| 内江市| 葫芦岛市| 温宿县| 福安市| 桃园县| 南川市| 游戏| 苍南县| 铜梁县| 肥乡县| 南靖县| 绥中县| 容城县| 格尔木市|