版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、武漢理工大學(xué)計算機學(xué)院C語言程序設(shè)計授課教師:王紅霞10/5/20181選用教材與參考書n 主教科書顧治華、陳天煌等 C語言程序設(shè)計機械工業(yè)2007.2n 參考教材 顧治華、陳天煌等C語言程序設(shè)計實驗指導(dǎo) 機械工業(yè) 2007.210/5/20182課程內(nèi)容C語言程序設(shè)計概述算法及算法設(shè)計簡介數(shù)據(jù)描述與基本操作第一章第二章第三章第四章 選擇結(jié)構(gòu)程序設(shè)計第五章第六章循環(huán)結(jié)構(gòu)程序設(shè)計數(shù)組與指針第七章 函數(shù)與模塊化程序設(shè)計方法10/5/20183第一章 C語言程序設(shè)計基礎(chǔ)1.1 程序與程序設(shè)計1.2 C語言簡介1.3 簡單的C語言程序1.4 C語言程序的上機步驟1.5 C語言的基本詞法1.6 C語言程
2、序的基本結(jié)構(gòu)10/5/20184程序與計算機語言 程序是存放在計算機中的操作指令的集合。 用程序設(shè)計語言安排好的處理問題的步驟稱為計算機程序 用程序設(shè)計語言編制一個能完成某項任務(wù)的計算機程序的過程叫做計算機程序設(shè)計。 程序設(shè)計=數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計方法+編程語言 程序設(shè)計的關(guān)鍵:必須掌握一種程序設(shè)計語言。掌握程序設(shè)計的邏輯思維。10/5/20185程序設(shè)計過程(1) 問題的提出,要達到的要求;(2) 確定數(shù)據(jù)結(jié)構(gòu)和所采用的算法;(3) 編制程序;(4) 調(diào)試程序;(5) 整理并寫出文檔;10/5/20186C語言的特點(1) 語言簡潔、緊湊,使用方便、靈活。C語言一共只有32個關(guān)鍵字,主要
3、用小寫字母表示。(2) 比其他高級語言更接近硬件,比低級語言更接近算法。程序易編、易讀、易查錯、易修改,兼有高級語言和 低級語言的優(yōu)點。(3) 數(shù)據(jù)類型和運算符十分豐富,程序設(shè)計和算法描述更為簡單和方便。(4) 語法結(jié)構(gòu)十分簡單,語句數(shù)目少,簡單易學(xué)。10/5/20187(5)它是一種結(jié)構(gòu)化程序設(shè)計語言,提供了完整的程序控制語句(選擇語句和循環(huán)語句),很適合結(jié)構(gòu)化的程序設(shè)計方法。(6)它是一種模塊化的程序設(shè)計語言,適合大型軟件的研制和調(diào)試。生成目標代碼質(zhì)量高,程序執(zhí)行效率高。(7)(8)用c語言寫的程序可移植性好。(9)它提供了大量的庫函數(shù)以供調(diào)用,簡化了程序設(shè)計工作。10/5/20188C語
4、言程序的結(jié)構(gòu)C語言是結(jié)構(gòu)化的程序設(shè)計語言。C語言是模塊化的程序設(shè)計語言,程序是由函數(shù)構(gòu)成的。一個C源程序至少包含一個main函數(shù),也可以包含一個main函數(shù)和若干個其他函數(shù)。因此,函數(shù)是C程序的基本單位。 一個函數(shù)由兩部分組成:函數(shù)的首部,函數(shù)的第一行。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、參數(shù)類型。1)2)3)函數(shù)體,即函數(shù)首部下面的大括弧.內(nèi)的部分。如果一個函數(shù)內(nèi)有多個括弧,則最外層的一對 為函數(shù)的范圍。函數(shù)體一般包括:聲明部分:在這部分中定義所用到的變量。執(zhí)行部分: 由若干個語句組成。10/5/20189(4)一個C程序總是從main函數(shù)開始的,而不論main函數(shù)在整個程序
5、中的位置如何(main函數(shù)可以放在程序最前頭,也可以放在程序最后,或在一些函數(shù)之前,在另一些函數(shù)之后)。C程序書寫格式自由,一行內(nèi)可以寫幾個語句,一個語句可以分寫在多行上。(5)(6)每個語句和數(shù)據(jù)定義的最后必須有一個分號。分號是C語句的必要組成部分。分號不可少。(7)C語言本身沒有輸入輸出語句。輸入輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成的。(8)可以用/*/對C程序中的任何部分作注釋。10/5/201810簡單的C語言程序示例例一main( )printf (“This is a C program.n”);本程序的作用是輸出以下一行信息:This is a C progr
6、am.10/5/201811例二main( )int a,b,sum; a=123;b=456;sum=a+b;/*這是定義變量*/*以下3行為C語句*/printf(“sum is %dn”,sum);程序的運行結(jié)果: Sum is 57910/5/201812例三10/5/201813/* example1.3輸入兩個數(shù),求其中較大的數(shù)*/#include int max(int x,int y)/* 被調(diào)用函數(shù)*/int z;if (xy) z=x; else z=y;return(z);/* 將z的值返回,通過max帶回調(diào)用處*/main()/* 主函數(shù)*/inta,b,c; scan
7、f(“%d,%d”,&a,&b); c=max(a,b); printf(“max=%dn”,c);運行結(jié)果:4,6max=6開始C程序的上機步驟 源程序f.c Yes 有錯?No目標程序f.obj可執(zhí)行 目標程序f.exe庫函數(shù) 和其他目標程序結(jié)果正確Yes結(jié)束10/5/201814No執(zhí)行連接編譯編輯C語言的基本詞法標識符定義:在程序中使用的變量名、函數(shù)名、標號等統(tǒng)稱為 標識符。除庫函數(shù)的函數(shù)名由系統(tǒng)定義外,其余的都由用戶自己定義。命名規(guī)則:標識符只能是字母(AZ,az)、數(shù)字(09)、下劃線(_)組成的字符串,并且其第一個字符必須是字母或下劃線。 例如:以下標識符是合法的: a,x,x3
8、,BOOK_1,sum5,_x7。 以下標識符是非法的: 3s,s*T,-3x,bowy-1,M.D.John,ab。10/5/201815在使用標識符時還必須注意以下幾點:(1)標準C不限制標識符的長度,但它受各種版本的C語言編 譯系統(tǒng)限制,同時也受到具體機器的限制。Turbo C規(guī)定標識符的長度為32。一般情況下,標識符的長度不要超過8個字符。(2) 在標識符中,大小寫是有區(qū)別的。例如SUM和sum是兩個 不同的標識符。變量名應(yīng)盡量使用小寫字母,以增加程序的可 讀性。(3) 標識符雖然可由程序員隨意定義,但標識符是用于標識某個量的符號。因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀理解,做到“顧
9、名思義”。在C語言中,所有的變量都是先定義后應(yīng)用,使用沒有定義的變量名被認為是“非法”的。10/5/201816C語言的基本詞法關(guān)鍵字定義:關(guān)鍵字是由語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標識符不應(yīng)該與關(guān)鍵字相同。分類:語言的關(guān)鍵字分為以下3類:(1)類型說明符 用于定義和說明變量、函數(shù)或其它數(shù)據(jù)結(jié)構(gòu)的類型。 如int, double, float, long, short, auto,signed,static,struct,unsigned,char,enum,extern,register和union等。10/5/201817(2) 語句定義符用于表示一個語句的功能
10、。如條件語句的語句定義符if else,循環(huán)語句的語句定義符do,while,for等。(3) 預(yù)處理命令字用于表示一個預(yù)處理命令,使用時前面要加“ ”。如include,define,ifdef,endif等。關(guān)鍵字后必須有空格、圓括號、尖括號、雙引號 等分隔符,否則與其它字符一起組成新的標識符。10/5/201818C語言的基本詞法其它運算符語言中含有相當豐富的運算符。運算符與變量,函數(shù)一起組成表達式,表示各種運算功能。運算符由一個或多個字符組成。 分隔符在語言中采用的分隔符有逗號和空格兩種。逗號主要是用在類型說明和函數(shù)參數(shù)表中分隔各個變量??崭穸嘤糜谡Z句各單詞之間作間隔符。 常量C語言中
11、使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號常量、轉(zhuǎn)義字符等多種。10/5/201819語言的字符集(1) 字母 小寫字母az共26個,大寫字母AZ共26個。(2) 數(shù)字09共10個。(3) 空格符、制表符、換行符等統(tǒng)稱為空白符。(4) 標點和特殊字符10/5/201820C語言程序設(shè)計的基本結(jié)構(gòu)a(1)順序結(jié)構(gòu)Bb10/5/201821A(2)選擇結(jié)構(gòu),或稱分支結(jié)構(gòu)此結(jié)構(gòu)中必包含一個判斷框。根據(jù)給定的條件P是否成立而選擇執(zhí)行A框或B框b10/5/201822a不成立成立pAB(3)循環(huán)結(jié)構(gòu),它又稱為重復(fù)結(jié)構(gòu),即反復(fù)執(zhí)行某一部分的操作。又兩類循環(huán)結(jié)構(gòu):a它的功能是判斷當前給定的條件p1
12、成立時,執(zhí)行A 框操作,執(zhí)行完A后,再判斷條件p1是否成立,如 果仍然成立,再執(zhí)行A框, 如此反復(fù)執(zhí)行A框,直到 某一次p1條件不成立為止, 此時不執(zhí)行A框,而從b點脫離循環(huán)結(jié)構(gòu)。b(a)當型(while型)循環(huán)結(jié)構(gòu)10/5/201823Fp1TA(b)直到型(Until型)循環(huán)結(jié)構(gòu)a它的功能是先執(zhí)行A框, 然后判斷給定的p2條件是否成立,如果p2條件不成立,則再執(zhí)行A, 然后再對p2條件作判斷, 如果p2條件仍然不成立, 又執(zhí)行A如此反復(fù)執(zhí)行A,直到給定的p2條件成立為止,此時不再執(zhí)行A,從b點脫離本循環(huán)結(jié)構(gòu)。b10/5/201824 Fp2TA本章課堂練習(xí)(1) 以下說法中正確的是( ).
13、A)B)數(shù)C語言程序總是從第一個函數(shù)開始執(zhí)行在C語言程序中,要調(diào)用的函數(shù)必須在main()函中定義C語言程序總是從main()函數(shù)開始執(zhí)行C)D) C語言程序中的main()函數(shù)必須放在程序的開始部分10/5/201825解答:C解釋:C語言程序總是從main()函數(shù)開始執(zhí)行,而不論其在程序中的位置。當主函數(shù)執(zhí)行完畢時,亦即程序執(zhí)行完畢。除main函數(shù)外,其它函數(shù)都是在執(zhí)行main函數(shù)時被調(diào)用執(zhí)行的。在C語言中,函數(shù)不允許嵌套定義。習(xí)慣上,將主函數(shù)main()放在最前頭,但并不是必須的。10/5/201826(2)以下敘述不正確的是A) 一個C源程序可由一個或多個函數(shù)組成B) 一個C源程序必須
14、包含一個main函數(shù)C) C程序的基本組成單位是函數(shù)D) 在C程序中,注釋說明只能位于一條語句的后面10/5/201827解答:D解釋: 凡是用“/*”和“*/”括起來的文字, 都是注釋。其出現(xiàn)的位置可以任意。10/5/201828(3)下列標識符中,合法的變量名有:A)a.bB)$888C)A1D) 3x5610/5/201829解答:C解釋:變量名只能由字母、數(shù)字和下劃線三種字符所組成,且第一個字符必須為字母或下劃線。C語言的關(guān)鍵字不能用作變量名。另外, C語言對英文字母的大小寫敏感,即同一字母的大小寫,被認為是兩個不同的字符。習(xí)慣上, 變量名和函數(shù)名中的英文字母用小寫,以增加 可讀性。1
15、0/5/2018302.1 算法的概念2.2 算法的設(shè)計與表達2.3 簡單的算法實例2.4 結(jié)構(gòu)化程序設(shè)計方法簡介10/5/201831第二章算法及算法設(shè)計簡介算法的概念算法:是對解決某個問題的方法步驟的描述。程序:從計算機角度來說,程序是用某種計算機能理解并執(zhí)行的計算機語言描述解決問題的方法和步驟。任何一個程序應(yīng)包含的如下兩方面的內(nèi)容:(1) 對數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)(data structure).(2) 對操作的描述。即操作步驟,也就是算法(algorithm)。著名計算機科學(xué)家沃思(Nikiklaus Wirth)提出公式數(shù)據(jù)結(jié)構(gòu)算法程序10/
16、5/201832實際上,一個程序除了以上兩個主要要素之外,還應(yīng)當采用結(jié)構(gòu)化程序設(shè)計方法進行程序設(shè)計,并且用某一種計算機語言表示。因此,可以這樣表示:程序算法數(shù)據(jù)結(jié)構(gòu)程序設(shè)計方法語言工具和環(huán)境在這4個方面中,算法是靈魂,數(shù)據(jù)結(jié)構(gòu)是加工對象,語言是工具,編程需要采用合適的算法。算法是解決“做什么” 和“怎么做”的問題。10/5/201833算法的表示1、用自然語言表示算法采用漢語、英語或其它語言來描述解決問題的方法和步驟。由于自然語言容易出現(xiàn)“歧義性”,且描述問題的文字冗長, 因此一般很少使用自然語言來描述算法。10/5/201834例1:有50個學(xué)生 ,要求將他們之中成績在80分以上者打印出來。
17、用n表示學(xué)號,n1代表第一個學(xué)生學(xué)號,ni代表第i個學(xué)生學(xué)號。用g代表學(xué)生成績, gi 代表第i個學(xué)生成績,算法可表示如下:S1:1iS2:讀入學(xué)號ni和成績giS3:如果gi 80 ,則打印 ni和gi ,否則不打印S4: i+1 iS5: 如果 i 50, 返回S2, 繼續(xù)執(zhí)行; 否則,算法結(jié)束。10/5/2018352、用流程圖表示算法起止框(1)常用的流程圖符號輸入/輸出框判斷框處理框流程線10/5/201836上例用流程圖表示:流程圖(1)流程圖表示算法的優(yōu)點:表示算法直觀形象,比較清楚地顯示出各個框之間的邏輯關(guān)系。簡單,易于掌握。10/5/2018373、用NS圖表示算法1973年
18、美國學(xué)者I.Nassi和B.Shneiderman提出了一種新的流程圖形式。在這種流程圖中,完全去掉了帶箭頭的流程線。全部算法寫在一個矩形框內(nèi), 在該框內(nèi)還可以包含其他的從屬于它的框。這種流程圖又稱NS結(jié)構(gòu)化流程圖。NS流程圖用以下的流程圖符號:(1)順序結(jié)構(gòu):10/5/201838AB(2)選擇結(jié)構(gòu):(3)循環(huán)結(jié)構(gòu):當型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)用以上3種NS流程圖中的基本框,可以組成復(fù)雜的NS流程圖,以表示算法10/5/201839當p1成立AA直到p1成立成立P不成立AB上例用NS圖表示:用NS表示算法如圖10/5/2018401=i輸入ni,gigi80是否輸出ni,gii+1=i直到i5
19、04、用偽碼表示算法偽代碼是用介于自然語言和計算機語言之間的文字和符號來描述算法。它不用圖形符號,因此書寫方便,格式緊湊,也比較好懂,便于向計算機語言算法(即程序)過渡。例有50個學(xué)生,要求將他們之中成績在80分以上者打印出來。用n表示學(xué)生學(xué)號,n1表示第一個學(xué)生學(xué)號,ni表示第i個學(xué)生學(xué)號。用g表示學(xué)生成績,gi表示第i個學(xué)生成績。10/5/201841用偽代碼表示算法如下:BEGIN(算法開始)1=iWhile iiEND(算法結(jié)束)and gi10/5/2018425、用計算機語言表示算法設(shè)計算法的目的是為了實現(xiàn)算法。因此,不僅要考慮如何設(shè)計一個算法,也要考慮如何實現(xiàn)一個算法。我們的任務(wù)
20、是用計算機解題,也就是要用計算機實現(xiàn)算法。計算機是無法識別流程圖和偽代碼的。只有用計算機語言編寫的程序才能被計算機執(zhí)行(當然還要經(jīng)過編譯成目標程序才能被計算機識別和執(zhí)行)。因此,在用流程圖或偽代碼描述出一個算法后,還要將它轉(zhuǎn)換成計算機語言程序。10/5/201843例:有50個學(xué)生,要求將他們之中成績在80分以上者打印出來。用n表示學(xué)生學(xué)號,n1表示第一個學(xué)生學(xué)號,ni表示第i個學(xué)生學(xué)號。用g表示學(xué)生成績,gi表示第i個學(xué)生成績。C語言程序如下:main( )int g50,n50,i; for(i=0;i50;i+) scanf(“%d,%d”,&ni,&gi); for(i=0;i=80)
21、 printf(“%6d,%3dn”,ni,gi);10/5/201844簡單的算法實例例2:對一個大于或等于3的正整數(shù),判斷它是不是一個素數(shù)。方法:將 n (其中n 3) 作為被除數(shù), 將2 到(n-1) 各個整數(shù)輪流作為除數(shù),如果都不能被整除,則n為素數(shù)。10/5/201845算法表示如下:S1:輸入n的值S2:2 i( i 作為除數(shù))S3: n 被 i 除,得余數(shù) rS4: 如果 r等于 0 , 表示 n 能 被 i 整除,則打印 n “不是素數(shù)”,算法結(jié)束;否則執(zhí)行S5S5:i+1 iS6: 如果 i n-1, 返回S3;否則,打印 n “是素數(shù)”,算法結(jié)束。10/5/201846例3
22、:求 1-1/2 + 1/3 1/4 + 1/99 1/100。S1: 1 sign S2: 1 sumS3: 2 denoS4: (-1)*sign signS5: sign*(1/deno) term S6: sum+term sum S7: deno+1 denoS8: 若deno 100 返回S4;否則算法結(jié)束。10/5/201847結(jié)構(gòu)化程序設(shè)計方法簡介a1、三種基本結(jié)構(gòu)回顧(1)順序結(jié)構(gòu)Bb10/5/201848A(2)選擇結(jié)構(gòu),或稱分支結(jié)構(gòu)b10/5/201849a不成立成立pAB(3)循環(huán)結(jié)構(gòu),它又稱為重復(fù)結(jié)構(gòu),即反復(fù)執(zhí)行某一部分的操作。又兩類循環(huán)結(jié)構(gòu):ab(a)當型(whil
23、e型)循環(huán)結(jié)構(gòu)10/5/201850Fp1TA(b)直到型(Until型)循環(huán)結(jié)構(gòu)ab10/5/201851Fp2TA2、結(jié)構(gòu)化程序所謂結(jié)構(gòu)化程序,就是僅僅使用順序、選擇、循環(huán)等三種基本結(jié)構(gòu)所構(gòu)造的程序。3、結(jié)構(gòu)化程序設(shè)計方法結(jié)構(gòu)化程序設(shè)計方法的基本思想是,把一個復(fù)雜問題的求解過程分階段進行。每個階段的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。10/5/201852開始NYg 80i打印ni,giNi50Y結(jié)束10/5/201853i+1 =i讀入ni和gi1 = i課堂練習(xí)1、算法的表示形式主要有哪些?解答:()用自然語言表示()用傳統(tǒng)的流程圖表示()NS流程圖()用偽代碼表示等。10/5/2
24、018542、設(shè)計算法:A、B兩人各有一桶油,現(xiàn)兩人要將各自桶內(nèi)的油互換。解答:必須借助另外一個空桶,并按如下算法進行:(用Si表示第i步操作,A的桶叫A,B的桶叫B,空桶叫M)開始:S0:將A桶中的油倒入M桶中; S1:將B桶中的油倒入A桶中;S2:將M桶中的油倒入B桶中;10/5/2018553、設(shè)計算法寫出求n!的算法解答:S0:給出n的值;S1:S2:S3:S4:S5:1=p;2=i;p*i=p; i+1=i;若i=n,返回S3;否則,結(jié)束10/5/201856第三章 數(shù)據(jù)描述與基本操作3.1 基本數(shù)據(jù)類型3.2 常用的運算符和表達式3.3 表達式及賦值語句3.4 基本輸入輸出操作的實
25、現(xiàn)3.5 順序結(jié)構(gòu)程序設(shè)計實例10/5/201857概述使用高級語言編寫程序,必須在程序中做好兩件事:一是描述數(shù)據(jù),二是描述數(shù)據(jù)的加工方法。前者是通過數(shù)據(jù)定義語句實現(xiàn)的,后者是通過若干執(zhí)行語句,包括用各種運算符構(gòu)成的表達式來實現(xiàn)的。本單元主要介紹C語言的基本數(shù)據(jù)類型,為后續(xù)單元的學(xué)習(xí)奠定一個基礎(chǔ)。關(guān)于復(fù)雜的數(shù)據(jù)類型(如數(shù)組、指針、結(jié)構(gòu)型、共用型等)將在以后單元中介紹。10/5/2018583.1 C語言的數(shù)據(jù)類型 C語言具有十分豐富的數(shù)據(jù)類型。所謂數(shù)據(jù)類型是指數(shù)據(jù)的內(nèi)在表現(xiàn)形式。具體的數(shù)據(jù)類型有以下若干種:1. 基本數(shù)據(jù)類型:整型、實型和字符型。2. 構(gòu)造類型: 由若干個相關(guān)的基本數(shù)據(jù)類型數(shù)據(jù)
26、組合在一起形成的一種復(fù)雜的數(shù)據(jù)類型,如數(shù)組型、結(jié)構(gòu)型和共用型。3. 指針型:一種簡單的數(shù)據(jù)類型,它是用來表示內(nèi)存地址的。指針類型的數(shù)據(jù)可以表示基本類型數(shù)據(jù)的地址,它可以表示結(jié)構(gòu)類型數(shù)據(jù)的首地址和其中某個具體數(shù)據(jù)的地址。10/5/2018594. 枚舉型:某數(shù)據(jù)在程序運行中,只取固定的幾個值。我們可以把這幾個值列出來,以后這個數(shù)據(jù)只能取這幾個值中的某一個。5. 空類型:沒有任何具體值的數(shù)據(jù)類型。10/5/201860C語言中的數(shù)據(jù)類型如下圖所示: 整型基本類型字符型實型(浮點型)單精度型雙精度型枚舉類型數(shù)組類型結(jié)構(gòu)體類型數(shù)據(jù)類型構(gòu)造類型共用體類型指針類型空類型10/5/201861常量和變量常量
27、1.常量的概念在程序運行過程中,其值不能被改變的量稱為常量。2. 常量的分類(1) 整型常量(2) 實型常量(3) 字符常量(4) 字符串常量(5) 符號常量常量的類型,可通過書寫形式來判別。10/5/201862變量1. 變量的概念在程序運行過程中,其值可以被改變的量稱為變量。2. 變量的兩個要素(1) 變量名。每個變量都必須有一個名字變量名, 變量命名遵循標識符命名規(guī)則。(2) 變量值。在程序運行過程中,變量值存儲在內(nèi)存中。在程序中,通過變量名來引用變量的值。10/5/201863變量有以下幾個特征: 變量名、變量值、變量的數(shù)據(jù)類型、變量的地址、 變量的存儲類別、變量的作用域及變量的生存期
28、等。 變量必須先定義后使用。定義變量格式如下:;數(shù)據(jù)類型關(guān)鍵字如intx,y,z; 變量的初始化:變量賦初值的過程就是變量初始化過程。10/5/201864整型數(shù)據(jù)整型常量:整型常量就是整常數(shù),包括正整數(shù)和負整數(shù)及 0。其書寫形式如下:(1)(2)十進制整數(shù)。如 123,456,0。八進制整數(shù)。以0開頭的是八進制數(shù)。如0123表示八進制數(shù)123,即(123)8 。十六進制整數(shù)。以0x開頭的數(shù)是十六進制數(shù)。如0x123,代表十六進制數(shù),(3)(123)16116216316256323291。10/5/201865注意: 整型常量在一般微型機中占用2個字節(jié),不管是十進制、八進制或十六進制整數(shù),它
29、們的數(shù)值范圍都是十進制的3276832767。 C語言還提供一種“長整型常量”。它們的數(shù)值范圍是十進制的21474836482147483647,在計算機中占用四個字節(jié),它們的書寫方法是在數(shù)據(jù)的末尾加一個大寫字母“L”或小寫字母“l(fā)”,如0L,038L,0x15L。10/5/201866整型變量1.分類根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又分為類:(1) 基本整型(類型關(guān)鍵字為int)。(2) 短整型(類型關(guān)鍵字為shortint)。(3)長整型(類型關(guān)鍵字為longint)。(4)無符號整型。無符號型又分為無符號基本整型(unsignedint)、無符號短整型(unsigned short)和
30、無符號長整型(unsignedlong)三種,只能用來存儲無符號整數(shù)。10/5/2018672.占用內(nèi)存字節(jié)數(shù)與值域上述各類型整型變量占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。在16位操作系統(tǒng)中,一般用字節(jié)表示一個int型變量,且long 型(字節(jié))int型(字節(jié))short型(字節(jié))。10/5/201868實型數(shù)據(jù)實型常量.表示形式實型常量即實數(shù),在語言中又稱浮點數(shù),其值有兩種表達形式:(1)一般形式的實數(shù),它是由整數(shù)、小數(shù)點、小數(shù)三部分組成。 其中整數(shù)部分或小數(shù)部分可以省略。數(shù)的正負用前面的“”(可以省略)號或“”號來區(qū)分。例如,12.345,1.2345,47.0,.234,47.等都是實型常量。1
31、0/5/201869(2)指數(shù)形式的實數(shù),它是由尾數(shù)、小寫字母e或大寫字母E、指數(shù)三部分組成,尾數(shù)部分可以是十進制整型常量或一般形式的實數(shù),指數(shù)部分是十進制的短整型常量(可以帶E負號)例如, 12.3e2,1.2e-3,47.0e2,.234e-3 等都是實型常量。C語言規(guī)定,字母e(或者E)之前必須要有數(shù)字,且e(或者E)后面的指數(shù)必須為整數(shù)。如:e3,5e3.5,.e3都是不合法的指數(shù)形式。10/5/201870注意:實型常量在一般的微機中是占用4個字節(jié)的,不管是一般形式還是指數(shù)形式,它們的數(shù)值范圍都是10381038 有效數(shù)字7位。例如,1.23456789和1.234567是相同的,因
32、為實型常量的有效數(shù)字是7位,所以1.23456789中的后兩位是無效的。10/5/201871語言的實型變量,分為兩種:(1)單精度型。類型關(guān)鍵字為float,一般占字節(jié)(位)、提供位有效數(shù)字。(2)雙精度型。類型關(guān)鍵字為double,一般占個字節(jié)、提供1516位有效數(shù)字。10/5/201872實型變量字符型數(shù)據(jù) 字符常量1. 字符常量是ASCII碼字符集里的一個字符,包括字母(大、小寫有區(qū)別)、數(shù)字和標點符號以及特殊字符等, 均為半角字符。2. 字符常量表示形式:A、把單個字符用一對單引號括起來表示字符常量。如a,d,w,?等都是字符常量。B、用該字符的ASCII碼值表示字符常量。如65表示
33、AC、轉(zhuǎn)義字符:反斜杠開頭后跟規(guī)定的單個字符或數(shù)字,并用一對單引號括起來表示字符常量。如下:10/5/20187310/5/2018字符形式含義ASCn換行,將當前位置移到下一行開頭10t水平制表(跳到下一個tab位置)9b退格,將當前位置移到前一列8r回車,將當前位置移到本行開頭13f換頁, 將當前位置移到下頁開頭12反斜杠字符“”92單引號(撇號)字符39“雙引號字符34ddd1到3位8進制數(shù)所代表的字符xhh1到2位16進制數(shù)所代表的字符74例1:字符與整數(shù)的轉(zhuǎn)化#include stdio.hvoid main() int i; char n; n=97; i=b; printf(n=
34、%cn,n); printf(i=%dn,i); printf(i=%cn,i);程序的輸出為: n=a i=98 i=b10/5/201875例2 字符參與整數(shù)運算#include stdio.h void main() char n; n=a; n=n-65; printf(n=%dn,n);程序的輸出結(jié)果為: n=3210/5/201876例3 字母的大小寫轉(zhuǎn)換#include stdio.hvoid main() char n,i; n=a; i=B; n=n-32; i=i+32; printf(n=%cn,n); printf(i=%cn,i); 10/5/2018程序的輸出為n=
35、A i=b77二 字符串常量字符串就是用兩個雙引號(“)號后括住的若干個字符, 例如,“abc”,“123 456”,“aBbB”都是字符串。轉(zhuǎn)義符可以出現(xiàn)在字符串中,例如,“ABC”,“101102x43x44”等都是字符串,分別表示“ABCD”、“ABCD”兩個字符串。10/5/201878一個字符串中所有的字符的個數(shù)稱為該字符串的長度,其中每個轉(zhuǎn)義字符只當做一個字符。例如,“ABC”的長度為5。C語言規(guī)定:每個字符串在內(nèi)存中占用的字符數(shù)等于字符串的長度1。其中最后一個字符存放的字符稱為“空字符” 其值為0,書寫時常用轉(zhuǎn)義字符“0”來表示。在C語言中稱為字符串結(jié)束標志。注意!a與“a”的區(qū)
36、別。10/5/201879關(guān)于變量的補充內(nèi)容1. 變量: 變量是指在程序運行過程中其值可以發(fā)生變化的量。2. 變量的取名規(guī)則為:以字母、下劃線“_”開頭,后跟若干個字母、下劃線、數(shù)字。一般約定,用戶使用的變量名采用以字母開頭,C語言內(nèi)部使用的變量名以下劃線開頭。例如, abc,a_1,age_1等都是合法的變量名,而3a,age則是非 法的變量名。當程序運行時,每個變量都要占用若干個連續(xù)的字節(jié),所占用的字節(jié)數(shù)由變量的數(shù)據(jù)類型確定。其中第1個字節(jié)的地址稱為變量的地址。C語言規(guī)定,程序中變量的地址是用“&變量名”來表示的。10/5/2018803.變量的數(shù)據(jù)類型及其定義(1)變量可以是任何一種數(shù)據(jù)
37、類型,具有某種數(shù)據(jù)類型的變量就叫做該類型變量。每個變量在使用前必須定義,說明其數(shù)據(jù)類型。定義變量數(shù)據(jù)類型的語句格式如下:(2)(3)變量1,變量2.;數(shù)據(jù)類型符10/5/20188110/5/201882數(shù)據(jù)類型數(shù)據(jù)類型符占用字節(jié)數(shù)數(shù)據(jù)范圍整型int2(或4)同短整型(或長整型)短整型short23276832767長整型long4-2147483648 2147483647無符號整型unsigned int2(或4)同無符號短整型(或長整型)無符號短整型unsigned short2065535無符號長整型unsigned long404294967295單精度實型float410 3810
38、38雙精度實型double810 30810 308字符型char1128127基本數(shù)據(jù)類型符及含義如下表所示:5.變量的初始化(1) 在定義變量的同時給變量賦予初始值就稱為變量的初始化。(2) 變量賦初值的語句格式如下:變量名1初值1,變量名2初值2,存儲類型符數(shù)據(jù)類型符10/5/2018833.2運算符1 概述2 算術(shù)運算符3 賦值運算符4 逗號運算符5條件運算符6長度運算符7位運算符8 關(guān)系運算符-下章介紹9邏輯運算符 下章介紹10/5/2018一.概述。例如,數(shù)值運算中經(jīng)常用到的、*、/等。運算符必須有運算對象,運算對象是一個的,則稱為單目運算;運算對象是兩個的,則稱為雙目運算;運算對
39、象是三個的,則稱為三目運算。10/5/2018用來表示各種運算的符號稱為運算符每個運算符都代表對運算對象的某種運算,都有自己特定的運算規(guī)則。每個運算符運算的對象都規(guī)定了數(shù)據(jù)類型, 同時運算結(jié)果也有確定的數(shù)據(jù)類型。當表達式中出現(xiàn)多個運算符,計算表達式值時,就有誰 先算,誰后算的問題,我們把這個問題稱為運算符的優(yōu)先級。計算表達式值時,優(yōu)先級高的運算要先進行運算。同級別的運算符有左結(jié)合和右結(jié)合之分。10/5/2018基本算術(shù)運算符(、*、/、)增1減1運算符(、)C的運算符十分豐富, 有13類,30多種,其分類如下:算術(shù)運算符關(guān)系運算符(、=、!)邏輯運算符(!、&、|)基本賦值運算符()賦值運算符
40、算術(shù)自反賦值運算符基本運算符C語言運算符(、*、/、)逗號運算符(,)條件運算符(?:)數(shù)據(jù)長度運算符(sizeof).位邏輯運算符(、&、|、)位移運算符(、,)指針運算符(&,*)10/5/2018注意!少數(shù)運算符號有雙重意義,主要有以下幾種:(1) “”號,在算術(shù)運算中即表示單目的取正運算,又可表示雙目的加法運算。(2) “”號,在算術(shù)運算中即表示單目的取負運算,又可表示雙目的減法運算(3) “*”號,在算術(shù)運算中即表示雙目的乘法運算, 在指針運算中表示指針變量指向的變量。(4) “&”號,在位邏輯運算中表示雙目“與”運算,在指針運算中表示取地址的運算。10/5/2018二.算術(shù)運算符1
41、.基本算術(shù)運算符基本算術(shù)運算符的運算對象、運算規(guī)則與結(jié)果、結(jié)合性如表所示 :10/5/2018對象數(shù)運算符名稱運算對象運算結(jié)果結(jié)合性單 目正負整型或?qū)嵭驼突驅(qū)嵭妥杂蚁蜃箅p 目*/加減乘除自左向右整除取余整型整數(shù)算術(shù)運算符的優(yōu)先級規(guī)定如下: 單目基本算術(shù)運算符優(yōu)先于雙目基本算術(shù)運算符 *、/、優(yōu)先于 、 同級單目基本算術(shù)運算符的結(jié)合性是自右向左 同級雙目基本算術(shù)運算符的結(jié)合性是自左向右10/5/2018(nm)*f)*d,結(jié)果是25.0例1.基本算術(shù)運算符的使用設(shè)變量定義如下:int n=10, m=3;float f=5.0,g=10.0; double d=5.0,e=10.0; 則 n的
42、結(jié)果是10nm,nm,n*m,n/m,n%m的結(jié)果分別為13、7、30、3、1de,de,d*e,d/e的結(jié)果分別為15.0,5.0,50.0,0.5nmf*g/d的運算順序相當于(nm(f*g)/d),結(jié)果是3.0nm*f*d的運算順序相當于 l如果參加運算的兩個數(shù)中有一個為浮點型,則結(jié)果是double型10/5/20182 增1減1運算符(1)增1減1運算符的運算對象、運算規(guī)則與結(jié)果、結(jié)合性如下表所示:10/5/2018對象數(shù)名稱運算符運算規(guī)則運算對象運算結(jié)果結(jié)合性單目增1(前綴)先加1 后使用整型、字符型、指針型變量或 數(shù) 組 元素同運算對象的類型自右向左增1(后綴)先使用后加1減1(前
43、綴)先減1 后使用減1(后綴)先使用后減1(2)增1減1運算符的優(yōu)先級:增1減1運算符優(yōu)先于雙目基本算術(shù)運算符增1減1運算符和單目運算符、同級別,結(jié)合性 是自右向左注意:例1:ab 應(yīng)理解為(a)bab應(yīng)理解為 (a)b10/5/2018若出現(xiàn)難以區(qū)分的若干個或組成運算符串時,C語言規(guī)定,自左向右取盡可能多的符號組成運算符。例2:增1減1運算符的使用設(shè)變量定義如下:char c1b,c2B;(c1,c2可看成整型,其值分別為98,66)則: c1 的值是99,運算后c1的值是c c1 的值是98,運算后c1的值是a c1c2的值是164,運算后c1的值是c,c2的值是B c1c2的值是32,運
44、算后c1的值是a,c2的值是B10/5/2018三.賦值運算符1.賦值運算符 賦值運算符是雙目運算符,賦值運算符的左邊必須是變量, 右邊是表達式。(1)賦值運算符的運算對象及有關(guān)規(guī)則如下表:10/5/2018對象數(shù)名稱運算符運算規(guī)則運算結(jié)果結(jié)合性雙目賦值將表達式的值賦予變量表達式的類型自右向左(2)賦值運算符的優(yōu)先級算術(shù)運算符優(yōu)先于關(guān)系運算符優(yōu)先于雙目邏輯運算符優(yōu)先于賦值運算符賦值運算符的結(jié)合性是自右向左10/5/2018(3)賦值運算符的使用設(shè)變量定義如下: charc1a,c2;intn165,n2,n3,n4,n5,n6; floatf13.0,f2;則: c2n1運算后,c2的值是65
45、,n1的值不變。 n2!c1運算后,n2的值是0,c1的值不變。 f2f10.001運算后,f2的值是3.001,f1的值不變。 n3c1n1|c1!n1運算后,n3的值是1,c1和n1的值不變。注:運算順序相當于 n3(c1n1)|(c1!n1) n4n5n6(n1)運算后,n4,n5,n6的值均是64,n1的值是64。10/5/201897注意:上述表達式的值就等于賦值表達式中的最左邊的變量值。2 .算術(shù)自反賦值運算符(1)運算規(guī)則10/5/201898對象數(shù)名稱運算符運算規(guī)則運算對象運算結(jié)果結(jié)合性雙目加賦值a+=b相當于a=a+(b)數(shù)值型數(shù)值型自右向左減賦值a=b相當于a=a(b)乘賦值*a*=b相當于a=a*(b)除賦值/ =a/=b相當于a=a/(b)模賦值%=a%=b相當于a=a%(b)整型整型
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年福建泉州仰恩大學(xué)招聘6名工作人員筆試備考題庫及答案解析
- 2026年福建莆田市城廂區(qū)國信產(chǎn)業(yè)投資有限公司工作人員招聘5人考試參考試題及答案解析
- 2026浙江金華市武義浙柳碳中和研究所招聘1人考試參考試題及答案解析
- 山東省煙草專賣局(公司)2026年高校畢業(yè)生招聘197人考試參考題庫及答案解析
- 2026年湖南張家界桑植縣第一季度縣直事業(yè)單位選調(diào)9人考試備考題庫及答案解析
- 2026廣西南寧市智興路幼兒園招聘考試參考試題及答案解析
- 2026云南昭通永善縣統(tǒng)計局招聘公益性崗位2名考試參考題庫及答案解析
- 2026年1月廣東廣州市天河區(qū)薈雅苑幼兒園編外教輔人員招聘1人筆試參考題庫及答案解析
- 2025廣東佛山禪城區(qū)南莊鎮(zhèn)吉利中學(xué)招聘數(shù)學(xué)地理臨聘教師考試參考題庫及答案解析
- 小夾板固定的創(chuàng)新與應(yīng)用
- 2023心力衰竭器械治療進展
- 2025年大學(xué)《應(yīng)急裝備技術(shù)與工程-應(yīng)急裝備概論》考試備考試題及答案解析
- 2025年國家開放大學(xué)(電大)《護理倫理學(xué)》期末考試復(fù)習(xí)題庫及答案解析
- 煤礦絞車證考試題庫及答案
- 中國水性丙烯酸壓敏膠項目商業(yè)計劃書
- 液流電池制造項目可行性研究報告
- 組織文化與員工滿意度
- GB/T 46075.1-2025電子束焊機驗收檢驗第1部分:原則與驗收條件
- 中潤盛和(孝義)新能源科技 孝義市杜村鄉(xiāng)分散式微風發(fā)電項目可行性研究報告
- DB21-T 1844-2022 保溫裝飾板外墻外保溫工程技術(shù)規(guī)程
- 艾梅乙安全助產(chǎn)培訓(xùn)課件
評論
0/150
提交評論