① 近兩天要定論文題目了,我對C語言很感興趣,但不知道如何下手,大家幫幫小女子啊
編輯詞條c語言
目錄
定義
C語言的發展歷史
C語言的優點
C語言的缺點
C源程序的結構特點
學習C語言
新標准
C程序實例
編輯本段定義
C語言是一種計算機程序設計語言。它既有高級語言的特點,又具有匯編語言的特點。它可以作為系統設計語言,編寫工作系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。因此,它的應用范圍廣泛。
C語言對操作系統和系統使用程序以及需要對硬體進行操作的場合,用C語言明顯優於其它解釋型高級語言,有一些大型應用軟體也是用C語言編寫的。
C語言具有繪圖能力強,可移植性,並具備很強的數據處理能力,因此適於編寫系統軟體,三維,二維圖形和動畫。它是數值計算的高級語言。
常用的C語言IDE(集成開發環境)有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,Microsoft C,High C,Turbo C等等......
編輯本段C語言的發展歷史
C語言的原型ALGOL 60語言。(也稱為A語言)
1963年,劍橋大學將ALGOL 60語言發展成為CPL(Combined Programming Language)語言。
1967年,劍橋大學的Matin Richards 對CPL語言進行了簡化,於是產生了BCPL語言。
1970年,美國貝爾實驗室的Ken Thompson將BCPL進行了修改,並為它起了一個有趣的名字「B語言」。意思是將CPL語言煮干,提煉出它的精華。並且他用B語言寫了第一個UNIX操作系統。
而在1973年,B語言也給人「煮」了一下,美國貝爾實驗室的D.M.RITCHIE在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。
為了使UNIX操作系統推廣,1977年Dennis M.Ritchie 發表了不依賴於具體機器系統的C語言編譯文本《可移植的C語言編譯程序》。即是著名的ANSI C。
1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的「THE C PROGRAMMING LANGUAGE」一書。通常簡稱為《K&R》,也有人稱之為《K&R》標准。但是,在《K&R》中並沒有定義一個完整的標准C 語言,後來由美國國家標准協會(American National Standards Institute)在此基礎上制定了一個C 語言標准,於一九八三年發表。通常稱之為ANSI C。
1988年,隨著微型計算機的日益普及, C語言出現了許多版本。由於沒有統一的標准,使得這些C語言之間出現了一些不一致的地方。為了改變這種情況,美國國家標准研究所(ANSI)為C語言制定了一套ANSI標准, 成為現行的C語言標准3.C語言的主要特點 。C語言發展迅速, 而且成為最受歡迎的語言之一, 主要因為它具有強大的功能。許多著名的系統軟體, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 語言編寫的。用C語言加上一些匯編語言子程序, 就更能顯示C語言的優勢了,象PC- DOS 、WORDSTAR等就是用這種方法編寫的。
編輯本段C語言的優點
1. 簡潔緊湊、靈活方便
C語言一共只有32個關鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示。它把高級語言的基本結構和語句與低級語言的實用性結合起來。 C 語言可以象匯編語言一樣對位、位元組和地址進行操作, 而這三者是計算機最基本的工作單元。
2. 運算符豐富
C的運算符包含的范圍很廣泛,共有種34個運算符。C語言把括弧、賦值、強制類型轉換等都作為運算符處理。從而使C的運算類型極其豐富表達式類型多樣化,靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。
3. 數據結構豐富
C的數據類型有:整型、實型、字元型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種復雜的數據類型的運算。並引入了指針概念,使程序效率更高。另外C語言具有強大的圖形功能, 支持多種顯示器和驅動器。且計算功能、邏輯判斷功能強大。
4. C是結構式語言
結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰, 便於使用、維護以及調試。C語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。
5. C語法限制不太嚴格,程序設計自由度大
雖然C語言也是強類型語言,但它的語法比較靈活,允許程序編寫者有較大的自由度。
6. C語言允許直接訪問物理地址,可以直接對硬體進行操作
因此既具有高級語言的功能,又具有低級語言的許多功能,能夠象匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元,可以用來寫系統軟體。
7. C語言程序生成代碼質量高,程序執行效率高
一般只比匯編程序生成的目標代碼效率低10へ20%。
8. C語言適用范圍大,可移植性好
C語言有一個突出的優點就是適合於多種操作系統, 如DOS、UNIX,也適用於多種機型。
編輯本段C語言的缺點
1. C語言的缺點主要是表現在數據的封裝性上,這一點使得C在數據的安全性上做的有很大缺陷,這也是C和C++的一大區別。
2. C語言的語法限制不太嚴格,對變數的類型約束不嚴格,影響程序的安全性,對數組下標越界不作檢查等。從應用的角度,C語言比其他高級語言較難掌握。
[C語言指針]
指針就是C語言的一大特色,可以說C語言優於其它高級語言的一個重要原因就是因為它有指針操作可以直接進行靠近硬體的操作,但是C的指針操作也給它帶來了很多不安全的因素。C++在這方面做了很好的改進,在保留了指針操作的同時又增強了安全性。Java取消了指針操作,提高了安全性。
編輯本段C源程序的結構特點
1.一個C語言源程序可以由一個或多個源文件組成。
2.每個源文件可由一個或多個函數組成。
3.一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。
4.源程序中可以有預處理命令(include 命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。
5.每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括弧「}」之後不能加分號。
6.標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。
編輯本段學習C語言
在初學C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數學學習中不同(如運算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進行學習,待學完後面的章節知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學最欠缺,大多學不好的就是因為一開始遇到困難就放棄,曾經和好多同學談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎麼說自己聽不懂呢?相應的根本就沒學習,又談何學的好?
學習C語言始終要記住「曙光在前頭」和「千金難買回頭看」,「千金難買回頭看」是學習知識的重要方法,就是說,學習後面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學生最不易做到的,然而卻又是最重要的。學習C語言就是要經過幾個反復,才能前後貫穿,積累應該掌握的C知識。
那麼,我們如何學好《C程序設計》呢?
一.學好C語言的運算符和運算順序
這是學好《C程序設計》的基礎,C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,只要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算符在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。
先要明確運算符按優先順序不同分類,《C程序設計》運算符可分為15種優先順序,從高到低,優先順序為1 ~ 15,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序.
二.學好C語言的四種程序結構
(1)順序結構
順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。
例如;a = 3,b = 5,現交換a,b的值,這個問題就好像交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序為: c = a; a = b; b = c; 執行結果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。 順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等。
(2) 分支結構
順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對於要先做判斷再選擇的問題就要使用分支結構。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。分支結構適合於帶有邏輯或關系比較等條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然後根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易於理解。程序流程圖是根據解題分析所繪制的程序執行流程圖。
學習分支結構不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執行的功能,嵌套結構也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結構。
①if(條件)
{分支體}
這種分支結構中的分支體可以是一條語句,此時「{ }」可以省略,也可以是多條語句即復合語句。它有兩條分支路徑可選,一是當條件為真,執行分支體,否則跳過分支體,這時分支體就不會執行。如:要計算x的絕對值,根據絕對值定義,我們知道,當x>=0時,其絕對值不變,而x<0時其絕對值是為x的反號,因此程序段為:if(x<0) x=-x;
②if(條件)
{分支1}
else
{分支2}
這是典型的分支結構,如果條件成立,執行分支1,否則執行分支2,分支1和分支2都可以是1條或若干條語句構成。如:求ax^2+bx+c=0的根
分析:因為當b^2-4ac>=0時,方程有兩個實根,否則(b^2-4ac<0)有兩個共軛復根。其程序段如下:
d=b*b-4*a*c;
if(d>=0)
{x1=(-b+sqrt(d))/2a;
x2=(-b-sqrt(d))/2a;
printf(「x1=%8.4f,x2=%8.4f\n」,x1,x2);
}
else
{r=-b/(2*a);
i =sqrt(-d)/(2*a);
printf(「x1=%8.4f+%8.4fi\n」r, i);
printf(「x2=%8.4f-%8.4fi\n」r,i)
}
③嵌套分支語句:其語句格式為:
if(條件1) {分支1};
else if(條件2) {分支2}
else if(條件3) {分支3}
……
else if(條件n) {分支n}
else {分支n+1}
嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套後,語句結構變得非常復雜,對於程序的閱讀和理解都極為不便,建議嵌套在3重以內,超過3重可以用下面的語句。
④switch開關語句:該語句也是多分支選擇語句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同if…else 語句,它的所有分支都是並列的,程序執行時,由第一分支開始查找,如果相匹配,執行其後的塊,接著執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。這個語句在應用時要特別注意開關條件的合理設置以及break語句的合理應用。
(3)循環結構:
循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段演算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do ?Cwhile循環和for循環。四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環,因為強制改變程序的順序經常會給程序的運行帶來不可預料的錯誤,在學習中我們主要學習while、do…while、for三種循環。常用的三種循環結構學習的重點在於弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環的格式和執行順序,將每種循環的流程圖理解透徹後就會明白如何替換使用,如把while循環的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。特別要注意在循環體內應包含趨於結束的語句(即循環變數值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。
在學完這三個循環後,應明確它們的異同點:用while和do…while循環時,循環變數的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while 循環和for循環都是先判斷表達式,後執行循環體,而do…while循環是先執行循環體後判斷表達式,也就是說do…while的循環體最少被執行一次,而while 循環和for就可能一次都不執行。另外還要注意的是這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與if構成的循環,是不能用break和 continue語句進行控制的。
順序結構、分支結構和循環結構並不彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構,其實不管哪種結構,我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結構相互結合以實現各種演算法,設計出相應程序,但是要編程的問題較大,編寫出的程序就往往很長、結構重復多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設計成模塊化結構。
(4)模塊化程序結構
C語言的模塊化程序結構用函數來實現,即將復雜的C程序分為若干模塊,每個模塊都編寫成一個C函數,然後通過主函數調用函數及函數調用函數來實現一大型問題的C程序編寫,因此常說:C程序=主函數+子函數。 因此,對函數的定義、調用、值的返回等中要尤其注重理解和應用,並通過上機調試加以鞏固。
三.掌握一些簡單的演算法
編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應的編程語言寫出代碼。這就要求掌握演算法,根據我們的《C程序設計》教學大綱中,只要求我們掌握一些簡單的演算法,在掌握這些基本演算法後,要完成對問題的分析就容易了。如兩個數的交換、三個數的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些演算法的內在含義
結語:當我們把握好上述幾方面後,只要同學們能克服畏難、厭學、上課能專心聽講,做好練習與上機調試,其實C語言並不難學
C源程序的關鍵字---------------------------------------------------------------------------------------
所謂關鍵字就是已被C語言本身使用, 不能作其它用途使用的字。例如關鍵字不能用作變數名、函數名等
由ANSI標準定義的C語言關鍵字共32個 :
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static
根據關鍵字的作用,可以將關鍵字分為數據類型關鍵字和流程式控制制關鍵字兩大類。
1 數據類型關鍵字
A基本數據類型(5個)
void :聲明函數無返回值或無參數,聲明無類型指針,顯式丟棄運算結果
char :字元型類型數據,屬於整型數據的一種
int :整型數據,通常為編譯器指定的機器字長
float :單精度浮點型數據,屬於浮點數據的一種
double :雙精度浮點型數據,屬於浮點數據的一種
B 類型修飾關鍵字(4個)
short :修飾int,短整型數據,可省略被修飾的int。
long :修飾int,長整形數據,可省略被修飾的int。
signed :修飾整型數據,有符號數據類型
unsigned :修飾整型數據,無符號數據類型
C 復雜類型關鍵字(5個)
struct :結構體聲明
union :共用體聲明
enum :枚舉聲明
typedef :聲明類型別名
sizeof :得到特定類型或特定類型變數的大小
D 存儲級別關鍵字(6個)
auto :指定為自動變數,由編譯器自動分配及釋放。通常在棧上分配
static :指定為靜態變數,分配在靜態變數區,修飾函數時,指定函數作用域為文件內部
register :指定為寄存器變數,建議編譯器將變數存儲到寄存器中使用,也可以修飾函數形參,建議編譯器通過寄存器而不是堆棧傳遞參數
extern :指定對應變數為外部變數,即在另外的目標文件中定義,可以認為是約定由另外文件聲明的對象的一個「引用」
const :與volatile合稱「cv特性」,指定變數不可被當前線程/進程改變(但有可能被系統或其他線程/進程改變)
volatile :與const合稱「cv特性」,指定變數的值有可能會被系統或其他進程/線程改變,強制編譯器每次從內存中取得該變數的值
2 流程式控制制關鍵字
A 跳轉結構(4個)
return :用在函數體中,返回特定值(或者是void值,即不返回值)
continue :結束當前循環,開始下一輪循環
break :跳出當前循環或switch結構
goto :無條件跳轉語句
B 分支結構(5個)
if :條件語句
else :條件語句否定分支(與if連用)
switch :開關語句(多重分支語句)
case :開關語句中的分支標記
default :開關語句中的「其他」分治,可選。
C 循環結構(3個)
for :for循環結構,for(1;2;3)4;的執行順序為1->2->4->3->2...循環,其中2為循環條件
do :do循環結構,do 1 while(2); 的執行順序是 1->2->1...循環,2為循環條件
while :while循環結構,while(1) 2; 的執行順序是1->2->1...循環,1為循環條件
以上循環語句,當循環條件表達式為真則繼續循環,為假則跳出循環。
② 計算機專業的基於C語言的圖書管理系統的設計與實現 論文開題報告
這個圖書管理系統有詳細要求嗎?
可以發給我看看 我做
③ C語言課程設計報告要求
一 、 設計題目
萬年歷的設計
二 、設計要求
1、能夠顯示星期;
2、能夠顯示年月日;
3、能夠修改;
4、當系統時間變動時,能自動跳到相應的時間。
三 、 設計目的
1. 通過本項課程設計,可以培養獨立思考、 綜合運用所學有關相應知識的能力,能更好的鞏固《C語言程序設計》課程學習的內容,掌握 工程軟體設計的基本方法,強化上機動手編程能力,闖過理論與實踐相結合的難關!更加了解了c語言的好處和其可用性!同時增加了同學之間的團隊合作精神!更加也體會到以後在工作中團隊合作的重要性和必要性!
2. 通過C語言課程設計,使學生了解高級程序設計語言的結構,掌握基本的程序設計過程和技巧,掌握基本的分析問題和利用計算機求解問題的能力,具備初步的高級語言程序設計能力。為後續各門計算機課程的學習和畢業設計打下堅實基礎。
四 、設計思想及過程
【一】由於萬年歷具有以下特點:
1。平年365天(52周+1天),閏年366天(52周+2天)。平年2月28天,閏年2月29天。
由於公元1月1日設為星期六,故3月1日為星期三。 ——注意這個「三」
為使演算法達到最簡,故本演算法以「星期」為計算單位。且選3月1日為基月。
2。每400年整一閏,或每4年且不為百年的一閏。(原因:地球繞太陽一周的時間是365天5小時46秒,為了使一年的天數為整數,將一年的天數定為365天,餘下的時間積累起來,四年就是23小時15分4秒,將近一天,把這一天加在某年的二月而成29天,該年稱為閏年,其它年稱為平年。但四年加一天又多用了44分56秒,這個數積滿400年為三天。因此400年中只能有97個閏年,所以凡能被400整除,或不能被100整除但能被4整除的年份為閏年。)
所以百年%4=0閏或(年%4=0並且年<>0)閏。
3。每 4年(3個平年+1個閏年)共208周+5天 ——注意這個「5天」
每百年共100*(208周+5天)-1天=5217周+5天 ——注意這個「5天」(整百年暫設為平年)
每400年共4*(5217周+5天)+1天(整400年閏)=20871周+0天——注意這個「0天」和
「1天」(4個整百年只有一個閏年)
即400年一輪回!(原來萬年歷400年前是一家)
【二】根據萬年歷以上特點進行編寫:
首先對萬年歷年、月、日進行編寫,編寫程序先定義每月的天數為28天,如月份為1、3、5、7、8、10、12就定義天數為31天反之如果月份為4、6、9、11就輸出天數為30天,由上可見2月份為28天但是如果為閏年就有29天就要定義另一個函數#define Year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:0當為閏年時可得1加上該程序便可得到每月的天數。 具體程序見(五、萬年歷程序)
再對其中的星期進行編寫:由於公元1月1日設為星期六,故3月1日為星期三,可以用萬年3月1日星期演算法(特別是那個三)
由於其公式為:
某年3月1日星期幾=(3天+百年%4*5天+年/4*5天+年%4+月星期表+日-1天)%7
某年3月1日星期幾=(百年%4*5天+年/4*5天+年%4+月星期表+日+2天)%7
或 某年3月1日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7
閏4百年3月1日星期演算法(百年%4=0)
其公式為:
某年3月1日星期幾=(年+年/4+月星期表+日+2天)%7
例:0000年3月1日星期幾=(0+0/4+0+1+2)%7=3%7=星期三
1600年3月1日星期幾=(0+0/4+0+1+2)%7=3%7=星期三
2000年3月1日星期幾=(0+0/4+0+1+2)%7=3%7=星期三
2001年3月1日星期幾=(1+1/4+0+1+2)%7=4%7=星期四
2004年3月1日星期幾=(4+4/4+0+1+2)%7=8%7=星期一
2008年3月1日星期幾=(8+8/4+0+1+2)%7=13%7=星期六
2042年3月1日星期幾=(42+42/4+0+1+2)%7=55%7=星期六
平4百年3月1日星期演算法(百年%4<>0)
其公式為:
某年3月1日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7
例:1700年3月1日星期幾=(17%4*5+0+0/4+0+1+2)%7=8%7=星期一(注意:1700年是平年)
1800年3月1日星期幾=(18%4*5+0+0/4+0+1+2)%7=13%7=星期六(注意:1800年是平年)
1900年3月1日星期幾=(19%4*5+0+0/4+0+1+2)%7=18%7=星期四(注意:1900年是平年)
1901年3月1日星期幾=(19%4*5+1+1/3+0+1+2)%7=19%7=星期五
1918年3月1日星期幾=(19%4*5+18+18/4+0+1+2)%7=(15+22+3)%7=40%7=星期五
1958年3月1日星期幾=(19%4*5+58/4*5+58%4+3)%7=(15+70+2+3)%7=90%7=星期六
1988年3月1日星期幾=(19%4*5+88/4*5+88%4+3)%7=(15+110+0+3)%7=128%7=星期二
1999年3月1日星期幾=(19%4*5+99/4*5+99%4+3)%7=(15+120+3+3)%7=141%7=星期一
2100年3月1日星期幾=(21%4*5+0/4*5+0%4+3)%7=(5+0+0+3)%7=8%7=星期一(注意:2100年是平年)
2101年3月1日星期幾=(21%4*5+1/4*5+1%4+3)%7=(5+0+1+3)%7=9%7=星期二
2102年3月1日星期幾=(21%4*5+2/4*5+2%4+3)%7=(5+0+2+3)%7=10%7=星期三
2103年3月1日星期幾=(21%4*5+3/4*5+3%4+3)%7=(5+0+3+3)%7=11%7=星期四
2104年3月1日星期幾=(21%4*5+4/4*5+4%4+3)%7=(5+1+0+3)%7=9%7=星期二(注意:2104年是閏年)
9999年3月1日星期幾=(99%4*5+99/4*5+99%4+3)%7=(120+15+3+3)%7=141%7=星期一
註:按400年一輪回!(400年前是一家)的說法
1600年,2000年是一樣的;
1700年,2100年是一樣的;
1800年,2200年是一樣的;
1900年,2300年是一樣的。
其中萬年某日星期演算法
其公式為:
某日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7
通同星期偏差表
閏年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
天數 31 29 31 30 31 30 31 31 30 31 30 31
星期 3 6 0 3 5 1 3 6 2 4 0 2
平年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
天數 31 28 31 30 31 30 31 31 30 31 30 31
星期 4 0 0 3 5 1 3 6 2 4 0 2
為對以上的萬年歷星期的演算法是正確的對其進行了以下的計算:
⒈對於二十世紀任意日期可以用公式某日星期幾=(百年%4*5天+年+年/4+平年月星期表+日+2天)%7=(19%4*5天+年+年/4+平年月星期表+日+2天)%7=(15天+年+年/4+平年月星期表+日+2天)%7以下就是根據上面對其進行的計算:
1900年元旦 1日=(0/4*5+0%4+1+3)%7=(0+0+4)%7=4
1月表=4(平年) 故 4+4=1 即1900年元旦是星期一
1949年國慶 1日=(49/4*5+49%4+1+3)%7=(60+1+4)%7=2
10月表=4(平年) 故 4+2=6 即1949年國慶是星期六
1999年12月31日 31日=(99/4*5+99%4+31+3)%7=(120+3+34)%7=3
12月表=2(平年) 故 2+3=5 即1999年12月31日是星期五
⒉對於二十一世紀新前年蟲演算法(20%4*5=0)可以用公式:某日星期幾=(百年%4*5天+年+年/4+閏年月星期表+日+2天)%7 =(20%4*5天+年+年/4+閏年月星期表+日+2天)%7以下就是根據上面對其進行的計算:
2000年元旦 1日=(0+0/4+1+2)%7=(0+0+1+2)%7=3
1月表=3(閏年) 故 3+3->6 即2027年元旦是星期六
2018年春節 16日=(18+18/4+16+2)%7=(18+4+16+2)%7=5
2月表=0(平年) 故 0+5=5 即2018年春節是星期五
2099年12月31日 31日=(99/4*5+99%4+31+2)%7=(120+3+33)%7=2
12月表=2(平年) 故 2+2=4 即2099年12月31日是星期四
對於上面的分析以及公式的推論和計算證明可以對萬年歷中的星期進行了編寫具體編寫程序見(五 、萬年歷程序)中。
五 、萬年歷源程序
#include"stdio.h"
#include"dos.h"
#include"conio.h"
#include"stdlib.h"
#define Year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:0 /*判斷閏年*/
int numofMonth(int y,int m){
int day,t=28;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
day=31; /*定義以上月份為31天*/
else if(m==4||m==6||m==9||m==11)
day=30; /*定義以上月份為30天*/
else{t+=Year(y);
day=t;} /*閏年二月29天,平年28天*/
return day;}
int numofYear(int y){
int t=365; /*平年365天*/
t+=Year(y);/*閏年366天*/
return t;}
int numofbeforeDays(int y,int m,int d){
int sum=d,i;
for(i=1;i<m;i++)
sum+=numofMonth(y,i);
return sum;}
int numofafterDays(int y,int m,int d){
int sum=0,i;
for(i=m;i<=12;i++)
sum+=numofMonth(y,i);
sum-=d;
return sum;}
int isDay(int y,int m,int d){
int year=1900,month=1,week=1,i; /*定義萬年歷是從1900年開始*/
long sum=0;
for(i=year;i<y;i++)
sum+=numofYear(i);
for(i=1;i<m;i++)
sum+=numofMonth(y,i);
/* ++sum;*/
i=sum%7;
week=(week+i)%7;
return week;}
void empty(int n){
int i;
for(i=0;i<n;i++)
printf("%*c",6,' ');}
void OutPutCalender(int y,int m,int d)/*計算x年x月x是星期幾*/{
int week,i,num,t;
week=isDay(y,m,1);
printf("%6d/%02d/%02d\n",y,m,d);
printf("%6s%6s%6s%6s%6s%6s%6s\n","Sun","Mon","Tue","Wed","Thu","Fri","Sat");
empty(week);
num=numofMonth(y,m);
for(i=1;i<=num;i++){
printf("%6d",i);
t=(week+i)%7;
if(t==0)
printf("\n");} /*游標移到下一行*/
printf("\n");}
long numBTDays(int y1,int m1,int d1,int y2,int m2,int d2)/*定義兩個不同日期*/{
int i;
long sum=0;
for(i=y1+1;i<y2;i++)
sum+=numofYear(i);
if(y1==y2){ sum-=d1;
for(i=m1;i<m2;i++)
sum+=numofMonth(y1,i);
sum+=d2;}
else{sum+=numofafterDays(y1,m1,d1);
sum+=numofbeforeDays(y2,m2,d2);}
return sum;}
int Select_mean(){
int sm;
printf("1. OutPut Calender\n"); /*輸出當前月份的日歷*/
printf("2. Help\n"); /*幫助*/
printf("0. Quit\n"); /*退出*/
printf("Please enter choose(0--2):"); /*從0-2中選擇*/
do
scanf("%d",&sm); /*輸入sm*/
while(sm<0||sm>3);
return sm;}
void Help()/*輸出幫助欄的內容*/{
printf(" 1. OutPut Calender\n");
printf(" 2. System Help\n");
printf(" 0. Quit\n");
printf("Page Up: Up year\n"); /*上一年*/
printf("Page Down: next year\n"); /*下一年*/
printf(" --> : next month\n"); /*上一月*/
printf(" <-- : Up month\n");/*下一月*/}
main(){
int year=2006,year1=2006,month,day,y1,m1,d1,y2,m2,d2,c,t; /*定義運行後的日期是2006年*/
int inkeySCAN,inkey; /*輸入鍵盤操作信息*/
union REGS inregs,outregs;
inregs.h.ah=0x2a;
intdos(&inregs,&outregs);
/* year=outregs.xcx; */
month=outregs.h.dh;
day=outregs.h.dl;
year1=year;
printf("%d/%02d/%02d\n",year,month,day);
while(1)/*當選擇為1時,執行以下語句*/{
switch(Select_mean()){
case 1:
OutPutCalender(year,month,day);
while(1){
inkey=bioskey(0);
inkeySCAN=(inkey&0xFF00)>>8;
if(inkeySCAN==77){
if(month==12){month=1;year1++;
OutPutCalender(year1,month,day);/*輸出日歷*/}
else{month++;
OutPutCalender(year1,month,day);
}}
if(inkeySCAN==75){
if(month==1){month=12;year1--;
OutPutCalender(year1,month,day);}
else{month--;OutPutCalender(year1,month,day);}}
if(inkeySCAN==73){
if(year1==1900) year1=year;
else{year1--;OutPutCalender(year1,month,day);}}
if(inkeySCAN==81){
year1++;OutPutCalender(year1,month,day);}
if(inkeySCAN==28)break;}
break; /*終止循環*/
case 2:
Help();
break;
case 0:
exit(0);
default:
printf("Enter ERROR!\n");
break;} }
}
六 運行過程
1.雙擊TC
1. 當對上面的程序進行了調試後運行會出現下面所示:
第一行所顯示的就是系統時間!滿足了第一條要求「顯示年、月、日」。
而當改變系統時間後!再運行該程序上面的日期也隨系統時間改變,所以滿足第四條「當系統時間變動時,能自動跳到相應的時間。」
2. 在游標處按下「1」後回車,將會顯示:
以上的顯示也證明了條件的第2條可以「顯示星期!」
3. 在游標處按下「2」後回車,將會顯示:
按著幫助所講進行了運行可知:按「 Page Up 」鍵其下面接著會顯示上一年該月的萬年歷,按「 Page Down 」鍵其下面會接著顯示下一年該月的萬年歷;按「 ← 」鍵下面將會接著顯示當年上一個月的萬年歷,按「 → 」鍵將會接著在下面顯示去下一個月的萬年歷。
4.
由上所顯示鍵入「0」後將會退去該程序。
由以上運行的結果可知該c語言所設計的萬年歷滿足設計要求!
七、在C語言編程中常見錯誤
C語言的最大特點是:功能強、使用方便靈活。C編譯的程序對語法檢查並不象其它高級語言那麼嚴格,這就給我們留下「靈活的餘地」,但還是由於這個靈活給程序的調試帶來了許多不便,尤其對我們這些初學C語言的人來說,經常會出一些連自己都不知道錯在哪裡的錯誤。看著有錯的程序,不知該如何改起,我通過這次編程,也積累了一些C編程時常犯的錯誤:
1. 書寫標識符時,忽略了大小寫字母的區別。
編譯程序把a和A認為是兩個不同的變數名,而顯示出錯信息。C語言認為大寫字母和小寫字母是兩個不同的字元。習慣上,符號常量名用大寫,變數名用小寫表示,以增加可讀性。
2.忽略了變數的類型,進行了不合法的運算。
%是求余運算,得到a/b的整余數。整型變數a和b可以進行求余運算,而實型變數則不允許進行「求余」運算。
3.將字元常量與字元串常量混淆。
混淆了字元常量與字元串常量,字元常量是由一對單引號括起來的單個字元,字元串常量是一對雙引號括起來的字元序列。C規定以「\」作字元串結束標志,它是由系統自動加上的,所以字元串「a」實際上包含兩個字元:『a'和『\',而把它賦給一個字元變數是不行的。
4.忽略了「=」與「==」的區別。
在C語言中,「=」是賦值運算符,「==」是關系運算符。如:
if (a==3) a=b;
前者是進行比較,a是否和3相等,後者表示如果a和3相等,把b值賦給a。由於習慣問題,初學者往往會犯這樣的錯誤。
5.忘記加分號。
分號是C語句中不可缺少的一部分,語句末尾必須有分號。
a=1 b=2
編譯時,編譯程序在「a=1」後面沒發現分號,就把下一行「b=2」也作為上一行語句的一部分,這就會出現語法錯誤。改錯時,有時在被指出有錯的一行中未發現錯誤,就需要看一下上一行是否漏掉了分號。
{ z=x+y;
t=z/100;
printf("%f",t);
}
對於復合語句來說,最後一個語句中最後的分號不能忽略不寫(這是和PASCAL不同的)。
6.多加分號。
對於一個復合語句,如:
{ z=x+y;
t=z/100;
printf("%f",t);
};
復合語句的花括弧後不應再加分號,否則將會畫蛇添足。
又如:
if (a%3==0);
I++;
本是如果3整除a,則I加1。但由於if (a%3==0)後多加了分號,則if語句到此結束,程序將執行I++語句,不論3是否整除a,I都將自動加1。
再如:
for (I=0;I<5;I++);
{scanf("%d",&x);
printf("%d",x);}
本意是先後輸入5個數,每輸入一個數後再將它輸出。由於for()後多加了一個分號,使循環體變為空語句,此時只能輸入一個數並輸出它。
7.輸入變數時忘記加地址運算符「&」。
int a,b;
scanf("%d%d",a,b);
這是不合法的。Scanf函數的作用是:按照a、b在內存的地址將a、b的值存進去。「&a」指a在內存中的地址。
8.輸入數據的方式與要求不符。scanf("%d%d",&a,&b);輸入時,不能用逗號作兩個數據間的分隔符,如下面輸入不合法:
3,4
輸入數據時,在兩個數據之間以一個或多個空格間隔,也可用回車鍵,跳格鍵tab。
scanf("%d,%d",&a,&b);C規定:如果在「格式控制」字元串中除了格式說明以外還有其它字元,則在輸入數據時應輸入與這些字元相同的字元。下面輸入是合法的:
3,4
此時不用逗號而用空格或其它字元是不對的。
3 4 3:4
又如:
scanf("a=%d,b=%d",&a,&b);
輸入應如以下形式:
a=3,b=4
9.輸入字元的格式與要求不一致。
在用「%c」格式輸入字元時,「空格字元」和「轉義字元」都作為有效字元輸入。
scanf("%c%c%c",&c1,&c2,&c3);
如輸入a b c
字元「a」送給c1,字元「 」送給c2,字元「b」送給c3,因為%c只要求讀入一個字元,後面不需要用空格作為兩個字元的間隔。
10.輸入輸出的數據類型與所用格式說明符不一致。
例如,a已定義為整型,b定義為實型
a=3;b=4.5;
printf("%f%d\n",a,b);
語法錯
邏輯錯 運行錯
0.忘記定義變數:
main()
{x=3;y=6;
printf(「%d\n」,x+y);
11.C語言的變數一定要先定義才能使用;
12.輸入輸出的數據的類型與所用格式說明符不一致
int a=3;float b=4.5;printf(「%f%d\n」,a,b);
它們並不是按照賦值的規則進行轉換(如把4.5轉換為4),而是將數據在存儲單元中的形式按格式符的要求組織輸出(如b佔4個位元組,只把最後兩個位元組的數據按%d,作為整數輸出)
13.未注意int型數據的數值范圍
int型數據的數值范圍(-32768~32768)
int num=89101;
printf(「%d」,num);
會將超過低16位的數截去從而得到23563
注意:定義了long型,而在輸出時仍用」%d」說明符,仍會出現以上錯誤
14.輸入變數時忘記使用地址符
scanf(「%d%d」,a,b);
15.輸入時數據的組織與要求不符
對scanf函數中格式字元串中除了格式說明符外,對其他字元必須按原樣輸入
16.誤把」=「作為」等於」比較符
「=「為附值運算符
「==「為比較運算符
17.語句後面漏分號
{
t=a;
a=b;
b=t
}
它是pascal的語法
18.不該加分號的地方加了分號
if(a>b);
printf(「a is larger than b\n」);
for(i=0;i<10;i++);
{
scanf(「%d」,&x);
printf(「%d\n」,x*x);
}
19.對應該有花括弧的復合語句,忘記加花括弧
sum=0;
i=1;
while(i<=100)
sum=sum+1;
i++;
20.括弧不配對
while((c=getchar()!=『#』)
putchar(c);
11.在用標識時,忘記了大寫字母和小寫字母的區別
{
int a,b,c;
a=2;
b=3;
C=A+B;
printf(「%d+%d=%D」,A,B,C);
}
12.引用數組元素時誤用發圓括弧
{
int i,a(10);
for(i=0;i<10;i++)
scanf(「%d」,&a(i));
}
13.在定義數組時,將定義的」元素個數」誤認為是」可使用的最大下標值
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int i;
for(i=1;i<=10;i++)
printf(「%d」,a[i]);
}
14.對二維或多維數組的定義和引用的方法不對
{
int a[5,4];
…
printf(「%d」,a[1+2,2+2]);
…
}
15.誤以為數組名代表數組中全部元素
{int a[4]={1,2,3,4};
printf(「%d%d%d%d」,a);
}
16.混淆字元數組與字元指針的區別
main()
{
char str[40];
str=「Computer and c」;
printf(「%s\n」,str);
}
17.在引用指針變數之前沒有對它賦予確定的值
{
char *p;
scanf(「%s」,p);
}
{
char *p,c[20];
p=c;
scanf(「%s」,p);
}
18.switch語句的各分支中漏寫 break語句
混淆字元和字元串的表示形式
…
char sex;
sex=「M」;
…
19.使用自加(++)和自減(--)運算符時出的錯誤
{
int *p,a[5]={1,3,5,7,9};
p=a;
printf(「%d」,*p++);
}
注意於*(++p)的區別;
20.所調用的函數在調用語句之後才定義,而又在調用前未加說明
main()
{float x,y,z;
x=3.5;y=-7.6;
z=max(x,y);
printf(「%f」,z);
}
編譯時不給出出錯信息,但運行結果將與原意不符。這種錯誤尤其需要注意。
八、心得體會
1. 目前流行的計算機日歷程序,比較典型的是Windows各版本中的日歷程序以及基礎於該程序所開發的各種應用程序中的日歷程序。然而,這些程序都千篇一律的局限在一個很短的時間范圍內。(Windows各個版本一般都局限在1980年至2099年這一范圍內),但是,在很多情況下,特別是在眾多的科學研究領域中,一個時間跨度較大的日歷程序是很有參考價值的。C程序設計語言充分發揮了其自身無與倫比的優越性,用極短的程序文本填補了這一領域的空白,同時用鐵的事實強有力的告訴世人:C程序設計語言作為計算機語言家族的新生事物,其發展前景是極為廣闊的。
2. 經過上一個學期對《C程序設計》的學習,我們學習了理論知識,了解了C語言程序設計的思想,這些知識都為我們的下一步學習打下了堅實的基礎。通過課程設計,一方面是為了檢查我們一個學期來我們學習的成果,另一方面也是為了讓我們進一步的掌握和運用它,同時也讓我們認清自己的不足之處和薄弱環節,加以彌補和加強。
3. 通過對c語言萬年歷的設計進一步的鞏固了用c語言編寫程序,並且有利於更好的掌握c語言!
4. 在萬年歷的編寫過程中也體會到了做事情一頂要細心、認真。更加知道了要掌握好基礎知識。還有體會到了成功的感覺!在萬年歷的設計過程中更加體會到了團隊合作的重要性,「一個諸葛亮比不上三個臭皮匠。」知道了只有團隊合作才會更好的完成設計!也體會到以後在工作中團隊合作的必要性和重要性!
5. 通過本項課程設計也培養了我獨立思考、 綜合運用所學有關相應知識的能力,掌握 工程軟體設計的基本方法,強化上機動手編程能力,闖過理論與實踐相結合的難關!
6. 由於C語言是近年在國內外得到迅速推廣應用的一種語言。C語言功能豐富,表達能力強,使用靈活方便,應用面廣,目標程序效率高,可移植性好,既具有高級語言的優點,又具有低級語言的許多特點。通過這次的c語言程序設計更加了解了c語言的好處和其可用性!
7. 在這次課程設計中也知道了自己的動手能力不強有待進一部的提高!在設計過程中不能夠把書本上的知識與實踐相結合,這也就增加了設計不好該程序的想法!在設計過程中的一次次設計錯誤增加了我放棄的想法!不過經過大家的努力終於完成了課程設計!完成該程序後想起自己以前的每一次對自己失去信心,就覺得並不是在知識掌握上打敗了,而是自己對自己缺乏信心!只要自己對自己不失去信心相信就可以完成那些以前認為完成不了的事情!也讓我懂得了要想成功首先就必須有很強的自信心!懂得了自己以後要在做任何事情時都要自信!當自己都不相信自己能夠成功時還可能會獲得成功嗎?
8. 在C語言程序設計的過程中也知道了自己在以前的學習中有很大的不足導致在設計過程中出現了很多的問題,有些地方看不懂也不知道怎麼去設計,但是在設計過程中也學習了很多,掌握了自己以前沒有學好的知識,雖然一時可以掌握完以前沒有學好的知識,不過也給自己敲響了警鍾,在學習中不可以伏於表面,要想學好每一門課程都要踏踏實實,做什麼都不是給別人看的!都是要更好的掌握該門知識,提高自己的自身的修養,提高自己的能力!為以後的工作打下良好的知識基礎和技能基礎!
九、參考文獻
⒈譚浩強編著.C程序設計第二版〔M〕.北京:清華大學出版社,1999
⒉陳朔鷹,陳英編著.C語言趣味程序百例精解〔M〕.北京:北京理工大學出版社,1994
⒊電腦知識與技術學術交流版〔J〕2005.2 (備註:來自網路資源)
⒋Herbert Schildit著. 戴健鵬譯. C語言大全 (第二版)〔M〕.北京:電子工業出版社,1994
⒌譚浩強,張基溫,唐永炎編著. C語言程序設計教程.〔M〕北京: 高等教育出版社,1992
⒍秦友淑,曹化工編著. C語言程序設計教程. 〔M〕武漢:華中理工大學出版社,1996
⒎曹衍龍,林瑞仲,徐慧 編著.C語言實例解析精粹 〔M〕北京:人民郵電出版社,2005.3
⒏黃明等編著.21世紀進階輔導C語言程序設計. 〔M〕大連理工大學出版
④ 求一篇編程範式對c語言學習的影響的論文
畢業論文是教學科研過程的一個環節,也是學業成績考核和評定的一種重要方式。畢業論文的目的在於總結學生在校期間的學習成果,培養學生具有綜合地創造性地運用所學的全部專業知識和技能解決較為復雜問題的能力並使他們受到科學研究的基本訓練。
標題
標題是文章的眉目。各類文章的標題,樣式繁多,但無論是何種形式,總要以全部或不同的側面體現作者的寫作意圖、文章的主旨。畢業論文的標題一般分為總標題、副標題、分標題幾種。
總標題
總標題是文章總體內容的體現。常見的寫法有:
①揭示課題的實質。這種形式的標題,高度概括全文內容,往往就是文章的中心論點。它具有高度的明確性,便於讀者把握全文內容的核心。諸如此類的標題很多,也很普遍。如《關於經濟體制的模式問題》、《經濟中心論》、《縣級行政機構改革之我見》等。
②提問式。這類標題用設問句的方式,隱去要回答的內容,實際上作者的觀點是十分明確的,只不過語意婉轉,需要讀者加以思考罷了。這種形式的標題因其觀點含蓄,輕易激起讀者的注重。如《家庭聯產承包制就是單干嗎?》、《商品經濟等同於資本主義經濟嗎?》等。
③交代內容範圍。這種形式的標題,從其本身的角度看,看不出作者所指的觀點,只是對文章內容的范圍做出限定。擬定這種標題,一方面是文章的主要論點難以用一句簡短的話加以歸納;另一方面,交代文章內容的范圍,可引起同仁讀者的注重,以求引起共鳴。這種形式的標題也較普遍。如《試論我國農村的雙層經營體制》、《正確處理中心和地方、條條與塊塊的關系》、《戰後西方貿易自由化剖析》等。
④用判定句式。這種形式的標題給予全文內容的限定,可伸可縮,具有很大的靈活性。文章研究對象是具體的,面較小,但引申的思想又須有很強的概括性,面較寬。這種從小處著眼,大處著手的標題,有利於科學思維和科學研究的拓展。如《從鄉鎮企業的興起看中國農村的希望之光》、《科技進步與農業經濟》、《從「勞動創造了美」看美的本質》等。
⑤用形象化的語句。如《激勵人心的治理體制》、《科技史上的曙光》、《普照之光的理論》等。
標題的樣式還有多種,作者可以在實踐中大膽創新。
副標題和分標題
為了點明論文的研究對象、研究內容、研究目的,對總標題加以補充、解說,有的論文還可以加副標題。非凡是一些商榷性的論文,一般都有一個副標題,如在總標題下方,添上「與××商榷」之類的副標題。
另外,為了強調論文所研究的某個側重面,也可以加副標題。如《如何看待現階段勞動報酬的差別——也談按勞分配中的資產階級權利》、《開發蛋白質資源,提高蛋白質利用效率——探討解決吃飯問題的一種發展戰略》等。
設置分標題的主要目的是為了清楚地顯示文章的層次。有的用文字,一般都把本層次的中心內容昭然其上;也有的用數碼,僅標明「一、二、三」等的順序,起承上啟下的作用。需要注重的是:無論採用哪種形式,都要緊扣所屬層次的內容,以及上文與下文的聯系緊密性。
目錄
一般說來,篇幅較長的畢業論文,都沒有分標題。設置分標題的論文,因其內容的層次較多,整個理論體系較龐大、復雜,故通常設目錄。
設置目錄的目的主要是:
1.使讀者能夠在閱讀該論文之前對全文的內容、結構有一個大致的了解,以便讀者決定是讀還是不讀,是精讀還是略讀等。
2.為讀者選讀論文中的某個分論點時提供方便。長篇論文,除中心論點外,還有許多分論點。當讀者需要進一步了解某個分論點時,就可以依靠目錄而節省時間。
目錄一般放置在論文正文的前面,因而是論文的導讀圖。要使目錄真正起到導讀圖的作用,必須注重:
1.准確。目錄必須與全文的綱目相一致。也就是說,本文的標題、分標題與目錄存在著一一對應的關系。
2.清楚無誤。目錄應逐一標注該行目錄在正文中的頁碼。標注頁碼必須清楚無誤。
3.完整。目錄既然是論文的導讀圖,因而必然要求具有完整性。也就是要求文章的各項內容,都應在目錄中反映出來,不得遺漏。
目錄有兩種基本類型:
1.用文字表示的目錄。
2.用數碼表示的目錄。這種目錄較少見。但長篇大論,便於讀者閱讀,也有採用這種方式的。
內容提要
內容提要是全文內容的縮影。在這里,作者以極經濟的筆墨,勾畫出全文的整體面目;提出主要論點、揭示論文的研究成果、簡要敘述全文的框架結構。
內容提要是正文的附屬部分,一般放置在論文的篇首。
寫作內容提要的目的在於:
1.為了使指導老師在未審閱論文全文時,先對文章的主要內容有個大體上的了解,知道研究所取得的主要成果,研究的主要邏輯順序。
2.為了使其他讀者通過閱讀內容提要,就能大略了解作者所研究的問題,假如產生共鳴,則再進一步閱讀全文。在這里,內容提要成了把論文推薦給眾多讀者的「廣告」。
因此,內容提要應把論文的主要觀點提示出來,便於讀者一看就能了解論文內容的要點。論文提要要求寫得簡明而又全面,不要啰哩啰嗦抓不住要點或者只是乾巴巴的幾條筋,缺乏說明觀點的材料。
內容提要可分為報道性提要和指示性提要。
報道性提要,主要介紹研究的主要方法與成果以及成果分析等,對文章內容的提示較全面。
指示性提要,只簡要地敘述研究的成果(數據、看法、意見、結論等),對研究手段、方法、過程等均不涉及。畢業論文一般使用指示性提要。
關鍵詞
關鍵詞是標示文獻關鍵主題內容,但未經規范處理的主題詞。它是為了文獻標引工作,從論文中選取出來,用以表示全文主要內容信息款目的單詞或術語。一篇論文可選取3~8個詞作為關鍵詞。
正文
一般來說,學術論文主題的內容應包括以下三個方面:1.事實根據(通過本人實際考察所得到的語言、文化、文學、教育、社會、思想等事例或現象)。提出的事實根據要客觀、真實,必要時要註明出處;2.前人的相關論述(包括前人的考察方法、考察過程、所得結論等)。理論分析中,應將他人的意見、觀點與本人的意見、觀點明確區分。無論是直接引用還是間接引用他人的成果,都應該註明出處;3.本人的分析、論述和結論等。做到使事實根據、前人的成果和本人的分析論述有機地結合,注意其間的邏輯關系。
結論
結論應是畢業論文的最終的、總體的結論,換句話說,結論應是整篇論文的結局、是整篇論文的歸宿,而不是某一局部問題或某一分支問題的結論,也不是正文中各段的小結的簡單重復。結論是該論文結論應當體現作者更深層的認識,且是從全篇論文的全部材料出發,經過推理、判斷、歸納等邏輯分析過程而得到的新的學術總觀念、總見解。結論可采「結論」等字樣,要求精煉、准確地闡述自己的創造性工作或新的見解及其意義和作用,還可提出需要進一步討論的問題和建議。結論應該准確、完整、明確、精練。
⑤ 【高分】數字權利許可互譯機制的論文。開題報告。選題意義。研究方法。怎麼寫。
1.標題:包括署名、單位、姓名
2.前言(1.課題提出的原因2.研究問題的意義
3.研究方法(研究對象、研究的方面、資料的搜集和整理)
4.結論:對資料加工分析得出結論
⑥ 想要精通c語言主要研究哪些問題有什麼經典示例沒有
我不是很同意精通C語言這種說法。關鍵在你遇到相應的問題能夠很好的運用C語言的基本語法來完成任務。在C語言的應用過程中,使用好數據結構,指針,封裝好函數,盡量避免使用高技巧性的語句,注意編程風格(比如縮進,注釋等),這都是解決實際問題很實用並且值得提倡的東西,對今後的工作是非常重要的,語言本身精通不精通可以稍微看的淡一點,關鍵你得吃透和掌握編程方法學相關思想。
⑦ 有誰能推薦幾篇有關C語言指針的研究應用方面的論文 不勝感激
就這個題目,類似規定的東西,應該寫不出什麼論文。
如果有,恐怕也是教學教改論文居多。
趁早想想別的吧。
⑧ 學習c語言的方法
第一步、驗證性練習
在這一步要求按照教材上的程序實例進行原樣輸入,運行一下程序是否正確。在這一步基本掌握C語言編程軟體的使用方法(包括新建、打開、保存、關閉C程序,熟練地輸入、編輯C程序;初步記憶新學章節的知識點、養成良好的C語言編程風格)。
第二步、照葫蘆畫瓢
在第一步輸入的C程序的基礎上進行試驗性的修改,運行一下程序看一看程序結果發生了什麼變化,分析結果變化的原因,加深新學知識點的理解。事實上這和第一步時同步進行的,實現「輸入」加深知識的記憶,「修改」加深對知識的理解。記憶和理解是相輔相成的,相互促進。
第三步、不看教材看是否能將前兩步的程序進行正確地輸入並運行。
在這一步要求不看教材,即使程序不能運行,看能否將其改正,使其能正確運行。目的是對前兩步的記憶、理解進一步強化。
第四步、增強程序的調試能力
在《Turbo C/C++ for Windows 集成實驗與學習環境》集成的教材中每章都有C語言初學者易犯的錯誤,按照易出錯的類型,將教材中的正確的程序改成錯誤的程序,運行一下程序,看出現的錯誤信息提示,並記下錯誤信息,再將程序改成正確的,運行一下程序。這樣反復修改,就能夠學習C語言程序發生錯誤的原因和修改錯誤的能力。
第五步、研究典型的C語言程序,提高程序設計能力
經過上述過程的學習,我們已經學會了C語言各種語句的流程(即計算機是如何執行這些語句的過程),然後就可以研讀別人編寫C語言經典程序,看懂別人是如何解決問題的,學習解決問題的方法和程序設計技巧,提高自己的程序設計能力。
在軟體中有50多個典型的源程序,研究它的實現方法,提高自己的程序設計能力。
第六步、研究課程設計源成序,提高C語言程序設計能力和調試較大程序的能力。
C語言課程設計的目的:是讓學生綜合利用所學的C語言知識,解決一些接近實際問題題目,提高程序設計和調試較大程序的能力,為進一步進行軟體開發打下堅實的基礎。
學習C語言,就來北京尚學堂,優秀的師資和科學的授課方式,會帶給你最好的學習體驗。
⑨ 請問C語言課程設計報告摘要怎麼寫,是指什麼啊,舉個例子吧
摘要:又稱概要、內容提要。摘要是以提供文獻內容梗概為目的,不加評論和補充解釋,簡明、確切地記述文獻重要內容的短文。其基本要素包括研究目的、方法、結果和結論。具體地講就是研究工作的主要對象和范圍,採用的手段和方法,得出的結果和重要的結論,有時也包括具有情報價值的其它重要的信息。
C語言課程設計,應該主要根據你的設計內容,簡要地提煉出設計的背景,功能,意義等。最後給出關鍵字。下面是正文。
例如:
摘要(標題居中)
近年來隨著計算機在社會領域的不斷發展,程序設計 。。。。。C語言。。。。(這里講你做的東西的背景。)
本課程設計完成了什麼。。。。(功能)
其意義是。。。。(意義)
關鍵詞: C語言,其他