




已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
XxxxxxC程序設計課程設計報告書課程名稱:C程序設計指導老師:xx專 業(yè):xxxxx班 級:xxx題 目:13學 號:xxx姓 名: xxxx 2010年6月 目錄 前言1設計目的與要求1內容及分配2算法的基本思想2測試數(shù)據(jù)21心得體會22附錄25前言C語言課程設計為學生提供了一個既動手又動腦,分組配合實踐的機會,將課本上的理論知識和上機實踐操作有機的結合起來,鍛煉學生的發(fā)現(xiàn)、分析、探索、解決實際問題的能力。提高學生適應實際,實踐編程的能力。作為學生本人來講,應該好好把握這次寶貴的機會,通過分組相互配合上機實踐操作加深對該門課程的課本理論知識的理解和認識,在相互默契配合的同時,學會獨立思考解決實踐過程中遇到的方方面面的問題并虛心向老師和同學請教自己的困惑點,最終順利完成設計目的與要求,使自己得到較好的鍛煉。一、設計目的與要求老師通過布置具有一定難度的綜合性程序設計題目,要求學生利用學到的編程知識和編程技巧,根據(jù)題目相應的難易程度。分組或獨立完成編程及程序調試,最后按格式和要求寫出并打印課程設計報告。 二、內容及分配1、 分析、設計數(shù)據(jù)結構。首先選定題目、收集資料、對系統(tǒng)進行功能模塊分析,控制模塊分析正確,系統(tǒng)設計要實用,然后確定模塊,寫出函數(shù)原型。2、 編程:根據(jù)函數(shù)原型及其功能,填充相應的算法。編程簡練,可用性強,功能全面3、 調試程序:上機調試程序,解決編譯等錯誤,直至運行成功。4、 撰寫報告:按格式寫出完整、規(guī)范的報告并打印,其中模塊圖、流程圖要清楚、規(guī)范,不能有錯別字。5、 答辯:程序運行通過,報告打印出來之后,通知指導老師檢查,經提問能大部分做出回答即可。6、 設計題目(13):編寫函數(shù)int fun(int a,int b),在【a,b】范圍內統(tǒng)計滿足下面條件的個數(shù)。條件:該數(shù)是素數(shù),且該數(shù)逆序后形成的數(shù)也是素數(shù)。例如在【100,150】范圍內101 107 113 131 149 滿足條件,則下面程序輸入100 150,輸出num=5. 三、算法的基本思想 1、 概要設計(模塊圖如下)讀入a,b for i=a to b for j=2 to sqrt (i)i能被j整除真假break;f1=0i逆序后得到xfor j=2 to sqrt(x)x能被j整除真假break;f2=0n+return(n)輸出num=n;該程序要用到用一個main函數(shù)調用其他庫函數(shù),以及while循環(huán)語句實現(xiàn)對數(shù)字的逆序運算、forif語句實現(xiàn)的循環(huán)等等。 2、詳細設計:該程序包含以下步驟及相關知識 自然語言:模塊一:判斷i為素數(shù)讓i先后被2到i除,如果i能被2到i之中任何一個整數(shù)整除,即f1=0,則提前結束循環(huán),此時j必然小于或等于i;如果i不能被2到i之間的任一整數(shù)整除,則在完成最后一次循環(huán)后j還要加1,因此j=i+1,然后才能終止循環(huán)。在循環(huán)之后判別j的值是否大于或等于i+1,若是,則表明未曾被2到i之間的任一整數(shù)整除過,即f1=1。模塊二:實現(xiàn)對i的逆序(見后面難點突破)模塊三:判斷x為素數(shù)讓x先后被2到x除,如果x能被2到x之中任何一個整數(shù)整除,即f2=0,則提前結束循環(huán),此時j必然小于或等于x;如果x不能被2到x之間的任一整數(shù)整除,則在完成最后一次循環(huán)后j還要加1,因此j=x+1,然后才能終止循環(huán)。在循環(huán)之后判別j的值是否大于或等于x+1,若是,則表明未曾被2到x之間的任一整數(shù)整除過,即f2=1。最后,若滿足(!f1=0)&(!f2=0),則n+;循環(huán)結束后將n的值返回main函數(shù),輸出最終結果即滿足題中所給條件的數(shù)的個數(shù)(2),所用相關知識及注意點一)C程序的結構程序的執(zhí)行部分是由語句組成的。 程序的功能也是由執(zhí)行語句C 語句可分為以下五類: 1) 表達式語句 2) 函數(shù)調用語句 3) 控制語句 4) 復合語句 5) 空語句 表達式語句:表達式語句由表達式加上分號“;”組成。 其一般形式為: 表達式; 執(zhí)行表達式語句就是計算表達式的值。 例如: x=y+z; 賦值語句; y+z; 加法運算語句,但計算結果不能保留,無實際意義; i+; 自增1 語句,i 值增1。 2. 函數(shù)調用語句:由函數(shù)名、實際參數(shù)加上分號“;”組成。 其一般形式為: 函數(shù)名(實際參數(shù)表); 執(zhí)行函數(shù)語句就是調用函數(shù)體并把實際參數(shù)賦予函數(shù)定義中的形式參數(shù),然后執(zhí)行被調函數(shù)體中的語句,求取函數(shù)值 例如: printf(C Program);調用庫函數(shù),輸出字符串。 3. 控制語句:控制語句用于控制程序的流程, 以實現(xiàn)程序的各種結構方式。它們由特定的語句定義符組成。語言有九種控制語句。 可分成以下三類: 1) 條件判斷語句:if 語句、switch 語句; 2) 循環(huán)執(zhí)行語句:do while 語句、while 語句、for語句; 3) 轉向語句:break 語句、goto 語句、continue 語句、return 語句。4. 復合語句:把多個語句用括號括起來組成的一個語句稱復合語句。 在程序中應把復合語句看成是單條語句,而不是多條語句。 例如: x=y+z; a=b+c; printf(“%d%d”,x,a); 是一條復合語句。 復合語句內的各條語句都必須以分號“;”結尾,在括號“”外不能加分號。 二)1) 在語言中,所有的數(shù)據(jù)輸入輸出都是由庫函數(shù)完成的。 因此都是函數(shù)語句。 2) 在使用語言庫函數(shù)時,要用預編譯命令 #include 將有關“頭文件”包括到源文件中。 使用標準輸入輸出庫函數(shù)時要用到 “stdio.h”文件,因此源文件開頭應有以下預編譯命令: #include 或 #include ”stdio.h” stdio 是standard input &outupt 的意思。三)、邏輯表達式 邏輯表達式的一般形式為: 表達式 邏輯運算符 表達式 其中的表達式可以又是邏輯表達式,從而組成了嵌套的情形。 例如: (a&b)&c 根據(jù)邏輯運算符的左結合性,上式也可寫為: a&b&c 邏輯表達式的值是式中各種邏輯運算的最后值,以“1”和“0”分別代表“真”和“假”。四)、if語句1. 基本形式:if if(表達式) 語句 其語義是:如果表達式的值為真,則執(zhí)行其后的語句, 否則不執(zhí)行該語句。其過程可表示為下圖。2) 在 if 語句中,條件判斷表達式必須用括號括起來,在語句之后必須加分號。 3) 在 if 語句的三種形式中,所有的語句應為單個語句,如果要想在滿足條件時執(zhí)行一(多個)語句,則必須把這一組語句用括起來組成一個復合語句。但要注意的是在后不能再加分號。 例如: if(ab) a+; b+; else a=0; b=10;五)、while語句 1)、while 語句的一般形式為: while(表達式)語句 其中表達式是循環(huán)條件,語句為循環(huán)體。 while 語句的語義是:計算表達式的值,當值為真(非 0)時, 執(zhí)行循環(huán)體語句。其執(zhí)行過程可用下圖表示。2)、 循環(huán)體如包括有一個以上的語句,則必須用括起來,組成復合語句。六)、在 C 語言中,for 語句使用最為靈活,它完全可以取代 while 語句。它的一般形式為: for(表達式 1;表達式 2;表達式 3) 語句的執(zhí)行過程如下: 先求解表達式 1。 求解表達式 2,若其值為真(非 0) ,則執(zhí)行 for語句中指定的內嵌語句,然后執(zhí)行下面第 3)步;若其值為假(0) ,則結束循環(huán),轉到第 5)步。 求解表達式 3。 轉回上面第 2)步繼續(xù)執(zhí)行。 循環(huán)結束,執(zhí)行 for 語句下面的一個語句。 執(zhí)行過程可用下圖表示。for 語句最簡單的應用形式也是最容易理解的形式如下: for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增量) 語句 循環(huán)變量賦初值總是一個賦值語句, 它用來給循環(huán)控制變量賦初值; 循環(huán)條件是一個關系表達式,它決定什么時候退出循環(huán);循環(huán)變量增量,定義循環(huán)控制變量每循環(huán)一次后按什么方式變化。這三個部分之間用“;”分開。 例如: for(i=1; i100時,結束循環(huán)。 相當于: i=1; while(i=100) sum=sum+i; i+; 對于 for 循環(huán)中語句的一般形式,就是如下的 while 循環(huán)形式: 表達式 1; while(表達式 2) 語句 表達式3; 注意: 1) for 循環(huán)中的“表達式 1(循環(huán)變量賦初值)”、“表達式 2(循環(huán)條件)”和“表達式 3(循環(huán)變量增量)”都是選擇項, 即可以缺省,但“;”不能缺省。 2) 省略了“表達式 1(循環(huán)變量賦初值)”, 表示不對循環(huán)控制變量賦初值。 3) 省略了“表達式 2(循環(huán)條件)”, 則不做其它處理時便成為死循環(huán)。 例如: for(i=1;i+)sum=sum+i; 相當于: i=1; while(1) sum=sum+i; i+; 4) 省略了 “表達式 3(循環(huán)變量增量)”, 則不對循環(huán)控制變量進行操作,這時可在語句體中加入修改循環(huán)控制變量的語句。 例如: for(i=1;i=100;) sum=sum+i; i+; 5) 省略了“表達式 1(循環(huán)變量賦初值)”和“表達式 3(循環(huán)變量增量)”。 例如: for(;i=100;) sum=sum+i; i+; 相當于: while(i=100) sum=sum+i; i+; 6) 3 個表達式都可以省略。 例如: for(; ;)語句 相當于: while(1)語句 7) 表達式 1 可以是設置循環(huán)變量的初值的賦值表達式例如: for(sum=0;i=100;i+)sum=sum+i; 8) 表達式 1 和表達式 3 可以是一個簡單表達式也可以for(sum=0,i=1;i=100;i+)sum=sum+i; 或: for(i=0,j=100;i=100;i+,j-)k=i+j; 9) 表達式 2 一般是關系表達式或邏輯表達式,但也可值非零,就執(zhí)行循環(huán)體。七)、break語句 break 語句通常用在循環(huán)語句和開關語句中。當 break 用于開關語句 switch 中時,可使程序跳出 switch 而執(zhí)行 switch 以后的語句;如果沒有 break 語句,則將成為一個死循環(huán)而無法退出。 當 break 語句用于 do-while、for、while 循環(huán)語句中時,可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句, 通常 break語句總是與 if 語句聯(lián)在一起。即滿足條件時便跳出循環(huán)。八)、函數(shù)的定義及調用 main 函數(shù)是主函數(shù),它可以調用其它函數(shù),而不允許被其它函數(shù)調用。因此,程序的執(zhí)行總是從 main 函數(shù)開始,完成對其它函數(shù)的調用后再返回到 main 函數(shù),最后由 main函數(shù)結束整個程序。一個源程序必須有,也只能有一個主函數(shù) main。a、 有參函數(shù)的一般定義形式類型標識符 函數(shù)名(形式參數(shù)表列) 聲明部分語句 有參函數(shù)比無參函數(shù)多了一個內容,即形式參數(shù)表列。在形參表中給出的參數(shù)稱為形式參數(shù),它們可以是各種類型的變量,各參數(shù)之間用逗號間隔。在進行函數(shù)調用時,主調函數(shù)將賦予這些形式參數(shù)實際的值。形參既然是變量,必須在形參表中給出形參的類型說明。 b、函數(shù)調用的方式 在語言中,可以用以下幾種方式調用函數(shù): 1. 函數(shù)表達式:函數(shù)作為表達式中的一項出現(xiàn)在表達式中,以函數(shù)返回值參與表達式的運算。這種方式要求函數(shù)是有返回值的。例如:z=max(x,y)是一個賦值表達式,把 max的返回值賦予變量 z。 2. 函數(shù)語句:函數(shù)調用的一般形式加上分號即構成函數(shù)語句。例如: printf (%d,a);scanf (%d,&b);都是以函數(shù)語句的方式調用函數(shù)。 3. 函數(shù)實參:函數(shù)作為另一個函數(shù)調用的實際參數(shù)出現(xiàn)。這種情況是把該函數(shù)的返回值作為實參進行傳送,因此要求該函數(shù)必須是有返回值的。例如: printf(%d,max(x,y); 即是把 max 調用的返回值又作為 printf 函數(shù)的實參來使用的。在函數(shù)調用中還應該注意的一個問題是求值順序的問題。所謂求值順序是指對實參表中各量是自左至右使用呢,還是自右至左使用。對此,各系統(tǒng)的規(guī)定不一定相同。c、函數(shù)的返回值 函數(shù)的值是指函數(shù)被調用之后,執(zhí)行函數(shù)體中的程序段所取得的并返回給主調函數(shù)的值。如調用正弦函數(shù)取得正弦值,調用的 max 函數(shù)取得的最大數(shù)等。對函數(shù)的值(或稱函數(shù)返回值)有以下一些說明: 1) 函數(shù)的值只能通過 return 語句返回主調函數(shù)。 return 語句的一般形式為: return 表達式; 或者為: return (表達式); 該語句的功能是計算表達式的值,并返回給主調函數(shù)。 在函數(shù)中允許有多個 return語句,但每次調用只能有一個 return 語句被執(zhí)行,因此只能返回一個函數(shù)值。 2) 函數(shù)值的類型和函數(shù)定義中函數(shù)的類型應保持一致。如果兩者不一致,則以函數(shù)類型為準,自動進行類型轉換。 3) 如函數(shù)值為整型,在函數(shù)定義時可以省去類型說明。 4) 不返回函數(shù)值的函數(shù),可以明確定義為“空類型”,類型說明符為“void”。一旦函數(shù)被定義為空類型后,就不能在主調函數(shù)中使用被調函數(shù)的函數(shù)值了。例如,在定義 s 為空類型后,在主函數(shù)中寫下述語句 sum=s(n); 就是錯誤的。 為了使程序有良好的可讀性并減少出錯, 凡不要求返回值的函數(shù)都應定義為空類型。d、對被調函數(shù)的聲明在主調函數(shù)中調用某函數(shù)之前應對該被調函數(shù)進行說明(聲明),這與使用變量之前要進行變量說明是一樣的。在主調函數(shù)中對被調函數(shù)作說明的目的是使編譯系統(tǒng)知道被調函返回值的類型,以便在主調函數(shù)中按此種類型對返回值作相應的處理。 其一般形式為: 類型說明符 被調函數(shù)名(類型 形參,類型 形參); 或為: 類型說明符 被調函數(shù)名(類型,類型); 括號內給出了形參的類型和形參名,或只給出形參類型。這便于編譯系統(tǒng)進行檢錯,以防止可能出現(xiàn)的錯誤。 例 main函數(shù)中對 fun 函數(shù)的說明為: int fun(int a,int b); 語言中又規(guī)定在以下幾種情況時可以省去主調函數(shù)中對被調函數(shù)的函數(shù)說明。 1) 如果被調函數(shù)的返回值是整型或字符型時,可以不對被調函數(shù)作說明,而直接調用。這時系統(tǒng)將自動對被調函數(shù)返回值按整型處理。2) 當被調函數(shù)的函數(shù)定義出現(xiàn)在主調函數(shù)之前時,在主調函數(shù)中也可以不對被調函數(shù)再作說明而直接調用。例如題中,函數(shù) fun 的定義放在 main 函數(shù)之前,因此可在 main 函數(shù)中省去對 fun 函數(shù)的函數(shù)說明 int fun(int a,int b)。 3) 如在所有函數(shù)定義之前,在函數(shù)外預先說明了各個函數(shù)的類型,則在以后的各主調函數(shù)中,可不再對被調函數(shù)作說明。九)、難點突破該設計過程中最復雜也是最難理解的部分就是對i進行逆序運算,即:if(f1)m=i; x=0;while(m)x=x*10+m%10;m/=10; 分析:如果!f1=0執(zhí)行以下嵌套循環(huán) :將i的值賦給m;x=0,當m滿足 !m=0時執(zhí)行以下循環(huán)語句:x=x*10+m%10;m/10; 通過該循環(huán)實現(xiàn)對i的逆序運算,以i=113為例說明一下:首先將i的值賦給m則滿足!m=0執(zhí)行x=0*10+113%10;m/10;得到x=0+3=3;m=11同樣滿足!m=0執(zhí)行x=3*10+11%10;m/10;得到x=31;m=1同樣滿足!m=0執(zhí)行x=31*10+1%10;m/10;得到x=311;m=0不再滿足!m=0,終止以上語句的執(zhí)行得到i的逆序值x=311,其他數(shù)用同樣的方法可以類推 。 (3)附:參考課本例題【例 6.8】判斷 m 是否素數(shù)。 #include main() int m,i,k; scanf(“%d”,&m); k=sqrt(m); for(i=2;i=k+1) printf(“%d is a prime numbern”,m); else printf(“%d is not a prime numbern”,m);N-S 流程圖:【例 6.9】求 100 至200 間的全部素數(shù)#include main() int m,i,k,n=0; for(m=101;m=200;m=m+2) k=sqrt(m); for(i=2;i=k+1) printf(“%d”,m); n=n+1; if(n%n=0)printf(“n”); printf(“n”); 四、測試數(shù)據(jù)輸出結果:從鍵盤輸入:100 150輸出:num=5Press any key to continue五、心得體會總結起此次課程設計,我感慨頗多,的確,從從拿到題目到完成整個編程,從理論到實踐,在整整一個星期的日子里,可以學到很多很多的的東西,同時不僅鞏固了以前所學過的課本理論知識知識,而且學到了很多在書本上所沒有學到過的知識。老師把我們分為幾組,每一組六到七個人,并且分配了具體的任務。我們組的題目是在一定范圍內統(tǒng)計滿足本身是素數(shù)且逆序后仍是素數(shù)的數(shù)的個數(shù),對于我們這些非計算機專業(yè)的學生來說,這是一種考驗,雖然我們也學習了C語言,但是如果用來編一個相對大的實用的程序還是有一定難度的,因此這次實習對我們來說算是一次很好的的機會,能很好地鞏固一下我們平時所學。 拿到設計要求以后,第一天我們把設計整個程序需要用的相關知識的資料查找了一下,我們覺得用到的程序段不用太高級,第一天結束時我們對程序有了一個大概的輪廓。 第二、三天是我們自己編程了,這使我們很好的鍛煉了一下自己,因為這不僅考查我們平時所學,也將我們平時學習中的盲點都暴露出來了,促使我們填補了自己相關知識塊兒學習的空白,另外,編程是一件很枯燥很無聊的事情,同時這對我們的耐力也是一次很好的考驗,因為當你編輯的程序運行有錯時你要修改,有時改了還是有錯,一次次的改,又一次次的出現(xiàn)新問題,甚至把人都弄煩了,有時候一個消耗你幾個小時時間,但是還得耐著性子去改,另外這也很好的檢驗一個人的細心,因為在程序的編輯中,有時只是一個標點都會影響到整個程序的運行,所以,我覺得整個程序的編輯不僅是對我們學習能力的一次考察,同時也是對我們綜合能力的一次考查。 第四天,也是最關鍵的一天,我們全組的人要把程序弄在一起,讓它完成我們需要的功能并不是一件簡單的事,因為會出現(xiàn)我們意想不到的新問題,這時就需要大家共同配合了,大家對每次出現(xiàn)的新問題提出修改的建議不同,所以會有爭議而且說急了還“指手畫腳”,但是當這個問題解決以后,大家會露出會心的一笑,因為我們是一個團體,我們的爭執(zhí)都是為了我們的工作能做得更好,建議對的人還會自夸一下,調節(jié)一下氣氛,以便更有勁兒地投入到下一步的工作中去。 6月24號我們的程序終于完成了,雖然程序在執(zhí)行的結果上還是有點不完美,但是這是我們組這幾天來的集體心血,經過我們一步步的努力換來的,我們會很好的珍惜,通過這次實習我覺得暴露出了許多我自身存在的問題,使我彌補了我許多知識上的缺陷,弄清楚了我不懂的地方和似是而非的地方,豐富了自己的知識結構體系;同時也對自身各個方面能力有了很大的提高,我覺得這次實習對我的學習、生活來
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能設備遠程維護系統(tǒng)合作開發(fā)合同(2篇)
- 《餐飲服務與管理》課件-教學課件:中餐零點早餐服務
- 2025年上海市汽車租賃合同范本
- 2025屆高三押題信息卷(一)生物及答案
- 新質生產力指導
- 職業(yè)技術學院2024級文化創(chuàng)意與策劃專業(yè)人才培養(yǎng)方案
- 新質生產力基石
- 2025年人教版小學數(shù)學一年級上冊期末考試卷(帶答案)
- 動眼危象的臨床護理
- 2025煤炭供應合同模板
- 裝配式建筑技術創(chuàng)新與可持續(xù)發(fā)展-全面剖析
- 裝飾公司結算管理制度
- 實習生頂崗實習安全教育
- 網(wǎng)絡災難恢復計劃試題及答案
- 物業(yè)五一節(jié)前安全教育
- 海員的考試試題及答案
- 2024年全國高中數(shù)學聯(lián)賽(浙江預賽)試題含參考答案
- 人教PEP版(2024)三年級下冊英語Unit5 Old toys單元整體教學設計(共6課時)
- 微訓練 一文多考 備考高效之散文《在泥土中誕生》張煥軍 教師版
- 食材供應項目整體服務方案
- 針刺傷預防與處理(中華護理學會團體標準)
評論
0/150
提交評論