[C語言]實現簡單的菜單式互動程序_第1頁
[C語言]實現簡單的菜單式互動程序_第2頁
[C語言]實現簡單的菜單式互動程序_第3頁
[C語言]實現簡單的菜單式互動程序_第4頁
[C語言]實現簡單的菜單式互動程序_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C語言實現簡單的菜單式互動程序1程序編寫目的編寫該程序主要是為了熟悉c語言中的一些常用函數與循環語句的用法,并鍛煉自己對于程序設計的邏輯,這對于初學者來說是十分必要的。需要說明的是,本次菜單互動程序為模擬銀行存取款的程序2實現該程序所需要的技術2.1常用函數printf()seanf()getchar()等具體語法:inta=3;printf(%d,a);其中,%d用來輸出整型變量(int在64位中占4個字節)%彳用來輸出float變量(64位占4個字節)%f也用來輸出double變量(64位占8個字節)%ld用來輸出long(64位占4個字節)%。用來輸出char類型變量(64位占1個字節)

2、%$用來輸出char*類型變量(scanf中同理)另外,可以用%02d來控制整型輸出方式(2表示一共占2位,0表示空閑部分用0補充),此時輸出為03%彳也可以進行格式的控制,如%.1f則輸出的float或double數只會留下小數點后1位scanf(%d,&a);其中&a表示變量a的地址,即將輸入的內容根據a的地址送到對應的存儲空間中(ps:新版本VS般要求使用scanf_s()getchar()能直接讀取緩沖區中的下一個字符,有些軟件沒法使用fflush()函數來清空緩沖區,則可以charch;while(ch=getchar()!=n);使用這兩個語句來實現清空緩沖區,以避免下一個getc

3、har()或scanf2.2練習程序設計中常用的循環語句for()、while()、dowhile()for循環主要強調固定次數,它一般與數組相搭配while循環與dowhile循環主要用于條件判斷類型的,二者的區別主要在于,后者必定會執行一次,前者不一定2程序需要實現的功能:2.1程序開始時,需要輸入密碼(默認為123),最多有4次機會,如果連續輸入錯誤4次,則程序停如圖:LRHiLbaalB,ib,Ij.少.L*l*njnnj*ajbjiiji嚴少*4aa吃Fh:FpFhrh:Fh:Fr*lJ-1!JFJ罟*:FT*TJ罟h:FJTirJ:Fh:FjT-UrJmJ:Fh:FJJh=h:F歡

4、迎光臨材榊種榴材*LRHiLbaalB,ib,Ij.少.L*l*njnnj*ajbjiiji嚴少*4aa吃Fh:FpFhrh:Fh:Fr*lJ-1!JFJ罟*:FT*TJ罟h:FJTirJ:Fh:FjT-UrJmJ:Fh:FJJh=h:F請輸入密碼:111密科錯吳!還有2次機會,請重新輸入:332密科鶴澳!還肴1次機會,請重薪站入:222密科薯吳!還肴0次機會,請重薪號入:321機會己經用光,比卡已經凍結密碼檢查.png2.2輸入正確的密碼后(默認密碼為123),顯示互動菜單,如圖所示:密碼正確,歡迎!li.Jii.JBiili.JBiiBii_Jli.JBiiarriairTv*7*yvbr

5、wriribrjvrwriribrjvrwrirariwp糾樹L取隸2.存款糾粋桶粘*帝帝3.顯示余額糾豁4.設晝密詢5.退出糾種林li.Jii.JBiili.JBiiBii_Jli.JBiiarriairariaia*gaywrwriribrjvrwriribrjvrwrirarwrirawp請選擇操作:菜單顯示.png2.3當輸入3時,會顯示余額(余額為一個全局變量),如圖所示:fcJS.J!tJJ!JS.J!LJdjS!*JIJli.J.Udll*Urji*5J!4生._B%rIm*r;fr=;片.吋8燈*;*A斗卜V*t*i18*;叫arj,sa,jjiXjH*:fr|B*|18;*7

6、*丐8,*:*T*;*罰:卜材材L取款2存款林樹林*3,顯示余額*尙*尙*材林4設豊密福5退岀林樹林fcJS.J!tJJ!JS.J!LJdjS!*JIJli.J.Udll*Urji*5J!4生._B%rIm*r;fr=;片.a,n苛*;1;斗卜*t*i韋*;8*:*,:*r|B*|18;*7*丐*-11*:*卜*;*罰:*卜請選擇換作:3您的條額為:2C0操作完成,請繼續輸入:3.顯示余額JPG2.4當輸入2時,會詢問需要存款的金額,并且該金額會使余額發生改變,如圖所示:青輸入存款金額!150存款成功:操作完成,請繼續輸入:3您的余額為:350操作完成,請繼續輸入:2存款.JPG2.5當輸入1

7、時,會詢問需要取出款的金額,如果欲取出的金額大于余額,會提示錯誤,如果小于余額,則余額會發生變化,如圖所示:1請輸入取款金額!200取款成功!操作完成,請繼續輸入:3您的余額為:150操作完成,請繼續輸入:1.取款.png3具體實現步驟3.1密碼檢查代碼編寫思路:由于有4次輸入機會,即設計到反復輸入,因此最外層必然會套一層while循環,并且要設計一個Int變量(input_num)用于記錄錯誤次數密碼是否正確需要使用if語句進行判斷,如果正確,則使用break;結束循環,如果錯誤,則input_num+并要求重新輸入當密碼輸入錯誤4次,則直接在主函數中使用return;結束整個程序(主函數類

8、型是void,因此直接使用return;就可以結束程序)具體代碼如下:printf(”請輸入密碼:”);scanf_s(%d,&password_s);while(1)if(input_num=3)printf(機會已經用光,此卡已經凍結汁);return;if(password_s!=password)input_num+;printf(密碼錯誤!還有%d次機會,請重新輸入:”,(3-input_num);scanf_s(%d,&password_s);elseprintf(*密碼正確,歡迎!n);break;while(ch=getchar()!=n);/青空緩沖區while的判斷條件直接

9、寫1的原因是中間的循環中有break語句,以此來跳出循環3.2菜單界面輸出直接使用printf()即可printf(*n);printf(”*1取款2存款*n);開始存款printf(*3.顯示余額*n);printf(*4.設置密碼5退出*n”);請輸入原始、新密碼printf(*n);printf(”請選擇操作:);scanf_s(%d,&choice);用來輸入操作數3.3判斷是否輸入的數字是否錯誤(是否在1至5之間)if(choice5)printf(輸入有誤,請重新輸入!n);while(ch=getchar()!=n);scanf_s(%d,&choice);else輸入無誤,判斷

10、是1,2,3,4,5中的哪個當1choiceremains)printf(余額不足,是否重新輸入?(Y/N)n);while(ch=getchar()!=n);/清空緩存區scanf_s(%c,&flag);elseremains=remains-money;printfC取款成功!n);flag=N;break;case2:printfC請輸入存款金額!n);scanf_s(%d,&money);remains=remains+money;printf(”存款成功!n);break;case3:printf(您的余額為:%dn,remains);break;case4:printf(”請輸入

11、新密碼n);scanf_s(%d,&password);printf(設置成功!n);break;case5:break;default:break;全部一起看比較長,看起來很復雜,我們逐條分析先挑比較簡單的來看:case3:printf(您的余額為:%dn,remains);break;case4:printf(請輸入新密碼n);scanf_s(%d,&password);printf(設置成功!n);break;case3與case4就是單純的printf()輸出與scanf_s輸入case2:printf(請輸入存款金額!n);scanf_s(%d,&money);remains=rem

