配套課件-C語言程序設計_第1頁
配套課件-C語言程序設計_第2頁
配套課件-C語言程序設計_第3頁
配套課件-C語言程序設計_第4頁
配套課件-C語言程序設計_第5頁
已閱讀5頁,還剩436頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

第1章C語言概述知識目標:

1.了解C語言的特點、C語言程序開發步驟。

2.初步了解C程序的組成結構,主函數的作用。

3.初步掌握C語言流程圖、N-S圖圖例特點與屬性。能力目標:

1.能夠啟動VisualC++6.0,并能正確進入編程窗口。

2.學會與人打交道,完成調查任務。

3.能初步掌握“班級學生成績管理系統”工作模塊構成。

4.能調查了解本校學生成績管理系統的工作流程,畫出本校學生成績管理系統工作模塊圖。1.1C語言的發展歷史及特點1.1.1C語言的發展歷史

C語言是目前世界上流行、使用非常廣泛的高級程序設計語言。C語言對操作系統和系統使用程序以及需要對硬件進行操作的場合,用C語言明顯優于其它高級語言,許多大型應用軟件都是用C語言編寫的。C語言具有繪圖能力強,可移植性,并具備很強的數據處理能力,因此適于編寫系統軟件,同時它也是數值計算的高級語言。

C語言的發展頗為有趣。它的原型ALGOL

60語言。(也成為A語言)

1963年,劍橋大學將ALGOL60語言發展成為CPL(CombinedProgrammingLanguage)語言。1967年,劍橋大學的MatinRichards對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語言編譯程序》。1978年Brian

W.Kernighian和Dennis

M.Ritchie出版了名著《The

C

Programming

Language》,從而使C語言成為目前世界上流行最廣泛的高級程序設計語言。

1988年,隨著微型計算機的日益普及,

出現了許多C語言版本。由于沒有統一的標準,使得這些C語言之間出現了一些不一致的地方。為了改變這種情況,美國國家標準研究所(ANSI)為C語言制定了一套ANSI標準,

成為現行的C語言標準

3.C語言的主要特點

。C語言發展迅速,

而且成為最受歡迎的語言之一,

主要因為它具有強大的功能。許多著名的系統軟件,

如DBASE

PLUS、DBASE

都是由C

語言編寫的。用C語言加上一些匯編語言子程序,

就更能顯示C語言的優勢了,象PC-

DOS

、WORDSTAR等就是用這種方法編寫的。

目前最流行的C語言有以下幾種:

MicrosoftC或稱MSC

BorlandTurboC或稱TurboC

這些C語言版本不僅實現了ANSIC標準,而且在此基礎上各自作了一些擴充,使之更加方便、完美。

在C的基礎上,一九八三年又由貝爾實驗室的BjarneStrou-strup推出了C++。C++進一步擴充和完善了C語言,成為一種面向對象的程序設計語言。C++目前流行的最新版本是BorlandC++4.5,SymantecC++6.1,和MicrosoftVisualC++2.0。C++提出了一些更為深入的概念,它所支持的這些面向對象的概念容易將問題空間直接地映射到程序空間,為程序員提供了一種與傳統結構程序設計不同的思維方式和編程方法。因而也增加了整個語言的復雜性,掌握起來有一定難度。1.1.2C語言的特點

總之,一種語言之所以能存在和發展,并且具有較強的生命力,總是有其不同于其他語言的特點。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語言適用范圍大,可移植性好1.2C程序的基本結構分析

C語言有一個突出的優點就是適合于多種操作系統,如DOS、UNIX,也適用于多種機型。為了說明C語言源程序結構的特點,先看以下幾個程序。這幾個程序由簡到難,表現了C語言源程序在組成結構上的特點。雖然有關內容還未介紹,但可從這些例子中了解到組成一個C源程序的基本部分和書寫格式?!纠?.1】0102030405#include<stdio.h>main(){printf("GoodMoning!\n");}代碼貼士

在程序中,第01行main是主函數的函數名,表示這是一個主函數。每一個C源程序都必須有,且只能有一個主函數(main函數)。第03行是函數調用語句,printf函數的功能是把要輸出的內容送到顯示器去顯示。printf函數是一個由系統定義的標準函數,可在程序中直接調用。

這是一個最簡單的C語言程序。main前面的void表示此主函數是“空類型”,void是“空”的意思,即執行此函數后不產生一個函數值。每一個C語言程序都必須有一個main函數。每一個函數要有函數名,也要有函數體(即函數的實體)。函數體由一對花括號{}括起來。本例中主函數內只有一行。printf是C編譯系統提供的標準函數庫中的輸出函數(詳見第4章)。程序第4行是一個printf語句,圓括號中雙撇號內的字符串按原樣輸出?!埃躰”是換行符,在執行程序時,輸出“GoodMoning!”,然后執行回車換行。語句最后有一個分號。

在使用標準函數庫中的輸入輸出函數時,編譯系統要求程序提供有關的信息(例如對這些輸入輸出函數的聲明),程序第01行“#include<stdio.h>”的作用就是用來提供這些信息的,stdio.h是C編譯系統提供的一個文件名,stdio是“standardinput&output”的縮寫,即有關“標準輸入輸出”的信息。在開始時對此可暫不必深究,以后會有詳細介紹的。在此只須記?。涸诔绦蛑杏玫较到y提供的標準函數庫中的輸入輸出函數時,應在程序的開頭寫這樣一行:

#include<stdio.h>01020304050607080910111213141516#include<stdio.h>main(){intx,y,z;/*變量說明*/intmax(inta,intb);/*函數聲明*/printf("inputtwonumbers:\n");scanf("%d%d",&x,&y);/*輸入x,y值*/z=max(x,y);/*調用max函數*/printf("max=%d\n",z);/*輸出*/}intmax(inta,intb)/*定義max函數/{if(a>b)returna;/*把結果返回主調函數*/Elsereturnb;/*把結果返回主調函數*/}【例1.2】:任意輸入兩個數,求兩個數中最大的那個數。代碼貼士在程序中,第03行是變量說明,說明變量x、y、z的數據類型。在程序中第04行是函數聲明。第06行為輸入語句,調用scanf函數,接受鍵盤上輸入的數并存入變量x、y中。在程序中第07行調用了max函數。程序第10~16行是一個用戶自定義的max函數。

