C語言程序課程設計猜數字游戲_第1頁
C語言程序課程設計猜數字游戲_第2頁
C語言程序課程設計猜數字游戲_第3頁
C語言程序課程設計猜數字游戲_第4頁
C語言程序課程設計猜數字游戲_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

C語言程序設計課程設計考語:業:自動化設計報告辯論考勤(10)紀律(10)過程(40)總成績(100)級(30)(10):名:學號:指導教師:蘭州交通大學自動化與電氣工程學院2015年07月21日一.前言設計目的復習和穩固C語言基礎知識,進一步加深對C語言的理解和掌握。提升同學將課本上的理論知識和實質聯合的能力,鍛煉同學的剖析解決實質問題的能力,提升同學團隊合作的能力。使同學們擅長察看和思慮,擅長合作,具備實踐編程的基礎素質,和實質問題剖析的思慮方式。設計要求在設計時充分地剖析和理解問題自己,綜合考慮系統功能,如何使系統構造清楚、合理、簡單和易于調試。而后詳盡設計,確立每個過程和函數的簡單功能,以及過程(或函數)之間的調用關系。最后仔細達成課程設計說明書,并對設計方法,結果等進行總結。充分地剖析和理解問題自己,弄清要求做什么(Whattodo)。在確立解決方案框架過程中(Howtodo),綜合考慮系統功能,考慮如何使系統構造清楚、合理、簡單和易于調試。最后確立每個過程和函數的簡單功能,以及過程(或函數)之間的調用關系。確立算法的主要流程,在此基礎長進行代碼設計(Coding),每個明確的功能模塊程序一般不超出60行,不然要進一步區分。上機前途序靜態檢查可有效提升調試效率,減少上機調試程序時的無謂錯誤。靜態檢查主要有兩種門路:(1)用一組測試數據手工履行程序;(2)經過閱讀或給他人解說自己的程序而深入全面地理解程序邏輯。二.基礎題題目用選擇法對10個數進行排序。有一個已排好序的數組。現輸入一個數,要求按本來的規律插入到原數組中。解題思路程序的主要功能是對數組元素用排序函數按從小到大的次序進行排序。先定義一個10個元素的一維數組a[10],而后從電腦輸入10個數(也就是對數組賦值),而后使用一次fun()函數,對這10個數進行排序;而后再定義一個11個元素的一維數組b[11],同時再從電腦輸入一個數同a[10]一同賦值給b[11],而后再使用fun( )函數,從頭排序的到最后的有次序的一組數據。流程圖子函數流程圖如圖1所示:開始i=1Ni<=n-1Yi=i+1j=nNj>=iYYa[j]<a[j-1]N交換a[j]和a[j-1]的數據j=j+1輸出已排序的數組a結束圖1基礎題子函數流程圖主函數流程圖如圖2所示:圖2基礎題主函數流程圖源代碼基礎題源代碼見附錄A。運轉及測試結果運轉及測試結果如圖3所示:圖3基礎題運轉及測試結果截圖三.改錯題題目#include<>intfun( ){inta[3][3],sum;inti,j;____;for(i=0;i<3;i++){for(j=0;j<3;j++)scanf("%d"a[i][j]);}for(i=0;i<3;i++)sum=sum*a[i][i];printf("累乘積=%d\n",sum);}main( ){fun( );}解題思路程序的功能:這是一個求3*3矩陣主對角線元素累乘積的程序。程序剖析:能夠看出源程序中,先聲了然一個子函數,并定義子函數fun( )累乘積函數(這個函數就是先定義了一個3*3的二維數組,而后從鍵盤輸入數值對這個二維數組進行了數組賦初值,賦值過程中使用了for循環語句,而后利用for循環語句對主角線的元素做每個數的乘積,最后是輸出這個累乘積。)。最后就是主函數main( ),主函數中使用一次子函數fun( )。錯誤剖析錯誤一:原程序中對sum沒有設置初值,應設置為“sum=1;”;錯誤二:scanf( )函數中沒有使用地點運算符,應在數組前加“&”錯誤三:子函數也沒設返回值,返回值應為“returnsum;”。改錯后的源代碼改錯后的源代碼見附錄B。運轉及測試結果運轉及測試結果如圖4所示:圖4改錯題運轉及測試結果截圖四.綜合題題目設計課題四:猜數字游戲一.問題描繪該游戲能夠由程序隨機產生或由用戶輸入四個0到9之間的數字,且不重復。玩游戲者經過游戲提示輸入八次來般配上邊所輸入的數字。A表示地點正確且數字正確,B表示數字正確而地點不正確。假如4A0B,表示游戲成功。每次猜錯會有提示,假如八次都未猜對,游戲失敗,顯示正確答案。按隨意鍵能夠返回主菜單。主要應運數組和循環實現改功能。(對該系統有興趣的同學能夠在實現系統基本功能后,完美系統的其余功能,如:破記錄功能,若你所般配的次數小于紀錄保持者,則為破紀錄。)二.功能要求游戲顯示這樣的菜單:1)隨機產生數據2)用戶輸入數據3)退出游戲游戲成功與否都能返回主菜單三.算法提示數據構造:數組用簡單的程序設計方法四.測試數據測試數據:3792第一次輸入:12340A2B第二次輸入:56780A1B第三次輸入:08670A1B第四次輸入:97861A1B第五次輸入:17942A0B第六次輸入:27932A2B第七次輸入:37924A0B游戲成功!!!五.其余對該系統有興趣的同學能夠在實現系統基本功能后,完美系統的其余功能,如:破記錄功能,若你所般配的次數小于紀錄保持者,則為破紀錄。設計思路此游戲程序經過不停輸入以及漸漸數位對應的方法,一步一步的減小猜想范圍最后猜想出機器內已經儲存的數字,達到健腦益智的成效。這類策略特別直接——每次都猜可能答案中的一個。比如:第一猜想1234,假如獲得的反應是2A2B那么可能的答案包含等等。依據簡單策略,下一次就猜1256,由于1256是全部可能答案中最小的數字。簡單策略是程序運轉速度特別快,弊端是所猜想的次數許多。利用主函數調用子函數來實現模塊化程序設計。將游戲的每一個功能設計成一個子函,數調用達成游戲。主要分為兩大模塊:隨機模式和用戶模式。猜數字游戲的主要功能,由系統自動產生4個隨機擺列的整數,或許由用戶輸入4個不一樣的整數,并給用戶8次時機猜想數字的數值和擺列次序。假如用戶在8次以內沒有猜出正確的結果,則提示用戶游戲失敗,不然提示用戶猜數字成功。該游戲能夠由程序隨機產生或由用戶輸入四個0到9之間的數字,且不重復。玩游戲者經過游戲提示輸入八次來般配上邊所輸入的數字。A表示地點正確且數字正確,B表示數字正確而地點不正確。假如4A0B,表示游戲成功。每次猜錯會有提示,假如八次都未猜對,游戲失敗,顯示正確答案。按隨意鍵能夠返回主菜單。主要應運數組和循環實現改功能。能夠對系統在實現系統基本功能后,完美系統的其余功能,如:破記錄功能,若你所般配的次數小于紀錄保持者,則為破紀錄。流程圖主程序流程圖如圖5所示:開始游戲說明及選項游戲選項,非1,2,3為無效輸入2游戲說明1開始游戲3退出咨詢清屏輸出說明并返回并生成4個一位隨機數玩家輸入選擇否,返回選擇是,結束程序判斷輸入能否有重復數字并給與必定提示如超出最大回答次數,給出正答案。在規定次數內猜對,輸出你猜對了。咨詢“是”持續,“否”退出咨詢“是”持續,“否”退出。選擇是返回選擇否退出選擇否退出選擇是返回程序結束圖5主程序流程圖源代碼源代碼見附錄C。運轉及測試結果開始界面如圖6所示:圖6開始界面結果截圖使用說明界面如圖7所示:圖7使用說明界面截圖成功進行了一次游戲如圖8所示:圖8完好一次游戲截圖總結C程序課程設計是理論和實質的聯合,經過此次程序的設計,提升了我的c語言水平,比方,查閱資料的重要性,對程序的整體性掌握。并且對整體的掌控,還有對局部的棄取,以及對細節的商酌辦理,都使我的能力獲得了鍛煉,累積了經驗,可是當自己依據此思路設計出程序時,程序的運轉出現了一些問題,這些問題出現時,我經過查閱資料,并且和同學溝通,最后經過幾次的改正,運轉結果和期望的同樣。經過此次的課程設計,我感覺到自己的C語言知識極少,此次題目,能夠讓我掌握更多的知識,更好的認識c程序的編譯過程,剖析階段,我的剖析思路以下,進行面向對象的需求剖析,系統設計,畫出相應需求剖析圖,流程圖,有了流程圖,能夠讓我更好的理解這個程序的設計方法。我還感覺到上機操作的重要性,從前我不過在書上看,而沒有過多的上機操作,就算一個程序能寫出來,上機操作的結果也未必正確,有時自己對一個程序信心實足,可是假如上機操作,那么就有好多問題,并且碰到錯誤不要氣餒,要一步一步的改,直到能運轉出正確的結果為止,還有就是借助資料的重要性,一道題假如不會作,我們要借助資料來對照和解決,學習是一個不停完美的過程,要正視自己的不足之處,碰到不足的之處,要自己完美,比方,我領會到自己c語言知識知道的極少,在此后,我要學習和完美自己的C語言知識,還有,自己的實質操作太少,在此后學習C程序設計的過程中,要著重實質操作,而不不過在書上看看就完了。參照文件譚浩強著.C程序設計(第四版).北京:清華大學第一版社,2010蔡志明著.指針的藝術.中國水利水電第一版社,2009譚浩強編著.C程序設計(第三版).北京:清華大學第一版社,2005譚浩強著.C程序設計教程.北京:清華大學第一版社,2007譚浩強著.C語言程序設計(第2版).北京:清華大學第一版社,2008譚浩強編著.C程序設計題解與上機指導(第三版).北京:清華大學第一版社,2005譚浩強編著.C++程序設計.清華大學第一版社,2004譚浩強著.C程序設計(第四版)學習指導.北京:清華大學第一版社,2010陳明編著.計算機導論.北京:清華大學第一版社,2009[10]C編寫組編.常用C語言用法速查手冊.北京:龍門書局,1995附錄附錄A#include<>voidmain( ){voidfun(inta[],intn);inta[10],i,k,b[11];printf("請輸入十個數:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}fun(a,10);