12、ains+money;printf(存款成功!n);break;case2為存款則需要通過scanf_s來獲取存款金額,并通過計算改變remains的值,這里的remains是一個全局變量case1:while(flag=Y)printf(請輸入取款金額!n”);/取款成功,當前余額為scanf_s(%d,&money);if(moneyremains)printf(余額不足,是否重新輸入?(Y/N)n);while(ch=getchar()!=n);/清空緩存區scanf_s(%c,&flag);elseremains=remains-money;printf(取款成功!n);flag=N;

13、break;case1比較復雜,首先先講一下編寫思路:首先,由于涉及到余額不足的情況,因此這是一個有可能多次重復運行的代碼,所以說最外層套一個while循環由于要判斷余額與取款的多少,因此要使用ifelse語句如果余額更大,則說明取款成功,則運行remains=remains-money;如果判斷結果是余額更小,說明取款失敗,則輸出“余額不足”,并詢問是否重新輸入ps:要注意的是由于詢問是否重新輸入使用的是%c,即使以字符的形式進行輸入的,因此需要用while(ch=getchar()!=n);來清空緩存區,避免換行符n被下一次循環中的scanf_s讀取由于需要一個條件來判斷是否重新輸入(Y/

14、N),且即使是需要重新輸入,也需要進入下一次循環,因此要定義一個char類型變量flag,初始化時賦值為Y,這個flag也會作為while的判斷條件,來保證需要重新輸入的時候能夠進入下一次循環,不需要時,則不再循環3.4switch語句后再次提醒繼續輸入在switch語句中的最后(switch的大括號外面的后面)加上,以提醒繼續輸入4.總結4.1完整代碼:#includevoidmain()intchoice;charch;intpassword=123;intpassword_s;intinput_num=0;/用來判斷輸錯密碼的次數intmoney;/money為取出來的錢charflag

15、=Y;/在余額不足的時候用來判斷是否取錢intremains=200;/価余額為200printf(*n);printf(*歡迎光臨*n”);printf(*n);printf(請輸入密碼:);scanf_s(%d,&password_s);while(1)if(input_num=3)printf(機會已經用光,此卡已經凍結汁);return;if(password_s!=password)input_num+;printf(密碼錯誤!還有%d次機會,請重新輸入:,(3-input_num);scanf_s(%d,&password_s);elseprintf(密碼正確,歡迎!n);brea

16、k;while(ch=getchar()!=n);/清空緩存區/*上面的為j密碼馬判h斷*printf(ummammm*n);printf(*1取款2存款*n);開始存款printf(*3.顯示余額*n);printf(*4.設置密碼5退出*n”);請輸入原始、新密碼printf(ummammm*n);printf(請選擇操作:”);scanf_s(%d,&choice);while(choice!=5)if(choice5)printf(輸入有誤,請重新輸入!n);while(ch=getchar()!=n);scanf_s(%d,&choice);elseflag=Y;/每次都重新賦予取錢

17、的權限switch(choice)case1:while(flag=Y)printf(請輸入取款金額!n);/取款成功,當前余額為scanf_s(%d,&money);if(moneyremains)printf(余額不足,是否重新輸入?(Y/N)n);printf(余額不足,是否重新輸入?(Y/N)n);while(ch=getchar()!=n);清空緩存區scanf_s(%c,&flag);elseremains=remains-money;printf(取款成功!n);flag=N;/while(ch=getchar()!=n);清空緩存區存款成功,當前余額為20-余額不足,是否繼續Y/Nbreak;case2:printf(請輸入存款金額!n);scanf_s(%d,&money);remains=remains+money;/while(ch=getchar()!=n);清空緩存區printf(存款成功!n);break;case3:printf(您的余額為:%dn,remains);break;case4:printf(請輸入新密碼n);scanf_s(%d,&password);printf(設置成功!n);break;case5:b

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論