上例中程序的功能是由用戶輸入兩個整數,程序執行后輸出其中較大的數。本程序由兩個函數組成,主函數main和max函數。函數之間是并列關系。但可從主函數中調用其它函數。本例中的主函數體中又分為兩部分:一部分為說明部分(第03~04行),另一部分為執行部分(第05~08行)。在程序的說明部分中,不僅可以有變量說明,還可以有函數說明。

行結果如下:

inputtwonumbers:8,5↙max=8

通過以上幾個例子,可以看到C源程序的結構特點:

1.一個C語言源程序可以由一個或多個源文件組成。

2.每個源文件可由一個或多個函數組成。

3.一個源程序不論由多少個函數組成,都有一個且只能有一個main函數,即主函數。

4.源程序中可以有預處理命令(include

命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。

5.每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括號“}”之后不能加分號。

6.標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。

1.3程序設計時的算法描述1.3.1程序的三種基本結構一個程序包含一系列的執行指令,每一個指令使計算機完成一種操作。程序中的指令不是任意書寫而無規律的。1966年,Bohra和Jacopini提出了以下三種基本結構,用這三種基本結構作為表示一個良好算法的基本單元。因此,任何一個復雜程序都是由三種基本結構組成,即:順序結構、選擇結構、循序結構。它們的含義如下:①順序結構:順序結構的程序是一條語句接一條語句順序地往下執行的。順序結構的程序是最簡單的程序。如圖1-1為順序結構結構圖圖1-1

②分支結構:若在程序執行過程中,程序的流程可由多路分支組成,根據不同的條件去執行不同的任務。如圖1-2為選擇結構結構圖。圖1-2③循環結構:若在程序中需要根據某項條件重復地執行某項任務若干次或直到滿足或不滿足某條件為止,這就構成了循環結構。如圖1-3為循環結構結構圖。圖1-31.3.2程序的算法描述算法的概念計算機所進行的一切操作都是由程序決定的,而程序是人事先編寫好并輸入給計算機的。從前面的程序中可知,一個程序包括以下兩個方面的內容:

(1)對數據的描述。在程序中要指定數據的類型和數據的組織形式,即數據結構(datastructure)。

(2)對操作的描述。即操作步驟,也就是算法(algorithm)。數據是操作的對象,操作的目的是對數據進行加工處理,以得到期望的結果。打個比方,廚師制作菜肴,需要有菜譜,菜譜一般應包括:①配料,指出應使用哪些原料;②操作步驟,指出如何使用這些原料按規定的步驟加工成所需的菜肴。沒有原料是無法加工成所需菜肴的。但是用同一些原料可以加工出不同的菜肴。作為程序設計人員,必須認真考慮和設計數據結構和操作步驟(即算法)。著名計算機科學家沃思(NikildausWirth)提出一個公式:數據結構+算法=程序

2.算法的表示構思好一個算法后,可以選擇不同的方式表示。(1)用自然語言表示自然語言就是人們日常使用的語言,可以是漢語、英語,或其他語言。用自然語言表示通俗易懂,但文字冗長,容易出現歧義性。自然語言表示的含義往往不太嚴格,要根據上下文才能判斷其正確含義。假如有這樣一句話:“張先生對李先生說他的孩子考上了大學”。請問是張先生的孩子考上大學呢還是李先生的孩子考上大學呢?光從這句話本身難以判斷。此外,用自然語言來描述包含分支和循環的算法,不很方便。因此,除了那些很簡單的問題以外,一般不用自然語言描述算法。

(2)用傳統流程圖表示算法流程圖是用一些圖框來表示各種操作。用圖形表示算法,直觀形象,易于理解。美國國家標準化協會ANSI(AmericanNationalStandardlnstitute)規定了一些常用的流程圖符號見圖1-4,已為世界各國程序工作者普遍采用。圖1-4【例1.3】:任意輸入兩個數,求兩個數中最大的那個數。說明:用傳統流程圖表示此題的算法見圖1-5。圖1-5

N開始輸入x,yx>yx→maxy→max輸出max結束Y

(3)用N-S流程圖表示算法

1973年美國學者I.Nassi和B.Shneiderman提出了一種新的流程圖形式。在這種流程圖中,完全去掉了帶箭頭的流程線。全部算法寫在一個矩形框內,在該框內還可以包含其他的從屬于它的框,或者說,由一些基本的框組成一個大的框。這種流程圖又稱N-S結構化流程圖(N和S是兩位美國學者的英文姓氏的首字母)。這種流程圖適于結構化程序設計,而且作圖簡單,占用面積小。N-S流程圖用以下的流程圖符號。圖1-6順序結構圖1-7選擇結構【例1.4】:將【例1.3.1】的算法用N-S流程圖來表示。輸入x,yx>y是否x→maxy→max輸出max圖1-8循環結構圖1-9

4.用偽代碼表示算法用傳統的流程圖和N-S圖表示算法直觀易懂,但畫起來比較費事,在設計一個算法時,可能要反復修改,而修改流程圖是比較麻煩的。為了設計算法時方便,常用一種稱為偽代碼(pseudocode)的工具。偽代碼是用介于自然語言和計算機語言之間的文字和符號來描述算法。它如同一篇文章一樣,自上而下地寫下來。每一行(或幾行)表示一個基本操作。它不用圖形符號,因此書寫方便,格式緊湊,也比較好懂,也便于向計算機語言算法(即程序)過渡。

【例1.5】:將例【例1.3.1】的算法用偽代碼表示。

ifx>ythenx→maxelsey→max