始游戲\n\n");printf("\t\t\t\t2.printf("\t\t\t\t3.printf("\t\t\t

使用說明\n\n");退出游戲\n\n");請輸入(1-3):");fflush(stdin);choice=getchar( );}while(choice!='1'&&choice!='2'&&choice!='3');switch(choice){case'1':{game( );break;}case'2':{system("cls");printf("\t\t\t\t歡迎使用本程序\n\n\n");printf("

游戲說明

:輸入%d位數字,輸入后會有提示

XAYB,X表示有幾個數字與答案數字同樣且地點同樣。\n",MANY);printf("Y表示有幾位數字與答案數字同樣但地點不正確。\n");printf("比如:答案數字是5764,假如輸入5481,則會提示1A1B。\n");printf("printf("

祝你快樂!\n\n");按隨意鍵返回主目錄

\n");getch( );break;}case'3':{printf("確立要退出嗎(y/n):");fflush(stdin);ch=getchar( );if(ch=='y'||ch=='Y')exit(0);elsecontinue;}}}while(1);}/*游戲部分*/voidgame( ){intguess[MANY],answer[MANY];inttimes,i,m,j;intkey;time_tt;charwantplay,temp;srand((unsigned)time(&t));do{/*生成MANY個隨機數*/do{u=0;for(i=0;i<MANY;i++)guess[i]=rand( )%10;same(guess);}while(u);printf("請輸入%d位不同樣的數:\n",MANY);for(times=1;times<=TIME_OUT+1;times++){/*超出限制數次*/if(times==(TIME_OUT+1)){printf("正確答案是:");for(m=0;m<MANY;m++)printf("%d",guess[m]);printf("\n猜了%d次都沒料中",TIME_OUT);break;}printf("第%d次:",times);/*玩家輸入*/fflush(stdin);for(j=0;j<MANY;j++){temp=getchar( );answer[j]=temp-48;/*temp是char型*/}/*檢查輸入有沒有重復*/u=0;same(answer);if(u){printf("你輸入的數字有重復,請從頭輸入\n");continue;}ab(answer,guess);/*判斷輸入數字正確的個數*/if(a==MANY){printf("恭賀!你猜對了");break;}elseprintf("%dA%dB\n",a,b);}printf("還想玩嗎(y/n):");fflush(stdin);wantplay=getchar( );if(wantplay=='y'||wantplay=='Y'){system("cls");continue;}elsemenu( );}while(wantplay=='y'||wantplay=='Y

溫馨提示

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

評論

0/150

提交評論