




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1章 C語(yǔ)言概述本章要點(diǎn)了解C語(yǔ)言的特點(diǎn),初步掌握C語(yǔ)言的基本結(jié)構(gòu),掌握在VC+6.0環(huán)境下C語(yǔ)言程序的編輯、編譯、連接與運(yùn)行,了解算法的概念及用傳統(tǒng)流程圖表示算法的方法。本章的重點(diǎn)和難點(diǎn)是VC+6.0集成環(huán)境下C語(yǔ)言程序的運(yùn)行方法。第一節(jié) C語(yǔ)言的發(fā)展與特點(diǎn)一、C語(yǔ)言的發(fā)展C語(yǔ)言誕生以前,系統(tǒng)軟件主要是用匯編語(yǔ)言編寫的。但由于匯編語(yǔ)言依賴于計(jì)算機(jī)硬件,其可讀性和可移植性都很差,而一般的高級(jí)語(yǔ)言又難以實(shí)現(xiàn)對(duì)計(jì)算機(jī)硬件直接進(jìn)行操作。所以人們希望出現(xiàn)一種兼有匯編語(yǔ)言和高級(jí)語(yǔ)言優(yōu)點(diǎn)的新語(yǔ)言,于是誕生了C語(yǔ)言。C語(yǔ)言是由貝爾實(shí)驗(yàn)室的Dennis Ritchie在20世紀(jì)70年代初發(fā)明的,最初是作為U
2、NIX系統(tǒng)的開(kāi)發(fā)語(yǔ)言。70年代末,隨著微型計(jì)算機(jī)的發(fā)展,C語(yǔ)言開(kāi)始移植到非UNIX環(huán)境中,并逐步成為獨(dú)立的程序設(shè)計(jì)語(yǔ)言。1978年,Brian.W.Kernighan和Dennis.M.Ritchie出版了名著The C Programming Language,通常簡(jiǎn)稱為K&R,該書(shū)中介紹的C語(yǔ)言成為后來(lái)廣泛使用的C語(yǔ)言版本的基礎(chǔ),也有人稱之為K&R標(biāo)準(zhǔn)。但是,在K&R中并沒(méi)有定義一個(gè)完整的標(biāo)準(zhǔn)C語(yǔ)言。繼C語(yǔ)言問(wèn)世之后出現(xiàn)了許多版本,由于沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),不同C語(yǔ)言版本之間缺乏兼容。為了改變這種情況,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)ANSI(American National Sta
3、ndards Institute)于1983年根據(jù)C語(yǔ)言問(wèn)世以來(lái)各種版本對(duì)C語(yǔ)言的發(fā)展和擴(kuò)充,公布了第一個(gè)C語(yǔ)言標(biāo)準(zhǔn)草案(83 ANSI C)。1989年,ANSI公布了一個(gè)完整的C語(yǔ)言標(biāo)準(zhǔn),常稱ANSI C或C89,該標(biāo)準(zhǔn)定義了語(yǔ)言和一個(gè)標(biāo)準(zhǔn)C庫(kù)。1990年,C89被國(guó)際標(biāo)準(zhǔn)化組織ISO(International Standard Organization)接受作為國(guó)際標(biāo)準(zhǔn),常稱C90,C89和C90實(shí)質(zhì)上是同一個(gè)標(biāo)準(zhǔn)。1999年,ISO對(duì)C語(yǔ)言標(biāo)準(zhǔn)進(jìn)行修訂,在基本保留原來(lái)的C語(yǔ)言特征的基礎(chǔ)上,針對(duì)應(yīng)用的需要,增加了一些功能,尤其是C+中的一些功能,命名為C99。本書(shū)基本上以C89為基礎(chǔ)進(jìn)
4、行介紹。二、C語(yǔ)言的特點(diǎn)C語(yǔ)言是一種用途廣泛、功能強(qiáng)大、使用靈活的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言。由于以下原因而在程序員中流行:1. C語(yǔ)言具有結(jié)構(gòu)化的高級(jí)編程語(yǔ)言應(yīng)有的所有高級(jí)指令,使程序員不需要知道硬件細(xì)節(jié)。同時(shí),C也具有一些低級(jí)指令,允許程序員能夠直接快速地訪問(wèn)硬件。這種把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)的特點(diǎn)使得C語(yǔ)言在通用程序設(shè)計(jì)和系統(tǒng)程序設(shè)計(jì)上都能滿足程序員的需要。2. C語(yǔ)言是結(jié)構(gòu)式語(yǔ)言。結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。C語(yǔ)言是以函數(shù)形式提供給用戶的,這些函數(shù)可方
5、便的調(diào)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。3. C語(yǔ)言是一種高效的語(yǔ)言。在設(shè)計(jì)上它充分利用了當(dāng)前計(jì)算機(jī)在能力上的優(yōu)點(diǎn),生成的目標(biāo)代碼質(zhì)量高,運(yùn)行速度快。4. C語(yǔ)言簡(jiǎn)潔緊湊,使用方便靈活。C語(yǔ)言只有37個(gè)關(guān)鍵字,9種控制語(yǔ)句。程序書(shū)寫形式自由,源程序短。5. C語(yǔ)言運(yùn)算符豐富。C語(yǔ)言提供的運(yùn)算符范圍廣泛且功能強(qiáng)大,共有34種運(yùn)算符,程序員可以簡(jiǎn)單地表達(dá)自己的意圖,書(shū)寫的程序更為簡(jiǎn)潔且運(yùn)行效率更高。6. C語(yǔ)言是一種可移植性語(yǔ)言。可移植性意味著在一個(gè)系統(tǒng)上編寫的C程序經(jīng)過(guò)很少改動(dòng)或不經(jīng)修改就可以在其他系統(tǒng)上運(yùn)行。當(dāng)然,C語(yǔ)言也有一些缺點(diǎn)。由于用C語(yǔ)言進(jìn)行程序設(shè)計(jì)時(shí)自由
6、度大,對(duì)變量的類型約束不嚴(yán)格,影響程序的安全性,對(duì)數(shù)組下標(biāo)越界不作檢查,尤其是對(duì)指針的使用,可能經(jīng)常出現(xiàn)難以追蹤的編程錯(cuò)誤。此外,C語(yǔ)言輸入輸出相對(duì)很多語(yǔ)言都較為復(fù)雜,對(duì)于字符串的處理,只能通過(guò)字符數(shù)組實(shí)現(xiàn)。與其他高級(jí)語(yǔ)言相比,C語(yǔ)言較難掌握。第二節(jié) 簡(jiǎn)單的C程序介紹簡(jiǎn)單地講,計(jì)算機(jī)程序是指用某種程序設(shè)計(jì)語(yǔ)言編寫并能夠運(yùn)行于某種目標(biāo)體系結(jié)構(gòu)上的一組指令序列,告訴計(jì)算機(jī)完成一些特定的任務(wù)。C程序就是用C語(yǔ)言所編寫的計(jì)算機(jī)程序。先來(lái)看幾個(gè)簡(jiǎn)單的C程序例子。例1.1 在屏幕上輸出一行文字信息。#include <stdio.h>void main() printf ("Welc
7、ome to the world of C!n");程序運(yùn)行結(jié)果:Welcome to the world of C!例1.2 求兩數(shù)之和。#include <stdio.h>void main( )int a,b,sum; /* 聲明部分,定義整型變量a、b、sum*/a=25;b=68; /* 以下3 行為C 語(yǔ)句 */sum=a+b;printf("sum=%dn",sum);程序運(yùn)行結(jié)果:sum=93例1.3 求兩個(gè)數(shù)中較大者。#include<stdio.h>int max(int a,int b) /*定義函數(shù)max,a和b為函
8、數(shù)的接口,即形式參數(shù)*/int c; /* max函數(shù)中的聲明部分,定義整型變量c*/if(a>b) c=a;else c=b;return (c); /*返回變量c的值*/void main( )int x,y,z; /* 主函數(shù)中的聲明部分,定義整型變量x、y、z*/printf("請(qǐng)輸入兩個(gè)整數(shù):");scanf(“%d,%d”,&x,&y); /*輸入變量x和y的值*/z=max(x,y); /*調(diào)用函數(shù)max,得到的值賦給z,x,y是實(shí)際參數(shù)*/printf("兩數(shù)中較大者為:%dn",z);程序運(yùn)行結(jié)果:請(qǐng)輸入兩個(gè)整數(shù):
9、20,35 (從鍵盤上輸入20,35,表示回車鍵,下同)兩數(shù)中較大者為:35下面就程序中的一些知識(shí)點(diǎn)進(jìn)行簡(jiǎn)單說(shuō)明,在隨后的章節(jié)中將逐一詳細(xì)介紹。(一)#include<stdio.h>三個(gè)程序中都包含了該行“文件包含”處理語(yǔ)句,其作用是告訴編譯器包含文件stdio.h中的全部信息。文件stdio.h是所有C語(yǔ)言編譯包的一個(gè)標(biāo)準(zhǔn)部分,當(dāng)在程序中用到系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)庫(kù)中的輸入輸出函數(shù)時(shí),必須包含該文件。(二)void main( )C程序包含一個(gè)或多個(gè)函數(shù),它們是C程序的基本模塊。例1.1和1.2只包含了一個(gè)main函數(shù),該函數(shù)是主函數(shù),每一個(gè)C語(yǔ)言程序都必須有一個(gè)main函數(shù)。vo
10、id表示此函數(shù)是“空類型”,即執(zhí)行此函數(shù)后不產(chǎn)生函數(shù)值。例1.3中除了主函數(shù)main之外還有一個(gè)max函數(shù),該函數(shù)是用戶自定義函數(shù),其作用是將a和b兩個(gè)數(shù)中較大者的值賦給變量c,return語(yǔ)句的作用是將c的值返回給主調(diào)函數(shù)main。在主函數(shù)main中有一行語(yǔ)句“z=max(x,y);”,其作用是在主函數(shù)中調(diào)用max函數(shù),函數(shù)的返回值賦給變量z。(三)變量聲明語(yǔ)句例1.2和1.3中都包含了變量聲明語(yǔ)句,如例1.2中的“int a,b,sum;”,例1.3中的“int x,y,z;”等。聲明語(yǔ)句的作用是定義程序(或函數(shù))中要使用的變量,并定義每個(gè)變量的類型。在C語(yǔ)言中,要求對(duì)所有用到的變量必須先
11、定義、后使用。(四)scanf()和printf()這是C語(yǔ)言提供的兩個(gè)標(biāo)準(zhǔn)輸入輸出函數(shù),scanf()是輸入函數(shù),printf()是輸出函數(shù)。如例1.1中的“printf ("Welcome to the world of C!n");”,該語(yǔ)句的作用是調(diào)用printf函數(shù),輸出括號(hào)內(nèi)的字符串,“n”是換行符,即在輸出“Welcome to the world of C!”后回車換行,也就是把光標(biāo)移到下一行的開(kāi)始位置。例1.3中“scanf(“%d,%d”,&x,&y);”語(yǔ)句的作用是要求用戶從鍵盤輸入變量x和y的值,中間以逗號(hào)隔開(kāi),“&”是取地址
12、符號(hào)。輸入輸出函數(shù)中的“%d”表示“以十進(jìn)制整數(shù)類型”,用來(lái)指定輸入輸出時(shí)的數(shù)據(jù)類型和格式。(五)/* */表示注釋部分,注釋只是為了幫助讀者理解程序,在編譯時(shí)將被編譯器忽略,即編譯和運(yùn)行時(shí)不起作用。第三節(jié) C程序的基本結(jié)構(gòu)和語(yǔ)法基礎(chǔ)通過(guò)以上三個(gè)由簡(jiǎn)到難的程序,可以分析并了解組成一個(gè)C源程序的基本部分和書(shū)寫格式。(一)在程序開(kāi)始,C語(yǔ)言用#include命令實(shí)現(xiàn)文件包含操作,通常稱為編譯預(yù)處理命令,作用是將尖括號(hào)內(nèi)的文件(一般稱之為“頭文件”)包含到程序中,成為該程序的一部分。C語(yǔ)言的頭文件中包括了各個(gè)標(biāo)準(zhǔn)庫(kù)函數(shù)的函數(shù)原型。(二)C語(yǔ)言程序是由函數(shù)構(gòu)成的。每個(gè)C程序有且只有一個(gè)主函數(shù)main(
13、),main函數(shù)可以放在程序中的任何位置,但程序總是從main函數(shù)開(kāi)始執(zhí)行。除了main函數(shù)外,程序還可以包含若干個(gè)其它函數(shù),每個(gè)函數(shù)根據(jù)用戶需求設(shè)計(jì),完成某一特定的功能,多個(gè)函數(shù)之間可以相互調(diào)用。此外每個(gè)C語(yǔ)言版本都會(huì)提供很多庫(kù)函數(shù),在程序開(kāi)發(fā)中可直接調(diào)用。C語(yǔ)言函數(shù)由函數(shù)頭和函數(shù)體兩部分組成。1函數(shù)頭,即函數(shù)的第一行。其結(jié)構(gòu)如下:函數(shù)類型 函數(shù)名(形式參數(shù)1類型 形式參數(shù)1名稱,形式參數(shù)2類型 形式參數(shù)2名稱,)例如:int max(int a,int b)函數(shù)也可以沒(méi)有參數(shù),如void main( )2函數(shù)體,函數(shù)頭下面花括號(hào)內(nèi)的部分稱為函數(shù)體。如果一個(gè)函數(shù)中包含多個(gè)花括號(hào),最外面一層花
14、括號(hào)所包含部分是函數(shù)體范圍。函數(shù)體由聲明部分和執(zhí)行部分組成。聲明部分對(duì)程序中所使用的變量進(jìn)行說(shuō)明,執(zhí)行部分由若干條語(yǔ)句組成。(三)C語(yǔ)言程序語(yǔ)句以分號(hào)結(jié)束,分號(hào)是語(yǔ)句的一部分。但是,預(yù)處理命令、函數(shù)頭和花括號(hào)“”之后不能加分號(hào)。(四)C語(yǔ)言程序中,/*和*/之間的部分稱為注釋,目的是為了增加程序的可讀性,但在程序執(zhí)行過(guò)程中不起任何作用。C語(yǔ)言的注釋可以出現(xiàn)在程序中的任何地方,一個(gè)較長(zhǎng)的注釋可以放在一行或是多行上。無(wú)論你使用何種編程語(yǔ)言,一個(gè)好的源程序都應(yīng)該有必要的、完整的注釋。(五)C語(yǔ)言中的關(guān)鍵字。所謂關(guān)鍵字是指在C語(yǔ)言中已經(jīng)使用了的有特殊含義的字符,在程序中不能作其它用途使用,也成為保留字
15、。例如“int”用于聲明整型變量或函數(shù),“if”用來(lái)控制程序中語(yǔ)句的執(zhí)行順序。在定義變量名或函數(shù)名時(shí)不能使用這些關(guān)鍵字,否則在編譯時(shí)會(huì)產(chǎn)生錯(cuò)誤。由ANSI標(biāo)準(zhǔn)定義的C語(yǔ)言關(guān)鍵字共有32個(gè)。根據(jù)關(guān)鍵字的作用,可分為數(shù)據(jù)類型關(guān)鍵字、控制語(yǔ)句關(guān)鍵字、存儲(chǔ)類型關(guān)鍵字和其它關(guān)鍵字四類,如表1-1所示。表1-1 C語(yǔ)言關(guān)鍵字關(guān)鍵字類型關(guān)鍵字?jǐn)?shù)據(jù)類型關(guān)鍵字char double enum float int long short signed struct union unsigned void控制語(yǔ)句關(guān)鍵字break case continue default do else for goto if re
16、turn switch while存儲(chǔ)類型關(guān)鍵字auto extern register static其它關(guān)鍵字const sizeof typedef volatileC99標(biāo)準(zhǔn)中新增了五個(gè)關(guān)鍵字:restrict,inline,_Complex,_Imaginary,_Bool,讀者可參考其它相關(guān)的書(shū)籍。(六)C語(yǔ)言程序書(shū)寫格式比較自由,例如一行可以寫一個(gè)語(yǔ)句也可以寫多個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以分寫在多行上。一個(gè)優(yōu)秀的編程人員,不僅要實(shí)現(xiàn)程序的功能,也要讓自己的程序具有良好的可讀性。尤其對(duì)于一個(gè)團(tuán)對(duì)而言,良好的可讀性不僅利于團(tuán)隊(duì)成員之間的互相交流,也為軟件后期維護(hù)節(jié)約成本,因此在編寫程序時(shí)一定要
17、養(yǎng)成良好的編程風(fēng)格。從上一節(jié)的三個(gè)例子中可以看出,在書(shū)寫程序時(shí)注重了以下幾個(gè)方面:縮進(jìn),每行只寫一條語(yǔ)句,添加必要的注釋等。此外,在使用變量名和函數(shù)名時(shí)盡量做到“見(jiàn)名知意”,例如聲明語(yǔ)句“int Stu_age;”,從變量名Stu_age可以立即看出該變量表示學(xué)生的年齡。同時(shí)為了避免一些小的不易發(fā)現(xiàn)的錯(cuò)誤,在書(shū)寫成對(duì)的符號(hào)如“ ”、“( )”時(shí),盡量先成對(duì)的寫出,再在符號(hào)之間添加內(nèi)容。關(guān)于如何使得程序的邏輯結(jié)構(gòu)更為清晰,可讀性更好,在以后的編程中可以慢慢領(lǐng)悟。第四節(jié) C程序的運(yùn)行一、Visual C+ 編譯系統(tǒng)簡(jiǎn)介Visual c+是微軟公司推出的一個(gè)功能強(qiáng)大的可視化軟件開(kāi)發(fā)工具,目前比較常用
18、的版本是Visual C+ 6.0,簡(jiǎn)稱VC 6.0。VC 6.0不僅僅是一個(gè)C/C+編譯器,它為用戶提供了一套良好的可視化開(kāi)發(fā)環(huán)境,包括文本編輯器、資源編輯器、工程創(chuàng)建工具、調(diào)試器、程序向?qū)ppWizard、類向?qū)lassWizard等等。用戶可以在集成開(kāi)發(fā)環(huán)境中創(chuàng)建工程、打開(kāi)工程,建立、打開(kāi)和編輯文件、編譯、鏈接、調(diào)試、運(yùn)行應(yīng)用程序。在Windows環(huán)境中運(yùn)行VC 6.0后,即進(jìn)入C/C+語(yǔ)言的集成開(kāi)發(fā)環(huán)境。程序運(yùn)行的主界面如圖1-1所示。圖1-1 Microsoft Visual C+6.0集成開(kāi)發(fā)環(huán)境VC6.0集成開(kāi)發(fā)環(huán)境的主框架窗口由標(biāo)題欄、菜單欄、工具欄、工作區(qū)、客戶區(qū)、輸出窗
19、口和狀態(tài)欄等組成。標(biāo)題欄用于顯示應(yīng)用程序名和當(dāng)前打開(kāi)的文件名;工作區(qū)用于顯示當(dāng)前打開(kāi)工程的有關(guān)信息,包括工程的類、資源以及文件組成等內(nèi)容;客戶區(qū)用于文本編輯器、資源編輯器等進(jìn)行文件或資源的編輯;輸出窗口用于輸出編譯信息、調(diào)試信息和一些查詢結(jié)果信息等;狀態(tài)欄用于顯示關(guān)于菜單欄、工具欄等的簡(jiǎn)單說(shuō)明信息以及文本編輯器中當(dāng)前光標(biāo)所在的行列號(hào)等。二、C程序的編譯與鏈接在計(jì)算機(jī)上運(yùn)行一個(gè)C程序,必須經(jīng)過(guò)以下幾個(gè)步驟:輸入與編輯源程序編譯源程序得到目標(biāo)程序?qū)⒛繕?biāo)程序與系統(tǒng)庫(kù)函數(shù)連接得到可執(zhí)行程序運(yùn)行可執(zhí)行程序得到結(jié)果。整個(gè)過(guò)程如圖1-2所示。圖1-2 C程序運(yùn)行流程圖下面以創(chuàng)建一個(gè)最簡(jiǎn)單的C語(yǔ)言程序?yàn)槔?,?/p>
20、紹如何在VC 6.0環(huán)境下創(chuàng)建、編寫、編譯、調(diào)試、運(yùn)行一個(gè)C語(yǔ)言程序。此處假定程序只由一個(gè)源文件組成,即單文件程序。1. 啟動(dòng)VC 6.0集成開(kāi)發(fā)環(huán)境。2. 新建一個(gè)文件。選擇菜單欄中的“File”(文件),在其下拉菜單中選擇“New”(新建),屏幕上出現(xiàn)New(新建)對(duì)話框,如圖1-3所示。圖1-3 New(新建)對(duì)話框該對(duì)話框包含四個(gè)標(biāo)簽:Files(文件)、Projects(工程)、Workspaces(工作區(qū))和Other Documents(其它文檔)。選擇Files標(biāo)簽,在其下列表中選擇“C+ Source File”項(xiàng),在對(duì)話框右邊的File(文件名)文本框中輸入將要編輯的源程序
21、文件的名稱,例如“c1.c”?!?c”是C源程序的后綴,如果不指定后綴,默認(rèn)后綴是“.cpp”,其為C+源程序的后綴。在Location(位置)文本框中輸入將要編輯的源程序文件的存儲(chǔ)路徑,或單擊該文本框后的圖標(biāo)選擇路徑。此處假定路徑為“D:C程序示例”。單擊“OK”(確定)按鈕,回到主窗口。3. 編輯C語(yǔ)言程序源代碼。在主窗口的客戶區(qū)中輸入并編輯如下程序:#include<stdio.h>void main( )printf("*n");printf ("Welcome to the world of C!n");printf("*
22、n");輸入編輯完成后,選擇菜單“File”下的“Save”保存源程序文件,也可以按工具欄上的按鈕,或是使用快捷鍵“Ctrl+S”。如果要打開(kāi)一個(gè)已有的源文件,選擇菜單“File”下的“Open”(打開(kāi))子菜單,在彈出的Open對(duì)話框中選擇要打開(kāi)的源文件路徑和名稱。4. 編譯源文件。選擇菜單欄中的“Build”(構(gòu)建),在其下拉菜單中選擇“Compile c1.c”(編譯c1.c)編譯文件,也可以使用工具欄上的按鈕,或是使用快捷鍵“Ctrl+F7”。單擊編譯命令后,屏幕上出現(xiàn)如圖1-4所示的對(duì)話框。圖1-4意思是:此編譯命令要求一個(gè)有效的項(xiàng)目工作區(qū),你是否同意建立一個(gè)默認(rèn)的項(xiàng)目工作區(qū)
23、?單擊“是”按鈕。表示同意由系統(tǒng)建立默認(rèn)的項(xiàng)目工作區(qū),然后開(kāi)始編譯程序。在對(duì)源代碼進(jìn)行編譯時(shí)如果出現(xiàn)錯(cuò)誤,在輸出窗口中會(huì)顯示錯(cuò)誤的位置和類型。錯(cuò)誤信息分為兩類:以error提示的致命錯(cuò)誤和以warning提示的警告錯(cuò)誤。如果有error錯(cuò)誤,程序編譯不能通過(guò),也就無(wú)法運(yùn)行。而warning錯(cuò)誤不影響生成目標(biāo)程序和可執(zhí)行程序,但是可能會(huì)影響程序運(yùn)行的結(jié)果。例如在輸入時(shí)故意漏掉最后一個(gè)printf語(yǔ)句后面的分號(hào),那么程序經(jīng)過(guò)編譯后在輸出窗口中出現(xiàn)的提示信息如圖1-5所示。圖1-5 輸出窗口提示信息“1 error(s)”表明在程序中有一個(gè)錯(cuò)誤。在輸出窗口的錯(cuò)誤提示行上雙擊鼠標(biāo)左鍵,可以定位至程序中
24、的出錯(cuò)處(在客戶區(qū)的程序中出現(xiàn)一粗箭頭指向被報(bào)錯(cuò)的程序行)。程序中的錯(cuò)誤通常叫做bugs,發(fā)現(xiàn)和修正這些錯(cuò)誤的過(guò)程叫做調(diào)試(debugging)。值得注意的是,并不是任何時(shí)候真正的錯(cuò)誤就出現(xiàn)在該行,有時(shí)候需要擴(kuò)大差錯(cuò)范圍才能找到錯(cuò)誤之所在。另外如果提示有多個(gè)錯(cuò)誤,我們沒(méi)有必要試圖一次性改正所有的錯(cuò)誤,可以先修改一個(gè)或兩個(gè)(最好是你能立即理解并知道如何修正的錯(cuò)誤),然后重新編譯,此時(shí)某些錯(cuò)誤提示可能就會(huì)消失。不斷調(diào)試程序,直到輸出窗口中顯示“c1.obj - 0 error(s), 0 warning(s)”?!癱1.obj”是“c1.c”經(jīng)過(guò)編譯后生成的目標(biāo)文件。5. 連接程序。選擇菜單欄中的
25、“Build”,在其下拉菜單中選擇“Buid c1.exe”(構(gòu)建c1.exe),也可以使用工具欄上的按鈕,或是使用快捷鍵“F7”。完成連接后生成了可執(zhí)行文件c1.exe。三、C程序的運(yùn)行得到可執(zhí)行文件c1.exe后,選擇菜單欄中的“Build”,在其下拉菜單中選擇“!Execute c1.exe”(執(zhí)行c1.exe),也可以使用工具欄上的按鈕,或是使用快捷鍵“Ctrl+F5”運(yùn)行程序。運(yùn)行結(jié)果窗口如圖1-6所示。圖1-6 運(yùn)行結(jié)果窗口運(yùn)行結(jié)果的窗口中共有四行信息,前三行通過(guò)程序中的printf語(yǔ)句輸出,最后一行“Press any key to continue”并不是程序所產(chǎn)生的輸出結(jié)果,
26、而是VC 6.0系統(tǒng)自動(dòng)加上的一行信息,所有程序運(yùn)行結(jié)果的最后一行都會(huì)自動(dòng)添加此行信息,意思是:按任意鍵繼續(xù)。當(dāng)按下任意一鍵后,該窗口消失,返回VC 6.0的主窗口。以上只是介紹一個(gè)程序只包含一個(gè)源文件的情況,如果一個(gè)程序包含了多個(gè)源文件,只是在程序的創(chuàng)建上有所不同,程序的編譯、連接及運(yùn)行方法一樣,具體請(qǐng)參考其它相關(guān)書(shū)籍,此處不再贅述。第五節(jié) 算法一、算法概念著名計(jì)算機(jī)科學(xué)家沃思(Nikiklaus Wirth)提出如下公式:程序算法數(shù)據(jù)結(jié)構(gòu)算法是程序的靈魂,數(shù)據(jù)結(jié)構(gòu)是加工對(duì)象。除了這兩個(gè)要素外,一個(gè)程序還應(yīng)當(dāng)采取合適的設(shè)計(jì)方法及選擇合適的工具。所以,程序應(yīng)該包含四個(gè)方面,表示成公式即為:程序
27、算法數(shù)據(jù)結(jié)構(gòu)程序設(shè)計(jì)方法語(yǔ)言工具和環(huán)境本書(shū)重點(diǎn)在C語(yǔ)言上,所以對(duì)算法只是進(jìn)行簡(jiǎn)單的介紹。何為算法?簡(jiǎn)單地理解,算法就是逐步解決問(wèn)題的方法。例如要研究一個(gè)從四個(gè)數(shù)中找出最大數(shù)的算法,我們可能會(huì)采取以下步驟:S1:比較第一和第二個(gè)數(shù),把兩個(gè)數(shù)中較大的那個(gè)數(shù)放在當(dāng)前最大值中;S2:用當(dāng)前的最大值與第三個(gè)數(shù)進(jìn)行比較,兩者中較大數(shù)放在當(dāng)前最大值中;S3:用當(dāng)前的最大值與第四個(gè)數(shù)進(jìn)行比較,兩者中較大數(shù)放在當(dāng)前最大值中。這時(shí)的當(dāng)前最大值就是四個(gè)數(shù)中最大的那個(gè)數(shù)。一個(gè)算法應(yīng)該具有以下特點(diǎn):(1)有窮性:一個(gè)算法應(yīng)包含有限的操作步驟,即算法必須能夠在有限的時(shí)間內(nèi)終止。(2)確定性:算法的每一步都必須有清晰明白的
28、定義,而不能是含糊的、模棱兩可的。(3)有零個(gè)或多個(gè)輸入。(4)有一個(gè)或多個(gè)輸出。算法必須產(chǎn)生結(jié)果,否則就失去了意義。(5)有效性:算法中每一步應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。二、算法舉例例1.4 求123100。設(shè)兩個(gè)變量:sum表示被加數(shù),n表示加數(shù),每次相加的結(jié)果放在被加數(shù)sum中。算法表示如下:S1:1sumS2:1nS3:n1nS4:sumnsumS5:如果n小于100,返回重新執(zhí)行S3及其以后的步驟;否則,算法結(jié)束,最后得到的sum值就是所要的結(jié)果。例1.5 輸入一個(gè)大于或等于3的正整數(shù),判斷它是否是素?cái)?shù)。所謂素?cái)?shù),是指除了1和該數(shù)本身之外,不能被其它任何整數(shù)整除的數(shù)。判斷一個(gè)
29、數(shù)是否是素?cái)?shù)的方法:將n作為被除數(shù),將2到之間的整數(shù)作為除數(shù),如果都不能被整除,則n為素?cái)?shù)。另設(shè)兩個(gè)變量:i表示除數(shù),r表示余數(shù)。算法表示如下:S1:輸入n的值S2:2iS3:n被i除,得到余數(shù)rS4:如果r=0,則輸出n“不是素?cái)?shù)”,算法結(jié)束;否則執(zhí)行S5S5:i+1iS6:如果i,返回S3;否則輸出n“是素?cái)?shù)”,算法結(jié)束。三、用傳統(tǒng)流程圖表示算法自然語(yǔ)言、流程圖和偽代碼都可以用來(lái)表示算法,其中流程圖是算法的圖形化表示方法,用圖形表示算法直觀形象,易于理解。(一)流程圖基本符號(hào)美國(guó)標(biāo)準(zhǔn)化協(xié)會(huì)ANSI規(guī)定了一些常用的流程圖符號(hào),如圖1-7所示,已為世界各國(guó)程序工作者普遍采用。圖1-7 流程圖基
30、本符號(hào)(二)三種基本結(jié)構(gòu)計(jì)算機(jī)科學(xué)家們提出了三種基本結(jié)構(gòu):順序、選擇和循環(huán)。任何一個(gè)復(fù)雜的算法都可以使用這三種結(jié)構(gòu)來(lái)描述。1. 順序結(jié)構(gòu),是最簡(jiǎn)單的一種基本結(jié)構(gòu)。如圖1-8所示,先執(zhí)行A操作,再執(zhí)行B操作。2. 選擇結(jié)構(gòu),又稱為判斷結(jié)構(gòu)或分支結(jié)構(gòu)。如圖1-9所示,當(dāng)p條件成立時(shí)執(zhí)行A操作,當(dāng)p條件不成立時(shí)執(zhí)行B操作。注意,無(wú)論條件p是否成立,A或B兩個(gè)操作中只能有一個(gè)被執(zhí)行。A或B操作允許為空操作。3. 循環(huán)結(jié)構(gòu),根據(jù)條件重復(fù)執(zhí)行同一操作。如圖1-10所示,當(dāng)條件p成立時(shí),反復(fù)執(zhí)行A操作,直到p條件不成立為止。圖1-8 順序結(jié)構(gòu) 圖1-9 選擇結(jié)構(gòu) 圖1-10 循環(huán)結(jié)構(gòu)三種基本結(jié)構(gòu)的共同特點(diǎn):
31、(1)只有一個(gè)入口;(2)只有一個(gè)出口;(3)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到;(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”。例1.4和1.5兩個(gè)算法用流程圖表示分別如圖1-11和圖1-12所示。 圖1-11 圖1-12本章小結(jié)本章簡(jiǎn)述了C語(yǔ)言的發(fā)展與特點(diǎn),C語(yǔ)言程序的基本結(jié)構(gòu)及語(yǔ)法基礎(chǔ),介紹了在VC+6.0環(huán)境下C語(yǔ)言程序的編輯、編譯、連接與運(yùn)行方法,簡(jiǎn)要介紹了算法的概念及算法的傳統(tǒng)流程圖表示方法。在計(jì)算機(jī)上運(yùn)行一個(gè)C語(yǔ)言程序,必須經(jīng)過(guò)以下幾個(gè)步驟:輸入與編輯源程序、編譯源程序得到目標(biāo)程序、將目標(biāo)程序與系統(tǒng)庫(kù)函數(shù)連接得到可執(zhí)行程序、運(yùn)行可執(zhí)行程序得到結(jié)果。學(xué)習(xí)本章內(nèi)容,應(yīng)重點(diǎn)掌握構(gòu)成一個(gè)C語(yǔ)言程序的基本結(jié)構(gòu)及在VC 6.0集成環(huán)境下程序的編譯、連接及運(yùn)行方法。習(xí) 題一、選擇題1C語(yǔ)言是一種( )。A. 低級(jí)語(yǔ)言 B. 匯編語(yǔ)言 C. 高級(jí)語(yǔ)言 D. 機(jī)器語(yǔ)言2以下不是C語(yǔ)言的特點(diǎn)的是( )。A. 語(yǔ)言簡(jiǎn)潔緊湊 B. 可以直接對(duì)硬件進(jìn)行操作C. 數(shù)據(jù)類型豐富 D. 是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言3一個(gè)C程序的執(zhí)行是從( )。A. 本程序的main函數(shù)開(kāi)始,到main函數(shù)結(jié)束B(niǎo). 本函數(shù)的第一個(gè)數(shù)開(kāi)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025店面合伙經(jīng)營(yíng)協(xié)議書(shū)-咖啡輕食店合作
- 2025年度游戲工作室音效制作人員用工協(xié)議
- 二零二五年度水果店與廣告公司品牌宣傳合作協(xié)議
- 個(gè)人車位產(chǎn)權(quán)轉(zhuǎn)讓與車位增值服務(wù)及配套設(shè)施維護(hù)協(xié)議(2025年度)
- 二零二五年度反擔(dān)保人合作協(xié)議:旅游度假區(qū)項(xiàng)目資金安全反擔(dān)保協(xié)議
- 美容院二零二五年度合伙人合作協(xié)議:風(fēng)險(xiǎn)管理與合規(guī)經(jīng)營(yíng)
- 二零二五年度小產(chǎn)權(quán)房屋買賣與智能家居安裝合同
- 二零二五年度新能源行業(yè)定向就業(yè)人才培養(yǎng)合同
- 二零二五年度房屋拆除工程風(fēng)險(xiǎn)評(píng)估與處理合同
- 二零二五年度文創(chuàng)園區(qū)房東租賃服務(wù)協(xié)議
- 皮膚病學(xué)-動(dòng)物性皮膚病課件
- 涉詐風(fēng)險(xiǎn)賬戶審查表
- 論完整的學(xué)習(xí)與核心素養(yǎng)的形成課件
- 新零售運(yùn)營(yíng)管理PPT完整全套教學(xué)課件
- (完整版)小學(xué)英語(yǔ)語(yǔ)法大全-附練習(xí)題,推薦文檔
- 注塑參數(shù)表完整版
- 初中英語(yǔ)中考總復(fù)習(xí)
- 學(xué)習(xí)弘揚(yáng)楓橋精神與楓橋經(jīng)驗(yàn)PPT楓橋經(jīng)驗(yàn)蘊(yùn)含的精神和內(nèi)涵PPT課件(帶內(nèi)容)
- ArcEngine二次開(kāi)發(fā)入門介紹
- 山東大學(xué)出版社六年級(jí)上冊(cè)傳統(tǒng)文化第一單元寬仁厚愛(ài)備課教案
- 選煤廠工完料盡場(chǎng)地清制度
評(píng)論
0/150
提交評(píng)論