用偽代碼寫算法并無固定的、嚴格的語法規則,只要把意思表達清楚,并且書寫的格式要寫成清晰易讀的形式。總之,在以上幾種表示算法的方法中,具有熟練編程經驗的專業人士喜歡用偽代碼,初學者喜歡用傳統流程圖或N-S圖,比較形象,易于理解。

1.4VisualC++6.0環境下調試C實例1.4.1C程序的編譯通過前面二個例子我們已經了解了C語言的程序結構。所謂程序,就是一組計算機能識別和執行的指令。每一條指令使計算機執行特定的操作。用高級語言編寫的程序成為源程序。但是一個源程序文件只是可以存儲,并不能運行。因為計算機并不認識源程序中的語句。要讓計算機直接運行,還要將它翻譯成計算機可以直接辨認并可以執行的機器語言程序。這一過程成為編譯。對于C語言程序來說,這一過程一般分為4步。

圖1-10運行C程序的流程

第一步:編輯源程序。編輯源程序,就是用高級語言編寫并修改源程序。源程序的編輯要在編輯器中進行。編輯器具有字符的修改、添加等功能。編輯好的源程序,可以先以源程序文件的形式保存起來。如前所述,C語言源程序的文件名后綴為.c。源程序僅僅是按照C語言的詞法和語法編寫的,并能被編輯器處理的文字字符的集合。它還圖1-10運行C程序的流程不能被計算機執行。

第二步:編譯。編譯就是把用C語言描述的程序(或程序模塊)翻譯成計算機可以理解并執行的機器語言命令組成的程序(或程序模塊)。C語言的編譯過程分為兩個階段:首先是編譯預處理,系統要先掃描程序,處理所有預處理命令,如把文件包含命令要求的文件包含(嵌入)到程序(或程序模塊)中;然后才開始編譯。

編譯后得到的文件稱為目標文件,目標文件就是用機器語言描述的文件。C語言的目標文件的后綴為.obj。目標文件的主文件名,一般與源程序文件名相同。在編譯過程中,還要對源程序中的語法和邏輯結構進行檢查。編譯任務是由稱做編譯器(compiler)的軟件完成的。程序在編譯過程中,也可能發現錯誤。這時要重新進入編輯器進行編輯。目標程序文件還不能被執行,它們只是一些在內存中可重定位的目標程序模塊。

第三步:鏈接。接是將與當前程序有關的、已經存在的幾個目標模塊鏈接在一起,形成一個完整的程序代碼文件。這些已經存在的目標模塊包括:庫函數,如前面使用的printf;對于大的程序,常常分成幾個模塊,分別編寫、編輯和編譯,形成不同的目標模塊。正確鏈接所生成的文件才是可執行文件??蓤绦形募奈募缶Y為.exe程序在鏈接過程中,也可能發現錯誤。這時也要重新進入編輯器進行編輯。第四步:執行。接后得到的可執行文件名,對操作系統來說,相當于一條命令。在操作系統提供的命令界面上輸入這個命令,就可以開始執行這個程序。1.4.2C程序的運行為了編譯、連接和運行C程序,必須要有相應的C編譯系統。目前使用的大多數C編譯系統都是集成開發環境(IDE)的,把程序的編輯、編譯、連接和運行等操作全部集中在一個界面上進行,功能豐富,使用方便,直觀易用。

目前學習C++的人大多使用VisualC++6.0集成環境,因此不少人在學習C時也使用VisualC++集成開發環境,這樣有利于今后方便地學習C++。本節主要介紹在VisualC++6.0中怎樣編輯、編譯、連接和運行C程序。本書中的程序都是在VisualC++6.0環境下調試和運行的。

1.進入VisualC++6.0集成開發環境

VisualC++6.0是在Windows環境下工作的。VisualC++6.0有英文版和中文版,二者使用方法相同。本節介紹的是VisualC++6.0中文版。為了能使用VisualC++6.0集成環境,必須事先在所用的計算機上安裝VisualC++6.0系統。在安裝后最好在桌面上設立VisualC++6.0的快捷方式圖標,以方便使用。雙擊桌面上VisualC++6.0圖標,就能進入VisualC++6.0集成開發環境,屏幕上出現VisualC++6.0的主窗口,見圖1-12。

在VisualC++主窗口的頂部是VisualC++的主菜單欄。其中包含9個菜單項:文件編輯查看插入項目組建工具窗口幫助主窗口的左側是項目工作區窗口,右側是程序編輯窗口。工作區窗口用來顯示所設定的工作區的信息,程序編輯窗口用來輸入和編輯源程序。

2.輸入和編輯源程序(1)新建一個源程序可采取以下的步驟:在VisualC++主窗口的主菜單欄中選擇“文件”,然后選擇“新建”,見圖l-13。

屏幕上出現一個“新建”對話框(見圖l-14)。單擊此對話框的上方的“文件”標簽,在其下拉菜單中選擇C++SourceFile項,表示要建立新的C++源程序文件,然后在對話框

右半部分的位置文本框中輸入準備編輯的源程序文件的存儲路徑(今假設為E:\zc),表示準備編輯的源程序文件將存放在E:\zc子目錄下。在其上方的文件名文本框中輸入準備編輯的源程序文件的名字(今輸入cl_1.c)。這樣,即將進行輸入和編輯的源程序就以c1_1.c為文件名存放在E盤的zc目錄下。在單擊OK按鈕后,回到VisualC++主窗口,可以看到光標在程序編輯窗口閃爍,表示程序編輯窗口已激活,可以輸入和編輯源程序了。輸入例1.1中的程序(見圖l-15)。在輸入過程中如發現有錯誤,可以利用全屏幕編輯方法進行修改編輯。

如果經檢查無誤,則將源程序保存在前面指定的文件cl-l1.c中,方法是:在主菜單欄中選擇“文件”,并在其下拉菜單中選擇“保存”項。見圖l-16。

