




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章C語言概述C語言簡介程序和程序設計語言C語言的發展史C語言的特點C語言的語法成分C語言程序的基本構成C語言程序的編譯過程
從本章開始我們正式進入C語言程序設計的學習,也許大家會問:為什么我們要學習C語言呢?理由1:因為C語言流行.
理由2:因為C語言在各種程序考試中必考。理由3:因為它是必修課,是老師逼的,不學不能拿學分。
……
理由n:……別急!讓我想想……
這些理由都只是從表面上來回答,其實要真正來回答這一問題,我們有必要了解程序、計算機語言、知道C語言是屬于哪種類型的語言;C語言是如何產生和發展的,C語言的特點有哪些,它應用在哪些方面等,這樣我們就可以做到學習目的明確,才能有意識地去學好C語言程序設計。
問……什么是計算機程序?什么是計算機語言?什么是C語言?(C的發展)為什么要學程序設計?為什么選C語言?……了解程序設計語言的發展及其特點;掌握機器語言、匯編語言和高級語言的差異;了解C語言的發展歷史及特點和應用;掌握C語言程序的基本結構;掌握編寫C程序的基本步驟和調試過程。學習目標
程序設計語言的發展經歷了三個階段:
機器語言是用二進制表示的,計算機能直接識別和執行的語言
如:10000000(加)10010000(減),機器語言執行速度最快。由于用二進制表示,因而程序可讀性差,非專業人員難于掌握二進制指令通過符號化
如ADDA,B匯編程序
機器語言匯編語言高級語言面向過程面向對象
高級語言表達方式接近被描述的問題,接近于自然語言和數學表達式,易于人們接受和掌握1.C語言發展史(丹尼斯·里奇與肯·湯普遜)ALGOL60語言
CPL語言
CombinedProgrammingLanguage1963年,劍橋大學BCPL語言
1967年,劍橋大學的MatinRichards對CPL語言進行了簡化B語言
C語言
1970年,美國貝爾實驗室的KenThompson將BCPL進行了修改將CPL語言煮干,提煉出它的精華1973年,B語言也給人“煮”了一下,美國貝爾實驗室的D.M.RITCHIE在B語言的基礎上最終設計出了一種新的語言BCPL的第二個字母作為這種語言的名字,這就是C語言
C++
在C的基礎上,1983年又由貝爾實驗室的BjarneStrou-strup推出了C++
C語言發展史產生背景產生過程時間:1972~1973
地點:美國貝爾實驗室目的:UNIX操作系統設計人:Ken.Thompson和Dennis.M.RitchieC標準
標準C:K&R合著《TheCProgrammingLanguage》ANSIC:1983年
89ANSIC:1989年
1990年國際標準的ANSIC99ANSIC:1999年2.C語言的特點(1)高效性:C程序往往緊湊且運行速度快。(2)移植性:C程序不經修改或很少修改就可以到其他系統上運行。(3)運算符豐富:有算術、關系、邏輯、位、自增/自減、賦值運算符等等。(4)數據結構豐富:數據類型有整型、實型、字符、數組、指針、結構體等,能實現如鏈表、樹、棧等結構運算。(5)標準庫函數豐富:它的標準庫包含了數百個函數。
(6)對硬件操作:能直接訪問內存的物理地址,并進行位操作。(7)自由度大:語法限制不嚴格。如:不檢查數組下標是否越界,整型與字符型可通用,條件可用0和非0表示假與真,指針操作靈活等。1.C語言的字符集2.標識符3.關鍵字4.運算符5.分隔符6.注釋符基本語法成分在程序中使用的變量名、函數名、標號等統稱為標識符,用來標識各種程序成分。除庫函數的函數名由系統定義外,其余都由用戶自定義。C語言規定,標識符只能是由字母(A~Z,a~z)、數字(0~9)、下劃線(_)組成的字符串,并且其第一個字符必須是字母或下劃線。在使用標識符時還必須注意以下幾點:(1)在標識符中,大小寫是有區別的。例如BOOK和book是兩個不同的標識符。習慣上符號常量用大寫字母表示,而變量名等用小寫字母表示。(2)標識符雖然可由程序員隨意定義,但不能與關鍵字同名,也不能與系統預先定義的標準標識符(如標準函數)同名關鍵字是由C語言規定的具有特定意義的字符串,通常也稱為保留字。如類型說明符int,double等;語句特征if、switch、while等;預處理命令include、define等。關鍵字是構成C語言的語法基礎,用戶定義的標識符不應與關鍵字相同,也不能對關鍵字進行重新定義。C語言中含有相當豐富的運算符。運算符與變量、函數一起組成表達式,表示各種運算功能。運算符由一個或多個字符組成。根據參加運算對象的個數,運算符可分為單目運算符、雙目運算符和三目運算符。C語言中的分隔符有逗號和空格兩種,逗號主要用在類型說明和函數參數表中,分隔各個變量。空格多用于語句各單詞之間,作間隔符。在關鍵字、標識符之間必須要有一個以上的空格符作間隔,否則將會出現語法錯誤。例如把“inta;”,寫成“inta;”,C編譯器會把“inta”當成一個標識符處理,其結果必然出錯。
關鍵字注釋符是以“/*”開頭并以“*/”結尾的串。在“/*”和“*/”之間的即為注釋。程序編譯時,不對注釋作任何處理。注釋可出現在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。在調試程序時,對暫不使用的語句也可用注釋符括起來,使編譯跳過不作處理,待調試結束后再去掉注釋符。也可使用“//”
作單行注釋。表1.1C語言中的關鍵字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile關鍵字為小寫字母;不允許使用關鍵字為變量、數組和函數等操作對象命名。
標識符練習1、下列選項中,可以作為C語言標識符的是()
A)3stuB)#stuC)stu3D)stu.32、以下不能定義為用戶標識符的是() A)MainB)_0C)_intD)int3、以下敘述中錯誤的是() A)用戶所定義的標識符允許使用關鍵字B)用戶所定義的標識符應盡量做到“見名知意” C)用戶所定義的標識符必須以字母或下劃線開頭 D)用戶定義的標識符中,大、小寫字母代表不同標識4、下列選項中,不可以作為C語言標識符的是()
A)numB)turbo-_cC)printfD)student35、以下不合法的用戶標識符是() A)j2_KEYB)DoubleC)4dD)_8_6、合法的C語言標識符是()。
A)_a1B)a+bC)3abcD)AB,CD7、以下選項中不合法的用戶標識符是:()
A)_xyzB)IntC)a_123D)1238、以下選項中合法的用戶標識符是:() A)_123B)intC)si%D)1_ads9、以下選項中合法的用戶標識符是:()
A)sinedB)printfC)aa$D)a-1.C語言程序的基本結構
了解了C語言的基本特性及其應用以后,接下來就來看看C語言程序是什么樣子。一個C語言程序可以是非常簡單的,也可以是特別復雜的,這取決于程序所要實現的功能。我們先來認識一個最為簡單的C程序。【例1】最簡單的C程序。#include<stdio.h>intmain(){printf(“Hello,我是C語言,謝謝你關注我哦!\n");
return0;}函數體語句結束標志
運行結果:Hello,我是C語言,謝謝你關注我哦!main是主函數的函數名,表示這是一個主函數。每一個C源程序都必須有,并且只能有一個主函數(main函數),這是整個C程序運行的入口點
printf是C語言中的輸出函數,是一個由系統定義的標準函數,可在程序中直接調用,它的功能是把要輸出的內容送到顯示器去顯示。雙引號內字符串原樣輸出,“\n”是回車換行符。
C語言規定:語句以分號結束【例2】計算輸入的兩個整數的和。/*求兩數的和。*/#include<stdio.h>intmain(){inta,b,sum;/*這是定義變量*/a=12;b=34;sum=a+b;printf("Thesumis%d\n",sum);
return0;}數據類型名定義的變量名,以“,”分隔兩個賦值語句,使a和b的值分別為12和34調用內部函數,輸出計算的和數求和的值給sum運行結果:thesumis46“%d”是輸入輸出的格式字符串,用來指定輸入輸出時的數據類型和格式
【例3】計算輸入的兩個整數的最大值。/*ThisisthethirdCprogram*/#include<stdio.h>intmax(inta,intb);intmain(){intx,y,z;printf("Inputtwonumbers:\n");scanf("%d%d",&x,&y);z=max(x,y);printf("maxnum=%d\n",z);
return0;}intmax(inta,intb){
if(a>b)
returna;elsereturnb;
}自定義函數聲明自定義函數調用自定義函數max帶兩個形參返回a、b中最大值返回值為整型數假設輸入:1020↙
運行結果:max=20調用內部函數,接受鍵盤輸入數據通過以上例子可以看出:1.一個C語言源程序可以由一個或多個源文件組成,每個源文件以“.c”作為擴展名。
C程序有且僅有一個main函數,用戶也可以自己根據需要設計自己的函數,像上面的max()函數。2.一個可執行的C語言程序總是從main函數開始執行,并在main函數中結束,而不論其在整個程序中的位置如何。3.每條語句和數據定義的最后必須有一個分號(;)。說明:在以下三種情況下不允許有分號:
a.函數頭后面不使用分號;
b.在右花括號“}”后面不使用分號;
c.預處理語句后面不使用分號。while(i<=100){i++;s=s+i;};max();{……}#include<math.h>;4.C語言中沒有專門的輸入、輸出語句。輸入輸出是通過scanf和printf兩個庫函數實現的。5.C程序書寫格式自由,一行內可以寫幾個語句,一個語句也可以分寫在多行上。6.可用/*……*/對C程序中的任何部分作注釋,注釋可以寫在程序的任何位置上,“/*”與“*/”也可不在同一行上。也可用“//”注釋1行。7.在C語言中,大小寫字母是有區分的(即大小寫敏感)。由前得出一般C語言程序的構成如下:#include<stdio.h>intmain()/*主函數*/{
變量定義部分;
[變量賦初值部分;]
語句執行部分;
return0;}1.3C程序的執行過程1.編輯:選擇適當的編輯程序,將C語言源程序通過鍵盤輸入到計算機中,并以文件的形式存入到磁盤中(.C)2.編譯:即將源程序翻譯成機器語言程序的過程。編譯出來的程序稱為目標程序(.OBJ)3.鏈接:編譯后生成的目標文件經過鏈接后生成最終的可執行程序(.EXE)4.運行:運行是將可執行的目標程序投入運行,以獲取程序的運行結果;在操作系統中可以直接執行擴展名為.EXE的文件編輯程序代碼的錄入,生成源程序*.c編譯語法分析查錯,翻譯生成目標程序*.obj鏈接與其它目標程序或庫鏈接裝配,生成可執行程序*.exe運行開始編輯編譯有錯?鏈接執行結果正確?結束源程序file.c目標程序file.obj庫函數和其它目標程序可執行程序file.exe不正確正確有無
調試C程序的流程C語言的編輯、編譯和運行1.
找出下列程序中的錯誤。#include<stdio.h>intmain(){ printf("你有沒有覺得C語言萌萌噠?\n") return0}2.下面程序的功能是:打印輸出一個由“*”構成的矩形圖案。請分析錯誤。intmain() { printf("******\n"); printf("******\n"); printf("******\n"); printf("******\n"); return0; } 3..
找出下列程序中的錯誤。#include<stdio.h>intmain(){ intprice1,price2=2500; price1=2500; price2=price1/2; PRINTF("price2=%d\n"); return0;}C語言第1次上機作業輸出以下字符:Hello,我是C,請為我點贊!輸出如下圖形:*********從鍵盤上輸入兩個整數a和b,輸出a與b的和。從鍵盤上輸入兩個兩位整數,將它們合并為一個整數。例如,輸入12和34,輸出1234。編程輸入/輸出你的個人信息。看看下面程序的運行結果是什么。。。#include<stdio.h>intmain(){intx,y;x=3;y=6;printf(“%d,%d,%d”,x+y,x-y,x*y);printf(“\n”);return0;}1.4程序與算法程序包括:
(1)對數據的描述數據結構
(2)對數據處理的描述算法算法(algorithm)是對特定問題求解步驟的一種描述。可將程序總結為:
程序=算法+數據結構+程序設計方法+語言工具和環境人們使用計算機,就是要利用計算機處理各種不同的問題,而要做到這一點,人們就必須事先對各類問題進行分析,確定解決問題的具體方法和步驟,再編制好一組讓計算機執行的指令即程序,讓計算機按人們指定的步驟有效地工作。這些具體的方法和步驟,其實就是解決一個問題的算法。根據算法,依據某種規則編寫計算機執行的命令序列,就是編制程序,而書寫時所應遵守的規則,即為某種語言的語法.1算法(Algorithm)的概念
【例1】輸入3個數,求其最大值。問題分析:設num1,num2,num3存放3個數,max存放其最大值。為求最大值,就必須對3個數進行比較,可按如下步驟去做:⑴輸入3個數num1,num2,num3。⑵先把第1個數num1的值賦給max。⑶將第2個數num2與max比較,如果num2>max,則把第2個數num2的值賦給max(否則不做任何工作)。⑷將第3個數num3與max比較,如果num3>max,則把第3個數num3的值賦給max(否則不做任何工作)。⑸輸出max的值,即最大值。2算法的基本特征
一個算法應具有以下5個基本特征:有窮性確定性有效性有零個或多個輸入有一個或多個輸出
算法必須總是在執行有限個操作步驟和可以接受的時間內完成其執行過程。也就是說,對于一個算法,要求其在時間和空間上均是有窮的。例如:一個采集氣象數據并加以計算進行天氣預報的應用程序,如果不能及時得到結果,超出了可以接受的時間,就起不到天氣預報的作用。
算法中的每一步都必須有明確的含義,不允許存在二義性。例如:“將成績優秀的同學名單打印輸出”,在這一描述中“成績優秀”就很不明確,是每門功課均為95分以上?還是指總成績在多少分以上?
算法中描述的每一步操作都應能有效地執行,并最終得到確定的結果。例如:當Y=0時,X/Y是不能有效執行的。
3算法的表示
用自然語言表示用流程圖表示用偽代碼表示計算機語言表示算法
自然語言可以是中文、英文、數學表達式等。用自然語言表示通俗易懂,缺點是可能文字過長,不太嚴格,表達分支和循環的結構不很方便。【例2】求1+2+…+100的值s。
偽代碼是用介于自然語言和計算機語言之間的文字和符號來描述算法的,它不用圖形符號,因此,書寫方便,格式緊湊,也容易懂,同時也便于向計算機語言算法的轉換。【例4】用偽代碼表示求10!的算法。begin(開始)
置t的初值為1(1t)置i的初值為2(2i)當(while)i<=10,執行(do)
begin
使t=ti
使i=i+1end
打印t的值(printt)end(結束)。
計算機是無法識別流程圖和偽代碼形式,只有用計算機語言編寫的程序才能被計算機執行。因此在用流程圖和偽代碼形式描述出算法后,還要將它轉換成計算機語言程序。【例5】用C語言程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 禮儀用品企業環境保護責任考核試卷
- 周莊超深基坑施工方案
- 紙張加工中的涂布工藝改進考核試卷
- 了解項目管理考試命題思路試題及答案
- 熱電聯產關鍵技術研究考核試卷
- 2025年【過氧化工藝】考試題及答案
- 海洋能源開發市場前景分析考核試卷
- 環保工程綠色交通設計與規劃考核試卷
- 高一物理綜合試題及答案
- 2023年中國神華煤制油化工有限公司第三批次系統內招聘2人筆試參考題庫附帶答案詳解
- 2025中煤鄂爾多斯能源化工有限公司高校畢業生招聘98人筆試參考題庫附帶答案詳解
- 導游知識培訓課件
- 眼科“一科一品”特色護理服務
- 銀行內控案防警示教育
- 初中勞動測試題及答案
- 基因指導蛋白質的合成課件-高一下學期生物人教版必修22
- 2024-2025學年湖南省長沙市八年級(上)期末物理試卷(含解析)
- 西師大版小學五年級數學(下)期中測試題(1-4單元)(2)(含答案)
- 2025-2030中國鍍鋅鋼板行業市場發展趨勢與前景展望戰略研究報告
- 大模型備案-落實算法安全主體責任基本情況
- 2025《四川省建設工程施工總包合同》示范文本
評論
0/150
提交評論