C語言程序設(shè)計教程課件:C語言經(jīng)典編程_第1頁
C語言程序設(shè)計教程課件:C語言經(jīng)典編程_第2頁
C語言程序設(shè)計教程課件:C語言經(jīng)典編程_第3頁
C語言程序設(shè)計教程課件:C語言經(jīng)典編程_第4頁
C語言程序設(shè)計教程課件:C語言經(jīng)典編程_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

C語言經(jīng)典編程【實例01】編制日歷【實例02】阿姆斯特朗數(shù)【實例03】素數(shù)幻方【實例04】模擬自動取款機屏幕【實例05】輸出九九表【實例06】彩球問題【實例07】遞歸解決分酒問題【實例08】獲取當前的CMOS信息【實例09】不使用strcpy()函數(shù)實現(xiàn)字符串的拷貝【實例10】尋找三重回文數(shù)【實例11】歸并排序【實例12】字母順序輸出字符串【實例13】字符串的匹配【實例14】應(yīng)用棧設(shè)置密碼【實例15】同時顯示兩個文件信息

【實例01】編制日歷輸入年份,自動生成該年日歷。利用自定義函數(shù)f()和g()求出某年一月一日是星期幾,并判定該年是否閏年。為了便于按星期輸出各月的日歷,引入三維數(shù)組的日期表intdate[12][6][7]。其中,12表示一年的12個月;6表示一個月最多有6周;7表示每周有7天。每個月的天數(shù)按照月份取自數(shù)組intday_tb1[][]。該數(shù)組是二維數(shù)組,第一行存儲平年的各月天數(shù),第二行存儲閏年的各月天數(shù)。

程序如下:

【實例02】阿姆斯特朗數(shù)

如果一個正整數(shù)等于每位數(shù)字的立方和,則稱該數(shù)為阿姆斯特朗數(shù),也叫自戀性數(shù)。編程求1000以內(nèi)的所有阿姆斯特朗數(shù)。依次取1000以內(nèi)的正整數(shù)i,將i的各位數(shù)字分解后,根據(jù)阿姆斯特朗數(shù)的性質(zhì)進行判斷。程序如下:

【實例03】素數(shù)幻方

所謂n階的素數(shù)幻方就是在一個n×n的矩陣中,每一個格子填入一個數(shù)字,使每一行、每一列和兩條對角線上的n個數(shù)字所組成的n位數(shù),均為可逆素數(shù),即正向和逆向組合的n位數(shù)都是素數(shù)。

求四階的素數(shù)幻方,若采用窮舉法,則設(shè)定4×4矩陣中每個元素的值后,判斷每一行、每一列和兩條對角線上的4個數(shù)字組成的4位數(shù)是否都是可逆素數(shù)。這種算法的程序?qū)崿F(xiàn)效率很低,窮舉和判定的次數(shù)過多。可先求出全部204個4位可逆素數(shù),以矩陣的行為單位,在4位可逆素數(shù)的范圍內(nèi)窮舉,然后將窮舉的4位整數(shù)分解為單個數(shù)字后,再進行列和對角線方向的篩選。

矩陣的第一行和最后一行數(shù)字,它們分別是列方向四位數(shù)的第一個數(shù)字和最后一個數(shù)字,由于這些四位數(shù)也是可逆素數(shù),因此矩陣的每一行和最后一行中的各個數(shù)字都不能為偶數(shù)或5。這樣窮舉矩陣的第一行和最后一行時,它們的取值范圍是:所有位的數(shù)字均不是偶數(shù)或5的四位可逆數(shù)。由于符合這一條件的四位可逆素數(shù)很少,因此這一范圍限制又一次減少了窮舉的次數(shù)。程序如下:

【實例04】模擬自動取款機屏幕

通過對自動取款機屏幕事務(wù)的模擬來學習switch語句。switch的中文意思是開關(guān),switch語句專門用來處理事務(wù)性的多分支情況。程序如下:

【實例05】輸出九九表

通過本例加深對for循環(huán)語句的理解,掌握光標位置的控制方法。程序如下:

【實例06】彩球問題