(2)打開一個已有的程序如果已經編輯并保存過C源程序,而希望打開所需要的源程序文件,并對它進行修改,方法是:①在“我的電腦”中按路徑找到已有的C程序名(如cl-1.c)。②雙擊此文件名,則進入了VisualC++集成開發環境,并打開了該文件,程序已顯示在編輯窗口中。③修改后選擇“文件”→“保存”,保存在原來的文件中。

3.程序的編譯在編輯和保存了源文件(如cl-l.c)以后,若需要對該源文件進行編譯。選擇主菜單欄中的“組建”,在其下拉菜單中選擇“編譯[c1-1.c]”項。見圖l-17。由于剛才建立(或保存)文件時已指定了源文件的名字c1-l.c,因此在“組建”菜單的“編譯[c1-1.c]”項中自動顯示了現在要編譯的源文件名c1-1.c。

在選擇“編譯”命令后,屏幕上出現一個對話框,內容是Thisbuildcommandrequiresanactiveprojectworkspace,Wouldyouliketocreateadefaultprojectworkspace?(此編譯命令要求一個有效的項目工作區,你是否同意建立一個默認的項目工作區),見圖l-18。單擊“是”按鈕,表示同意由系統建立默認的項目工作區,然后開始編譯。也可以不用選擇菜單的方法,而直接按Ctrl+F7鍵來完成編譯。

在進行編譯時,編譯系統檢查源程序中有無語法錯誤,然后在主窗口下部的調試信息窗口輸出編譯的信息,如果無錯,則生成目標文件cl-1.obj,如果有錯,則會指出錯誤的位置和性質,提示用戶改正錯誤。

4.程序的連接在得到后綴為.obj的目標程序后,還不能直接運行,還要把程序和系統提供的資源(如函數庫、頭文件)建立連接。此時應選擇“組建”→“組建[c1-1.exe]”,見圖l-19。表示要求連接并建立一個可執行文件cl-1.exe。

在執行連接后,在調試輸出窗口中顯示連接時的信息,說明沒有發現錯誤,生成了一個可執行文件cl-1.exe。見圖1-20。

以上介紹的是分別進行程序的編譯與連接,也可以選擇菜單“組建”→“組建”(或按F7鍵)一次完成編譯與連接。對于初學者來說,還是提倡分步進行程序的編譯與連接,因為程序出錯的機會較多,最好等到上一步完全正確后才進行下一步。對于有經驗的程序員來說,在對程序比較有把握時,可以一步完成編譯與連接。

5.程序的執行在得到可執行文件c1-1.exe后,就可以直接執行c1-1.exe了。選擇“組建”→“!執行[c1-1.exe]”,見圖1-21。

在選擇“!執行[c1-1.exe]”項后,即開始執行c1-1.exe。也可以不通過選擇菜單,而直接按Ctrl+F5鍵來實現程序的執行。程序執行后,屏幕切換到輸出結果的窗口,顯示出運行結果,見圖1-22。

可以看到,在輸出結果的窗口中的第1行是程序的輸出:

GoodMoning!然后換行。第2行“Pressanykeytocontinue”并非程序所指定的輸出,而是VisualC++在輸出完運行結果后由VisualC++6.0系統自動加上的一行信息,通知用戶“按任何一鍵以便繼續”。當你按下任何一鍵后,輸出窗口消失,回到VisualC++的主窗口,你可以繼續對源程序進行修改補充或進行其他工作。如果已完成對一個程序的操作,不再對它進行其他處理,應當選擇“文件”→“關閉工作區”,以結束對該程序的操作。1.4“學生成績管理系統”初步總體規劃設計

1.4.1應用程序的開發過程應用程序的開發過程一般分為三個階段:分析、設計、實施。

1.系統分析系統分析主要完成三個任務,一是需求報告,二是可行性分析,三是系統詳細分析并建立邏輯模型。在進行系統分析以前,必須首先確定用戶究竟需要應用系統完成什么樣的工作?達到什么目標?預期完成的時間要求等。這些即稱為需求報告,這種需求報告應該是由用戶寫出,其中應包括系統的名稱、預期目標、輸入輸出格式說明以及完成時間等。

可行性分析是應用程序開發中的重要一環,它是在用戶提交的需求報告的基礎上實事求是地分析提出需求的可能性與必要性,其作用是盡量減少開發過程中的盲目性,避免不必要的損失??尚行苑治鰬搹募夹g可行性、經濟可行性、操作可行性等三個方面進行分析。可行性分析之后,必須由開發人員寫出書面的可行性報告,它應該反映這樣幾個問題:系統簡述、系統目標、系統開發的條件與結論。結論是根據可行性分析對所提出的應用系統研制工作是否可以繼續進行作出判斷。在可行性報告被認可以后,就要從系統的組織、功能、業務等各個方面進行調查分析以確定應用系統的邏輯模型。它一般分為三個階段:調查研究、綜合分析、編寫系統說明書。工作的重點在于對數據流程的調查分析,在說明書中應包含數據流程圖。因為這是建立邏輯模型的基礎。2.系統設計系統設計是在系統分析的基礎上,規劃系統規模、設計系統結構,最終提出系統的實施方案,建立系統的物理模型。這一階段是系統開發的核心,這主要的工作任務包括繪制系統結構圖、代碼設計、輸入輸出設計、數據庫設計、模塊處理流程設計等。繪制系統結構圖實際上是進行系統的結構設計,也就是進行模塊化設計。所謂的模塊化設計指將一個系統按功能自頂向下,由抽象到具體,由粗到細,逐層分解,一直分解到功能明確、大小適中、彼此獨立、能用程序實現的模塊為止。系統結構圖一般是在數據流程圖的基礎上變換而來的。代碼設計是指將系統中涉及的實體的名稱、屬性、狀態等用一定的符號(數字或字母不同組合)來定義,使數據標準化、系統化,便于計算機對其進行處理。代碼設計應具唯一性、可擴充性、通用性、便于記憶與識別等特性。代碼的編碼方法很多,如順序碼、層次碼、組碼、多面碼、助記碼、縮寫碼等。例如:一個學生的學號可以這樣編:20000102002,其中前四位2000表示該學生入學的時間,01表示所在的系,02表示該系所屬的專業,002表示該生的順序號,這種碼就是多面碼。輸入輸出設計一般是先進行輸出設計,再進行輸入設計。輸出設計是確定輸出信息的需求,確定輸出信息的內容,輸出介質和設備,輸出格式的設計等。輸入設計是確定原始信息的輸入方式,主要有菜單法、表格法、應答法等三種輸入方法。這三種方法可以混合使用,取長補短,其目的是為了簡化操作,提高輸入速度。在確定了輸入方式以后還要設計數據校驗方法,對輸入的數據還要進行校驗以保證數據輸入的正確性。數據庫設計包括數據庫的邏輯設計與數據庫的物理設計,邏輯設計的任務是建立數據模型,物理設計的目的是確定數據庫的物理結構如字段的類型、寬度等。通常在一個數據庫中往往要包含多個表,物理設計還要確定數據庫中應包含那些表,各個表之間的關系等。模塊處理流程設計的任務是分析各個模塊內的信息流動情況,選擇信息處理的方法并組織處理的過程。3.系統實施系統實施是繼系統分析與設計之后的最重要的開發階段。這個階段的主要任務是將前兩個階段所完成的“做什么?怎么做?”真正付諸實現。其主要工作包括編制程序、系統的調試與測試、試運行與維護、系統評價等。程序設計是利用程序設計語言實現各個功能模塊的要求。要廣泛使用面向對象的程序設計方法,在程序設計過程中實現功能要求是不言而喻的,但更要強調程序的可靠性、可維護性與程序的界面友好性。

系統的調試是開發人員為了排除程序錯誤,檢查能否實現模塊功能而進行的工作??煞譃樽酉到y分調和應用系統聯調。分調重點在于程序的功能與數據處理的正確性,而聯調則側重于整個應用系統中相關模塊的相互影響、參數傳遞的正確性及程序整體控制的正確性檢查。系統維護主要是指針對應用系統在運行過程中出現的各種問題進行糾正、修改、升級等??梢苑譃榧m正性維護、完善性維護和適應性維護三種。系統維護主要包括數據維護、程序維護、硬件與系統軟件的維護等三個方面的工作。系統的評價是在系統運行了一段時間后,對系統的性能指標、經濟指標和管理指標作出一個公正而又準確的評價。1.4.2“學生成績管理系統”總體規劃設計

學生成績的統計與管理,是學校教學管理中的重要管理內容,它關系到學生是否能正常畢業。隨著學校規模的擴大和管理要求的提高,傳統的手工管理的方法就不適應當前學校教學管理的需要,學生學習成績的計算機自動化管理也是衡量一個學校管理水平的標志。學生學習成績的計算機自動化管理能高效、方便的管理學生成績。要開發一個班級學生成績管理系統軟件,可以先走訪本校的教務管理部門,了解學生成績管理方法,經過分析得出管理流程,按管理流程設計出管理模塊,如果是正式開發管理軟件,這個工作要經過與用戶單位充分的討論、論證,最后得出一致的意見。下面就開發學習型的“班級學生成績管理系統”的主要功能說明如下:班級學生成績管理系統共設計了6大模塊:

(1)打開文件模塊,能夠打開保存在磁盤上的學生成績文件。(2)保存文件模塊,能將一個班40個學生,每個學生包括學號、姓名、三門課程學習成績和總成績以及平均成績全部保存在磁盤文件中。(3)編輯成績模塊,能編輯學生信息和學生成績,并能進行相應的增加、刪除、修改等操作。(4)顯示成績模塊,能顯示全部學生信息、指定學生信息、不及格學生信息和按總成績排序后的學生信息。(5)計算模塊,能對學生成績進行總成績與平均成績計算,能找出全班學習成績最好的和最差的學生。(6)程序說明模塊,能對軟件的版本、功能、使用方法、開發者信息等進行相應說明。另外,本系統只有一個出口,程序只能通過該出口正常結束,以保證安全退出系統。6大功能模塊可以用圖1-23表示。圖1-23

開發“班級學生成績管理系統”項目遵循“軟件開發工作流程”和“循序漸進”原則,分任務實施。每個單元首先以一至二個任務為驅動,圍繞完成任務設計必備知識與理論,力爭程序開發步驟與知識水平、能力緊密結合,使學習與應用熔為一體,學用結合,學用相長。通過學習的深入逐步完善程序功能,最后形成一個完整的程序。隨著知識介紹的逐漸增多,學習者也可以自己增加新模塊,使程序更趨完善,更加實用。項目開發實施方案:任務1:“班級學生成績管理系統”總體規劃設計。任務2:“班級學生成績管理系統”中相關數據設計。任務3:用輸入輸出函數初步設計項目封面與菜單。任務4:項目封面、菜單的順序執行設計。

任務5:用if語句實現菜單的選擇執行設計。任務6:用switch語句實現菜單的選擇執行設計。任務7:用循環語句實現項目主菜單的選擇執行設計。

任務8:用循環語句實現項目主、子菜單的選擇執行設計。任務9:項目整體框架設計。任務10:初步完善學生最高、最低等成績查找。任務11:初步完善學生成績排序。任務12:用指針實現學生最高、最低等成績查找。任務13:用指針實現學生成績排序。任務14:用結構體實現數據的增加、刪除、修改和顯示。任務15:項目中學生數據的存儲和重復使用。

“學生信息管理系統”項目的整體框架設計應當充分的進行調查研究,充分與用戶進行溝通,充分了解用戶的需要,在此基礎上給出項目的總體規則設計方案。本章小結:本單元主要介紹班級學生成績管理系統設計要點和主要模塊,介紹C語言程序設計中的一些基本概念以及開發應用程序的主要步驟。通過本單元的學習,使讀者對用C語言開發程序有一個概括性的了解,并能夠模仿例題編寫一些簡單程序。