若一個口袋里放有12個球,其中有3個紅的、3個白的和6個黑的,問從中任取8個球共有多少種不同顏色的搭配?設(shè)任取8個球,其中紅球i個,白球j個,則黑球為8-i-j個。根據(jù)條件,紅球和白球數(shù)量的取值范圍是0~3,黑球數(shù)量的取值范圍即8-i-j≤6。程序如下:

【實例07】遞歸解決分酒問題

法國著名數(shù)學家Poison在青年時代研究過一個有趣的數(shù)學問題:一個酒徒有12品脫的啤酒一瓶,他想從中倒取6品脫,但又沒有正好6品脫的容器,僅有一個8品脫和5品脫的容器,怎樣才能將啤酒分為兩個6品脫呢?用a代表12品脫的瓶子,b代表8品脫的瓶子,c代表5品脫的瓶子,倒酒的規(guī)則如下:按照a→b→c→a的順序;b倒空后才能從a中取;c裝滿后才能向a中倒酒。

程序如下:

【實例08】獲取當前的CMOS信息

通過系統(tǒng)調(diào)用來獲取CMOS的信息。計算機把系統(tǒng)配置信息存放在CMOS存儲器中,包括用戶驅(qū)動類型、系統(tǒng)日期等。本例中程序通過調(diào)用inportb和outportb函數(shù)來獲取CMOS信息,并顯示相關(guān)內(nèi)容。70H和71H分別是針對CMOS進行寫入和讀取的端口。程序如下:

【實例09】不使用strcpy()函數(shù)實現(xiàn)字符串的拷貝

這是C語言里面復制字符串的庫函數(shù),函數(shù)聲明包括在專門處理字符串的頭文件<string.h>中,char*strcpy(char*dst,constchar*src);函數(shù)用于把字符串src復制到一分配好的字符串空間dst中,復制的時候包括標志字符串結(jié)尾的空字符一起復制。操作成功,返回dst,否則返回NULL。

使用char*的原因是,函數(shù)strcpy1()用于把參數(shù)s字符串復制到d參數(shù),由于d參數(shù)將進行修改,因此它必須是個字符數(shù)組或者是一個指向動態(tài)分配內(nèi)存的數(shù)組的指針,不能使用字符串常量。

程序如下:

【實例10】尋找三重回文數(shù)

回文數(shù)是指其各位數(shù)字左右堆成的整數(shù),例如121,94249等。三重回文數(shù)是指某個數(shù)字m、m2、m3都是回文數(shù),例如m=11,m2=121,m3=1331。本例編程尋找11~999之間的回文數(shù),要求編制函數(shù)intsvalue(longm)實現(xiàn)此功能。如果是回文數(shù),則函數(shù)返回1,否則返回0,最后把結(jié)果輸出到文件out中去。程序如下:

【實例11】歸并排序

歸并是指將若干已排序的子文件合并成一個有序的文件。MergeSort是利用“歸并”技術(shù)進行排序的一種常見的穩(wěn)定的排序方法。設(shè)兩個有序的子文件放在同一向量中相鄰的位置R[low..m],R[m+1..high],先將它們合并到一個局部的暫存向量R1中,待合并完成后將R1復制回R[low..high]中。.程序如下:

【實例12】字母順序輸出字符串

這是C語言里面比較字符串大小的庫函數(shù),函數(shù)聲明包括在專門處理字符串的頭文件<string.h>中。有三個字符串str1,str2,str3,使用標準庫函數(shù)strcmp()兩兩比較,按照字母先后順序輸出字符串。程序如下:

【實例13】字符串的匹配

這是C語言里面字符串匹配的庫函數(shù),函數(shù)聲明包括在專門處理字符串的頭文件<string.h>中。不使用C語言標準庫函數(shù)strstr()完成此項操作。在目標字符串中查找是否含有子串,如果查找到含有子串,則輸出主串中第一個匹配字符的位置。程序如下:

【實例14】應(yīng)用棧設(shè)置密碼

當用戶輸入錯誤密碼時,系統(tǒng)提示密碼錯誤,要求重新輸入,只有輸入正確的密碼(123456),才能進行下一步操作。本例通過棧來設(shè)置密碼,涉及了棧的定義、初始化、刪除以及銷毀。程序如下:

【實例15】同時

溫馨提示

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

評論

0/150

提交評論