知識目標:掌握C語言的數據類型;深刻理解常量與變量;深刻理解整型、實型和字符型數據常量和變量的表示方法;掌握賦值運算符和賦值表達式、變量的賦值方法;理解各種數據類型之間的混合運算。能力目標:能正確定義“班級學生成績管理系統”中的相關數據的類型。

第2章“學生成績管理系統”中相關數據設計

2.1任務1“學生成績管理系統”中相關數據設計2.1.1任務情境

“學生成績管理系統”中的數據有常量與變量、簡單類型數據和復雜類型數據。這些變量有簡單類型變量,還有一些復雜類型變量,如數組、結構體、共用體、指針類型等變量。在這里我們只對“學生成績管理系統”中的數據做一些簡單的分析?!皩W生成績管理系統”中的學生信息主要有:學號、性別、年齡、三門功課成績、總成績和平均成績,再加上一些與計算全班成績有關的最高成績、最低成績等。如學號、性別這類數據只是起到描述一些基本信息的作用,通常情況下不進行算術運算;而年齡、三門功課成績、總成績和平均成績以及最高成績、最低成績等這類數據有可能進行算術運算。所以針對這二類數據我們在定義數據類型時,要根據實際情況選擇不同的數據類型。下面我們通過相關理論的學習,掌握如何將“學生成績管理系統”中的數據定義成C語言能夠處理的數據。2.1.2知識必備引例:已知圓的半徑,求圓的周長、面積。程序代碼如下:010203040506070809#include<stdio.h>#definePI=3.14159\\定義符號常量main(){floatr,perimeter,area;\\定義變量

scanf(〝%f〝,&r);\\輸入半徑perimeter=2*PI*r;area=PI*R*R;printf(〝周長=%f\n〝,perimeter);\\輸出周長及面積

printf(〝面積=%f\n〝,area);}代碼貼士

該程序中,在第02行定義了符號常量PI,其值在程序中不改變。在04行定義了半徑、周長、面積三個實型變量。由于輸入的半徑不同,計算的周長、面積也不相同。因此,在程序中半徑、周長和面積這三個變量的值是變化的。1.C語言的數據類型通過實例分析,我們已經看到程序中使用的各種變量都應預先加以定義,即先定義,后使用。對變量的定義可以包括三個方面:數據類型存儲類型作用域在本章中,我們只介紹數據類型的說明。其它說明在以后各章中陸續介紹。所謂數據類型是按被定義變量的性質,表示形式,占據存儲空間的多少,構造特點來劃分的。在C語言中,數據類型可分為:基本數據類型,構造數據類型,指針類型三大類。浮點型雙精度浮點型(double)

單精度浮點型(float)枚舉類型(enum)結構體類型(struct{…})共用體類型(union{…})構造類型指針類型(T*)基本類型數據類型型整型字符型(char)短整型(short)長整型(long)整型(int)2.常量與變量對于基本數據類型量,按其取值是否可改變又分為常量和變量兩種。在程序執行過程中,其值不發生改變的量稱為常量,其值可變的量稱為變量。

(1)常量與符號常在程序執行過程中,其值不發生改變的量稱為常量。直接常量(字面常量):整型常量:12、0、-3;實型常量:4.6、-1.23;字符常量:‘a’、‘b’。符號常量:用標識符代表一個常量。在C語言中,可以用一個標識符來表示一個常量,稱之為符號常量。符號常量在使用之前必須先定義,其一般形式為:#define標識符常量說明:①用標識符代表一個常量,稱為符號常量。②習慣上符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區別。③使用符號常量的好處是:含義清楚;能做到“一改全改”?!纠?.1】符號常量的使用。

#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf(“total=%d”,total);}

(2)變量其值可以改變的量稱為變量。一個變量應該有一個名字,在內存中占據一定的存儲單元。變量定義必須放在變量使用之前。一般放在函數體的開頭部分。要區分變量名和變量值是兩個不同的概念。3變量值變量名存儲單元a圖2-13.整型數據(1)整型常量表示方法整型常量就是整常數。在C語言中,使用的整常數有八進制、十六進制和十進制三種。

1)十進制整常數:十進制整常數沒有前綴。其數碼為0~9。以下各數是合法的十進制整常數:

237、-568、65535、1627;

2)八進制整常數:八進制整常數必須以0開頭,即以0作為八進制數的前綴。數碼取值為0~7。八進制數通常是無符號數。以下各數是合法的八進制數:015(十進制為13)、0101(十進制為65)、0177777(十進制為65535);十六進制整常數:十六進制整常數的前綴為0X或0x。其數碼取值為0~9,A~F或a~f。以下各數是合法的十六進制整常數:0X2A(十進制為42)、0XA0(十進制為160)、0XFFFF(十進制為65535);

(2)整型變量整型變量用來存放整數。在16位字長的機器上,基本整型的長度也為16位,因此表示的數的范圍也是有限定的。

1.整型變量的分類基本型:類型說明符為int,在內存中占2個字節。短整量:類型說明符為shortint或short。所占字節和取值范圍均與基本型相同。長整型:類型說明符為longint或long,在內存中占4個字節。無符號型:類型說明符為unsigned。無符號型又可與上述三種類型匹配而構成:無符號基本型:類型說明符為unsignedint或unsigned。無符號短整型:類型說明符為unsignedshort。無符號長整型:類型說明符為unsignedlong。各種無符號類型量所占的內存空間字節數與相應的有符號類型量相同。但由于省去了符號位,故不能表示負數。表2.1列出了TurboC和VisualC++6.0中各類整型量所分配的內存字節數及數的表示范圍。類型說明符TurboC2.0VisualC++6.0字節數數值范圍字節數數值范圍int2-32768~327674-2147483648~2147483647unsignedint20~6553540~4294967295shortint2-32768~327672-32768~32767unsignedshortint20~6553520~65535longint4-2147483648~21474836474-2147483648~2147483647unsignedlong40~429496729540~4294967295表2.1整型量所分配的內存字節數及數的表示范圍2.整型變量的定義變量定義的一般形式為:類型說明符變量名標識符,變量名標識符,...;例如:

inta,b,c;(a,b,c為整型變量)longx,y;(x,y為長整型變量)unsignedp,q;(p,q為無符號整型變量)

在書寫變量定義時,應注意以下幾點:①允許在一個類型說明符后,定義多個相同類型的變量。各變量名之間用逗號間隔。類型說明符與變量名之間至少用一個空格間隔。②最后一個變量名之后必須以“;”號結尾。③變量定義必須放在變量使用之前。一般放在函數體的開頭部分。【例2.2】整型變量的定義與使用。

main(){inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\n”,c,d);}

(3)整形常量的類型整型常量和整型變量一樣也有數據類型,才能在賦值時匹配。如果int型數據在內存中占2個字節,longint型變量占4個字節,按下面的規則處理:①如果整常數的值在–32768~32767范圍內,認為它是int型,分配2個字節。它可以賦值給int型和longint型變量。②如果其值超出上述范圍,而在–2147483648~2147483647范圍內,則認為它是長整型,分配4個字節。可以將它賦值給一個longint型變量。③在一個常量后面加一個字母l或L,則認為是長整型常量,例如123l、423L等;一個整型常量后面加一個字母u或U,認為是unsignedint型,如12345u在內存中按unsignedint型規定的方式存放。4.實型數據

(1)實型常量的表示方法

1)十進制數形式:由數碼0~9和小數點組成。例如:

0.0、25.0、5.789、0.13、5.0、300.、-267.8230等均為合法的實數。注意,必須有小數點。

2)指數形式:由十進制數,加階碼標志“e”或“E”以及階碼(只能為整數,可以帶符號)組成。其一般形式為:aEn(a為十進制數,n為十進制整數)其值為a*10n。

如:

2.1E5(等于2.1*105)3.7E-2(等于3.7*10-2)0.5E7(等于0.5*107)-2.8E-2(等于-2.8*10-2)(2)實型變量實型數據在內存中的存放形式實型數據一般占4個字節(32位)內存空間。按指數形式存儲。實數3.14159在內存中的存放形式如下:+.3141591

數符小數部分指數

小數部分占的位(bit)數愈多,數的有效數字愈多,精度愈高。指數部分占的位數愈多,則能表示的數值范圍愈大。

2)實型變量的分類實型變量分為:單精度(float型)、雙精度(double型)和長雙精度(longdouble型)三類。在VisualC++6.0中單精度型占4個字節(32位)內存空間,其數值范圍為3.4E-38~3.4E+38,只能提供七位有效數字。雙精度型占8個字節(64位)內存空間,其數值范圍為1.7E-308~1.7E+308,可提供16位有效數字。

實型變量定義的格式和書寫規則與整型相同。例如:

floatx,y;(x,y為單精度實型量)doublea,b,c;(a,b,c為雙精度實型量)3)實型數據的舍入誤差由于實型變量是由有限的存儲單元組成的,因此能提供的有效數字總是有限的。如下例。

【例2.3】實型數據的舍入誤差。

main(){floata,b;a=123456.789e5;b=a+20printf("%f\n",a);printf("%f\n",b);}

運行結果a和b的值均是12345678848.000000

由于a是單精度浮點型,有效位數只有七位。因此,從將20加到最后二位上是無意義的。4)實型常數的類型實型常數不分單、雙精度,在機器內部都按雙精度double型處理。

5.字符型數據字符型數據包括字符常量和字符變量。(1)字符常量字符常量是用單引號括起來的一個字符。例如:'a'、'b'、'='、'+'、'?'都是合法字符常量。在C語言中,字符常量有以下特點:

1.字符常量只能用單引號括起來,不能用雙引號或其它括號。

2.字符常量只能是單個字符,不能是字符串。

3.字符可以是字符集中任意字符。但數字被定義為字符型之后就不能參與數值運算。如'5'和5是不同的。'5'是字符常量,不能參與運算。

轉義字符是一種特殊的字符常量。轉義字符以反斜線"\"開頭,后跟一個或幾個字符。轉義字符具有特定的含義,不同于字符原有的意義,故稱“轉義”字符。例如,在前面各例題printf函數的格式串中用到的“\n”就是一個轉義字符,其意義是“回車換行”。轉義字符主要用來表示那些用一般字符不便于表示的控制代碼。轉義字符轉義字符的意義ASCII代碼 \n回車換行10 \t橫向跳到下一制表位置9 \b退格8 \r回車13 \f走紙換頁12 \\反斜線符"\"92 \'單引號符39\”雙引號符34 \a鳴鈴7 \ddd1~3位八進制數所代表的字符 \xhh1~2位十六進制數所代表的字符表2.2常用的轉義字符及其含義

(2)字符變量字符變量用來存儲字符常量,即單個字符。字符變量的類型說明符是char。字符變量類型定義的格式和書寫規則都與整型變量相同。例如:

charc1,c2;c1=’a’;c2=’b’;(3)字符數據在內存中的存儲形式及使用方法每個字符變量被分配一個字節的內存空間,因此只能存放一個字符。字符值是以ASCII碼的形式存放在變量的內存單元之中的。如x的十進制ASCII碼是120。對字符變量a賦予'x'值:

a='x';

實際上是在a,b兩個單元內存放120的二進制代碼:

a:01111000

所以也可以把它們看成是整型量。C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。在輸出時,允許把字符變量按整型量輸出,也允許把整型量按字符量輸出?!纠?.4】向字符變量賦以整數。

main(){chara,b;a=120;b=121;printf("%c,%c\n",a,b);printf("%d,%d\n",a,b);}運行結果:

xy120121

本程序中定義a,b為字符型,但在賦值語句中賦以整型值。從結果看,a,b值的輸出形式取決于printf函數格式串中的格式符,當格式符為"c"時,對應輸出的變量值為字符,當格式符為"d"時,對應輸出的變量值為整數?!纠?.5】main(){chara,b;a='a';b='b';a=a-32;b=b-32;printf("%c,%c\n%d,%d\n",a,b,a,b);}

運行結果:

A,B,65,66

本例中,a,b被說明為字符變量并賦予字符值,C語言允許字符變量參與數值運算,即用字符的ASCII碼參與運算。由于大小寫字母的ASCII碼相差32,因此運算后把小寫字母換成大寫字母。然后分別以整型和字符型輸出。2.1.3任務實施通過相關理論學習后,我們可以對“學生成績管理系統”中相關數據進行分析及定義了。將現實中的數據處理成C語言能夠理解的數據。1.常量定義在“學生成績管理系統”中我們假定本系統能處理一個班40個學生的數據。通常情況下,學生人數這個數據在程序的運行過程中是不變的。因此,要把表示一個班學生總人數的數據定義成符號常量。定義符號常量的格式如下:#defineSTUNUM40說明:符號常量(STUNUM)必須用大寫字母。

2.簡單類型“學生成績管理系統”中的學生信息主要包括:學號、姓名、性別、年齡、三門功課成績、總成績和平均成績,另外還有一些與計算全班成績有關的最高成績、最低成績等。這些數據在程序運行過程中是可能改變的,這里只對部分表示學生信息的簡單數據定義,我們在定義變量時最好能做到“見名知義”。

intstunum;//整數類型的學號

charstusex;//字符類型的性別

intstuage;//整數類型的年齡

floatscore1;//單精度類型的成績1

floatscore2;//單精度類型的成績2floatscore3;//單精度類型的成績3floatavescore;//單精度類型的平均成績

floatmaxscore;//單精度類型的最高分

floatminscore;//單精度類型的最低分由于性別這類數據只是起到描述一些基本信息的作用,通常情況下不進行算術運算,所以我們定義為字符型;而年齡、三門功課成績、總成績和平均成績以及最高成績、最低成績等這類數據有可能進行算術運算,所以我們定義為數值型。另外,在編程實踐中還會遇到一些這里不能一一列舉出來的變量、數組變量和指針變量,我們將在后續的學習逐漸認識與掌握。在“班級學生成績管理系統”中變量定義完成以后,接下來我們還要在知識擴展環節里進一步學習如何給變量賦值。2.1.4知識擴展

1.變量賦初值在程序中常常需要對變量賦初值,以便使用變量。語言程序中可有多種方法為變量提供初值。本小節先介紹在作變量定義的同時給變量賦以初值的方法。這種方法稱為初始化。在變量定義中賦初值的一般形式為:類型說明符變量1=值1,變量2=值2,……;例如:

inta=3;

intb,c=5;floatx=3.2,y=3f,z=0.75;

charch1='K',ch2='P';

應注意,在定義中不允許連續賦值,如a=b=c=5是不合法的。

【例2.6】main(){inta=3,b,c=5;b=a+c;printf("a=%d,b=%d,c=%d\n",a,b,c);}2.各類數值型數據之間的混合運算變量的數據類型是可以轉換的。轉換的方法有兩種,一種是自動轉換,一種是強制轉換。自動轉換發生在不同數據類型的量混合運算時,由編譯系統自動完成。自動轉換遵循以下規則:若參與運算量的類型不同,則先轉換成同一類型,然后進行運算。轉換按數據長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型后再進行運算。

所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉換成double型,再作運算。

char型和short型參與運算時,必須先轉換成int型。在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。如果右邊量的數據類型長度左邊長時,將丟失一部分數據,這樣會降低精度,丟失的部分按四舍五入向前舍入。下圖表示了類型自動轉換的規則。char,shortdoublelongunsignedintfloat【例2.7】main(){floatPI=3.14159;ints,r=5;s=r*r*PI;printf("s=%d\n",s);}

本例程序中,PI為實型;s,r為整型。在執行s=r*r*PI語句時,r和PI都轉換成double型計算,結果也為double型。但由于s為整型,故賦值結果仍為整型,舍去了小數部分。

3.強制類型轉換強制類型轉換是通過類型轉換運算來實現的。其一般形式為:

(類型說明符)(表達式)

其功能是把表達式的運算結果強制轉換成類型說明符所表示的類型。例如:

(float)a把a轉換為實型

(int)(x+y)把x+y的結果轉換為整型

在使用強制轉換時應注意以下問題:

1)類型說明符和表達式都必須加括號(單個變量可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之后再與y相加了。

2)無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變量的數據長度進行的臨時性轉換,而不改變數據說明時對該變量定義的類型。

【例2.8】main(){floatf=5.75;printf("(int)f=%d,f=%f\n",(int)f,f);}

本例表明,f雖強制轉為int型,但只在運算中起作用,是臨時的,而f本身的類型并不改變。因此,(int)f的值為5(刪去了小數)而f的值仍為5.75。

4.算術運算符和算術表達式C語言中運算符和表達式數量之多,在高級語言中是少見的。正是豐富的運算符和表達式使C語言功能十分完善。這也是C語言的主要特色之一。C語言的運算符不僅具有不同的優先級,而且還有一個特點,就是它的結合性。在表達式中,各運算量參與運算的先后順序不僅要遵守運算符優先級別的規定,還要受運算符結合性的制約,以便確定是自左向右進行運算還是自右向左進行運算。這種結合性是其它高級語言的運算符所沒有的,因此也增加了C語言的復雜性。

(1)C運算符簡介C語言的運算符可分為以下幾類:

1)算術運算符:用于各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)共七種。

2)關系運算符:用于比較運算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。

3)邏輯運算符:用于邏輯運算。包括與(&&)、或(||)、非(!)三種。

4)位操作運算符:參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

5)賦值運算符:用于賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|

溫馨提示

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

評論

0/150

提交評論