《C語言程序設(shè)計》第3章 最簡單的C程序設(shè)計_第1頁
《C語言程序設(shè)計》第3章 最簡單的C程序設(shè)計_第2頁
《C語言程序設(shè)計》第3章 最簡單的C程序設(shè)計_第3頁
《C語言程序設(shè)計》第3章 最簡單的C程序設(shè)計_第4頁
《C語言程序設(shè)計》第3章 最簡單的C程序設(shè)計_第5頁
已閱讀5頁,還剩87頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第3章 最簡單的C程序設(shè)計順序程序設(shè)計主要內(nèi)容3.1 順序程序設(shè)計舉例3.2 數(shù)據(jù)的表現(xiàn)形式及其運算3.3 C語句3.4 數(shù)據(jù)的輸入輸出練習3本章要點: 數(shù)據(jù)的描述規(guī)則數(shù)據(jù)的操作規(guī)則3.1 順序程序設(shè)計舉例#include int main ( ) return 0; 例3.1 有人用溫度計測量出用華氏法表示的溫度(如 F,今要求把它轉(zhuǎn)換為以攝氏法表示的溫度(如 C) 。算法:順序結(jié)構(gòu)輸入f的值輸出c的值N-S圖運行結(jié)果:float f,c; /定義f和c為單精度浮點型變量f=64.0; /指定f的值c=(5.0/9)*(f-32); /計算c的值printf(f=%fnc=%fn,f,c);

2、 /輸出f和c的值 變量和函數(shù)要先定義后使用例3.2 計算存款利息。有1000元,想存一年。有三種方法可選: (1)活期,年利率為r1 (2)一年期定期,年利率為r2 (3)存兩次半年定期,年利率為r3 請分別計算出一年后按三種方法所得到的本息和解題思路:確定計算本息和的公式。從數(shù)學知識可知:若存款額為p0,則:活期存款一年后本息和為: p1=p0(1+r1)一年期定期存款,一年后本息和為: p2=p0(1+r2)兩次半年定期存款,一年后本息和為: 算法:輸入p0,r1,r2,r3的值計算p1=p0(1+r1)計算p2=p0(1+r2)計算p3=p0(1+ )(1+ )輸出p1,p2,p3#i

3、nclude int main ( ) float p0=1000, r1=0.0036,r2=0.0225,r3=0.0198, p1, p2, p3; /定義變量同時賦予初值 p1 = p0 * (1 + r1); p2 = p0 * (1 + r2); p3 = p0 * (1 + r3/2) * (1 + r3/2); printf(”%fn%fn%fn”,p1, p2, p3); return 0; 編程:運行結(jié)果:定義變量同時賦予初值警告錯! 在初始化時把一個雙精度 常量賦給一個float型變量P82 習題3.2 注意: 變量的輸入輸出格式 與變量類型要一致#include #in

4、clude /一定要加上int main ( )/以”(5)存活期存款為例” float p0=1000, r0=0.0072,p5; /定義變量同時賦予初值 p5 = p0 * pow(1 + r0/4), 4*5); /注意pow()函數(shù)的用法 printf(%fn,p5); return 0; 函數(shù)的運用幾個容易混淆的概念單精度和雙精度(P50)有效位數(shù)%f、%lf3.2 數(shù)據(jù)的表現(xiàn)形式及其運算3.2.1 常量和變量3.2.2 數(shù)據(jù)類型3.2.3 整型數(shù)據(jù)3.2.4 字符型數(shù)據(jù)3.2.5 浮點型數(shù)據(jù)3.2.6 怎樣確定常量的類型3.2.7 運算符和表達式1. 常量在程序運行過程中,其值不

5、能被改變的量常量區(qū)分為不同的類型通常分為整型常量、實型(浮點型)常量、字符常量、字符串常量和符號常量整型: 100,125,-100,0實型:十進制小數(shù)形式:如0.34 -56.79 0.0 指數(shù)形式:如12.34e3 (代表12.34 103)字符: 普通字符:a, b,2 轉(zhuǎn)義字符: n字符串: “a”, “ab”,“1232”符號常量:#define PI 3.14163.2.1 常量和變量,”為界限符字符常量ASCII字符集(美國標準信息交換代碼) 字符常量在計算機存儲單元中存儲的是其ASCII由一對單撇號括起的一個字符組成,如a,A,9轉(zhuǎn)義字符(有些以“”開頭的特殊字符)參見P377

6、n:回車換行 : 單撇號r 回車 反斜杠ddd ddd表示1到3位八進制數(shù)字xhh hh表示1到2位十六進制數(shù)字每個字符都有對應(yīng)的整數(shù)值即ASCII值可以進行整數(shù)運算,比較大小A+3 a-32符號常量用#define 指令,用一個符號名稱代表一個常量習慣上,符號常量名用大寫字母,變量用小寫字母符號常量與變量的區(qū)別符號常量不占內(nèi)存其值在其作用域內(nèi)不能改變,也不能再被賦值使用符號常量的好處含義清楚 命名時考慮“見名知意”,如:PRICE在需要改變一個常量時能做到“一改全改”#define PRICE 30 /注意:后面無分號#include int main ( ) int num, total;

7、 num=10; total=num * PRICE; printf(total=%dn,total); return 0; total=300例A3.1 符號常量的使用運行結(jié)果:說明: 程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進行運算說明:如再用賦值語句給PRICE賦值是錯的 PRICE=40; /* 錯誤,不能給符號常量賦值2變量 在程序運行期間,變量的值是可以改變的變量必須先定義,后使用定義變量時指定該變量的名字和類型變量名和變量值是兩個不同的概念變量名實際上是以一個名字代表的一個存儲地址從變量中取值,實際上是通過

8、變量名找到相應(yīng)的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)變量命名的規(guī)定語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線建議變量名的長度最好不要超過8個字符要求對所有用到的變量作強制定義,也就是“先定義,后使用” 凡未被事先定義的,系統(tǒng)不把它認作變量名每個變量被指定為一個確定類型,在編譯時就能為其分配相應(yīng)的存儲單元指定每一變量屬于某一個類型,便于在編譯時據(jù)此檢查在程序中要求對該變量進行的運算是否合法例:sum,_total, month, Student_name, lotus_1_2_3,BASIC, li_ling M.D.John, ¥123,3D64,ab ?變

9、量的值5m變量名(符號地址)變量值存儲單元 #include int m;scanf(“%d”,&m); 指定的格式,%d:十進制的整數(shù)&:取地址運算符int a=5;printf(“%d ,%d”, a, &a); 思考:輸出結(jié)果?變量的值有2種變量值:變量本身的值變量的地址值:變量被存放在內(nèi)存的地址值變量代表一個有名字的 、具有特定屬性的一個存儲單元3.常變量:const int a=3;4. 標識符用來標識程序中的各種對象的有效字符序列如變量、常量、函數(shù)、語句標號、類型定義等規(guī)則由字母、數(shù)字和下劃線組成數(shù)字不能作為第一個字符注意標識符中大小寫有區(qū)別 例如,下面4個標識符是不同的: MN,

10、mn,Mn,mN起名盡量“見名知意”,即選有含意的英文單詞 (或其縮寫)作標識符 如:year,student,name,age不得使用關(guān)鍵字或系統(tǒng)使用過的函數(shù)名等作標識符 如:int,include,if3.2.2 數(shù)據(jù)類型數(shù)據(jù)結(jié)構(gòu)指的是數(shù)據(jù)的組織形式處理同一類問題,若數(shù)據(jù)結(jié)構(gòu)不同,算法也會不同要綜合考慮,選擇最佳的數(shù)據(jù)結(jié)構(gòu)和算法C語言提供以下數(shù)據(jù)類型,由這些數(shù)據(jù)類型可以構(gòu)造出不同的數(shù)據(jù)結(jié)構(gòu)所謂類型,就是對數(shù)據(jù)分配存儲單元的安排,包括存儲單元的長度(占多少字節(jié))以及數(shù)據(jù)的存儲形式不同的類型分配不同的長度和存儲形式數(shù)據(jù)類型空類型 (void)基本類型派生類型整型 int實型(浮點型)單精度 f

11、loat雙精度 double復數(shù)枚舉類型 (enum)基本整型(int型)短整型(short int)長整型(long int)* 雙長整型(long long int)字符型 (char)* 布爾型(bool)算術(shù)類型純量類型指針類型 *數(shù)組類型 結(jié)構(gòu)體類型 struct共用體類型 union函數(shù)類型1. 整型數(shù)據(jù)的分類最基本的整型類型(P45 表3.2)基本整型(int型):占2個或4個字節(jié)短整型(short int):VC+6.0中占2個字節(jié)長整型(long int):VC+6.0中占4個字節(jié)雙長整型(long long int):C99新增的3.2.3 整型數(shù)據(jù) 注意:一般以一個機器字

12、(word)存放一個int型數(shù)據(jù)long型數(shù)據(jù)長度不短于int型,short型不長于int型通常的做法:把long定為32位,把short定為16位,int型可以是16位,也可是32位信息存儲單位計算機內(nèi)部信息的單位常采用位、字節(jié)、字幾種量綱位(bit)度量數(shù)據(jù)的最小單位,表示1位二進制信息字節(jié)(byte)1個字節(jié)由八位二進制數(shù)字組成,字節(jié)是信息存儲中最常用的基本單位存儲器的容量是以字節(jié)為基本單位的,存儲容量單位: 1字節(jié) 1B=8bit K 字節(jié) 1KB =210B= 1024 B M(兆)字節(jié)1MB =210KB = 1024 KB G(吉)字節(jié)1GB =210MB = 1024 MB T

13、(太)字節(jié)1TB =210GB = 1024 GB存儲器的每一個存儲單元對應(yīng)一個唯一的地址 (按字節(jié)尋址), CPU按地址來存取存儲器中的數(shù)據(jù)2. 整型變量的符號屬性分類有符號基本整型有符號短整型有符號長整型有符號雙長整型無符號基本整型無符號短整型無符號長整型無符號雙長整型(signed)int (signed)short (int )(signed) long (int)(signed) long long(int)unsigned intunsigned short (int)unsigned long (int)unsigned long long (int) 注意:括號表示其中的內(nèi)容是

14、可選的共八種修飾符 例如: int a; unsigned int b;a的數(shù)值范圍:-3276832767b的數(shù)值范圍:0655350為正,1為負字符是按其代碼(整數(shù))形式存儲的C99把字符型數(shù)據(jù)作為整數(shù)類型的一種字符型數(shù)據(jù)在使用上有自己的特點3.2.4 字符型數(shù)據(jù)1.字符與字符代碼大多數(shù)系統(tǒng)采用ASCII字符集字母:A Z,a z數(shù)字:09專門符號:29個:! ” # & ( ) *等空格符:空格、水平制表符、換行等不能顯示的字符:空(null)字符(以0表示)、警告(以a表示)、退格(以b表示)、回車(以r表示)等字符1和整數(shù)1是不同的概念字符1只是代表一個形狀為1的符號,在需要時按原樣

15、輸出,在內(nèi)存中以ASCII碼形式存儲,占1個字節(jié)整數(shù)1是以整數(shù)存儲方式(二進制補碼方式)存儲的,占2個或4個字節(jié)0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 12.字符變量字符型變量用來存放字符常量,注意只能放一個字符字符變量的定義形式如下:char c1,c2;在本函數(shù)中可以用下面語句對c1,c2賦值: c1a;c2 b ;一個字符變量在內(nèi)存中占一個字節(jié)字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法一個字符常量存放到一個字符變量中,實際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通

16、用例如: 字符“a”、“b”在內(nèi)存中的存放形式注意: 一個字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。#include int main() char c1,c2; c1=97; c2=98; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); return 0; 97 98例A3.1 向字符變量賦以整數(shù)運行結(jié)果:說明:在第和第4行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當于以下兩個賦值語句:c1;c2; 因為a和b的ASCII碼為97和98 #include int main() char c1,c2; c1=a; c2=b; c

17、1=c1-32; c2=c2-32; printf(“c c”,c1,c2); return 0; 例A3.2 大小寫字母的轉(zhuǎn)換 運行結(jié)果:說明:程序的作用是將兩個小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從代碼表中可以看到每一個小寫字母比它相應(yīng)的大寫字母的ASCII碼大32。語言允許字符數(shù)據(jù)與整數(shù)直接進行算術(shù)運算。 浮點型常量的表示方法浮點型常量 即實型常量,可用十進制小數(shù)或指數(shù)形式表示十進制小數(shù)形式由數(shù)字和小數(shù)點組成格式 .小數(shù)點不可省略,和不可同時省略 如:45.67,0.893,.409,67.輸出格式符: %f, %lf指數(shù)形式(科學表示法)格式 .ee左邊部分可以是.或 或.e右邊部分可

18、以是正整數(shù)或負整數(shù) 如:12e4,1.2e12,0.9e-3,.3e4輸出格式符:%e3.2.5 浮點型數(shù)據(jù)規(guī)范化的指數(shù)形式在字母e(或E)之前的小數(shù)部分中,小數(shù)點左邊應(yīng)有一位(且只能有一位)非零的數(shù)字例如: 123.456可以表示為: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e 其中的1.23456e3稱為“規(guī)范化的指數(shù)形式”。一個浮點數(shù)在用指數(shù)形式輸出時,是按規(guī)范化的指數(shù)形式輸出1e3、-123e-6、 .e3、 e 、 -.1e-3e3、 1.8e-3、 2.1e3.5、 3.2.6 怎樣確定

19、常量的類型字符常量由單撇號括起來的單個字符或轉(zhuǎn)義字符整型常量不帶小數(shù)點的數(shù)值系統(tǒng)根據(jù)數(shù)值的大小確定int型還是long型等浮點型常量凡以小數(shù)形式或指數(shù)形式出現(xiàn)的實數(shù)C編譯系統(tǒng)把浮點型常量都按雙精度處理分配8個字節(jié) 3.2.7 運算符和表達式運算符簡介的運算符有以下幾類:(1)算術(shù)運算符 (+ - * / %)(2)關(guān)系運算符 ( ?。?3)邏輯運算符 (!|)(4)位運算符 ( |)(5)賦值運算符 (及其擴展賦值運算符)(6)條件運算符 (?:)(7)逗號運算符 (,)(8)指針運算符 (*和)(9)求字節(jié)數(shù)運算符()(10)強制類型轉(zhuǎn)換運算符( (類型))(11)成員運算符(-)(12)下

20、標運算符()(13)其他 (如函數(shù)調(diào)用運算符()按照操作數(shù)個數(shù)單目運算雙目運算三目運算運算先后次序 從低到高15個優(yōu)先級最高為1級1.基本的算術(shù)運算符:+ :正號運算符(單目運算符) 如: - :負號運算符(單目運算符) 如:* :乘法運算符/ :除法運算符% :求余運算符(或稱模運算符)+ :加法運算符 如: - :減法運算符 如:單目運算符:- (優(yōu)先級最高),求負數(shù)雙目運算: + - * / %(取余)整數(shù)的算術(shù)運算整數(shù)相除,結(jié)果為整數(shù)如果除數(shù)或被除數(shù)中有一個為負值,則舍入的方向是不固定的。多數(shù)機器采取“向零取整”的方法 19/5=-3 19/-4=-4+ -可作字符運算% 要求兩側(cè)均為

21、整型數(shù)據(jù),僅可作整數(shù)運算 19%5 12%4 3%9 7/3 5%-3 -5%3 d-2 f-d 求余數(shù)的公式:余數(shù)=被除數(shù)-商數(shù)(整數(shù))*除數(shù)舉例 注意: a*b/c 和 a/c*b 的運算結(jié)果會不一樣 例: a=5;b=1.0;c=2; a*b/c=2.5; a/c*b=2.0;3+4/5 35.5+6/4 6.512+5/4.0 13.255%7+3*1.0 8.0 20-5*9%11 192+3*(6+7/3%9) 266.0/(3/2) 6.02.增一(自增)、減一(自減)運算符 + -作用:使變量值加1或減1,同時表達式具有一確定值種類:前置 +i, -i (先執(zhí)行i+1或i-1,

22、再使用i值)后置 i+,i- (先使用i值,再執(zhí)行i+1或i-1)說明只能用于整型變量、浮點型變量和字符變量不能用于常量或表達式 5+;(a+b)+; int a=3; +a; /對變量a增1的前綴運算,運算后表達式的值為4,a的值為4-a; /對變量a減1的前綴運算,運算后表達式的值為2,a的值為2a +; /對變量a增1的后綴運算,運算后表達式的值為3,a的值為4a-; /對變量a減1的后綴運算,運算后表達式的值為3,a的值為2 int k,j,m,n;k=1;j=1;m=(k+)+(j+);n=(+k)+(+j);printf(“%d,%d,%d,%d”,k,j,m,n);char c=

23、g,d;int m=2;d=(m+)+(-c); printf(“%d, %c, %cn”,m,c,d);運行結(jié)果:3 3 2 6運行結(jié)果:3 f h例A3.3 分析下列程序的輸出結(jié)果(A3.3.1.c ) (A3.3.2.c)3.算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性(P378附錄D)用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合語法規(guī)則的式子,稱為算術(shù)表達式運算對象包括常量、變量、函數(shù)等 例如: *.5a 是一個合法的表達式在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減規(guī)定了各種運算符的結(jié)合方向(結(jié)合性) 算術(shù)運算符的結(jié)合方向為“自左至右”,即先左后右記憶: 去

24、掉兩頭、一、二、三賦值 雙目運算符:算術(shù)、關(guān)系、邏輯 算術(shù) 移位 關(guān)系 邏輯位 邏輯 算術(shù)運算符高于關(guān)系運算符,關(guān)系運算符高于邏輯運算符大多數(shù)運算符的運算順序是從左到右(左結(jié)合)單目運算符、條件運算符和賦值運算符是右結(jié)合。編寫程序,最好使用括號明確運算順序( c (a*b) ) & si有關(guān)表達式使用中的問題說明ANSI C并沒有具體規(guī)定表達式中的子表達式的求值順序,允許各編譯系統(tǒng)自己安排例如:對表達式 a = f1( )+f2( ) 并不是所有的編譯系統(tǒng)都先調(diào)用f1( ), 然后調(diào)用f2( )。在有的情況下結(jié)果可能不同。有時會出現(xiàn)一些令人容易搞混的問題,因此務(wù)必要小心謹慎語言中有的運算符為一

25、個字符,有的運算符由兩個字符組成 ,為避免誤解,最好采取大家都能理解的寫法 例如:不要寫成 i+j 的形式, 而應(yīng)寫成 (i+)+j 的形式 在調(diào)用函數(shù)時,實參數(shù)的求值順序,標準并無統(tǒng)一規(guī)定 例如:的初值為,如果有下面的函數(shù)調(diào)用: printf(,i+) 在有的系統(tǒng)中,從左至右求值,輸出“,”。在多數(shù)系統(tǒng)中對函數(shù)參數(shù)的求值順序是自右而左,函數(shù)輸出的是“,” 以上這種寫法不宜提倡, 最好改寫成 j = i+; printf(“%d, %d”, j,i);不要寫出別人看不懂的、也不知道系統(tǒng)會怎樣執(zhí)行程序4.不同類型數(shù)據(jù)間的混合運算整型(包括int,short,long)、浮點型(包括float,d

26、ouble)可以混合運算。在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進行運算說明: 這種類型轉(zhuǎn)換是由系統(tǒng)自動進行的。5. 強制類型轉(zhuǎn)換運算符可以利用強制類型轉(zhuǎn)換運算符將一個表達式轉(zhuǎn)換成所需類型強制類型轉(zhuǎn)換運算符的一般形式為 (類型名)(表達式)例如(double)a (將轉(zhuǎn)換成double類型)(int) (x+y) (將x+y的值轉(zhuǎn)換成int型) (float)(5%3)(將5%3的值轉(zhuǎn)換成float型)有兩種類型轉(zhuǎn)換系統(tǒng)自動進行的類型轉(zhuǎn)換強制類型轉(zhuǎn)換#include int main() float x; int; 32767.0; (int)x%3; printf(x=%f,

27、i=%dn,x,i); return 0;x32767.000000, i=1例A3.4 強制類型轉(zhuǎn)換運行結(jié)果:說明:有兩種類型轉(zhuǎn)換,一種是在運算時不必用戶指定,系統(tǒng)自動進行的類型轉(zhuǎn)換,如3+6.5。第二種是強制類型轉(zhuǎn)換。當自動類型轉(zhuǎn)換不能實現(xiàn)目的時,可以用強制類型轉(zhuǎn)換。3.3 C語句概述一個c程序可以有若干個源程序文件組成一個源文件可以有若干個函數(shù)和預處理命令以及全局變量聲明部分組成一個函數(shù)有函數(shù)首部和函數(shù)體組成函數(shù)體由數(shù)據(jù)聲明和執(zhí)行語句組成C語句都是用來完成一定操作任務(wù)的聲明部分的內(nèi)容不應(yīng)稱為語句C語句分為5類控制語句函數(shù)調(diào)用語句表達式語句空語句復合語句C程序源程序文件1源程序文件2源程序

28、文件n預處理命令函數(shù)n函數(shù)1數(shù)據(jù)聲明函數(shù)首部函數(shù)體數(shù)據(jù)聲明執(zhí)行語句C程序結(jié)構(gòu)控制語句 : 完成一定的控制功能,9種1) if() else 條件語句2) for() 循環(huán)語句3 ) while() 循環(huán)語句4 ) do while(); 循環(huán)語句5 ) continue 繼續(xù)語句/結(jié)束本次循環(huán)語句6 ) break 間斷語句/終止執(zhí)行switch或循環(huán)語句 7 ) switch() 開關(guān)語句/多分支選擇語句8 ) goto 轉(zhuǎn)向語句9 ) return 從函數(shù)返回語句判別條件內(nèi)嵌的語句例如:if(xy) z=x; /xy成立時執(zhí)行 else z=y; / 否則執(zhí)行函數(shù)調(diào)用語句由一個函數(shù)調(diào)用加一

29、個分號構(gòu)成例如: printf(“This is a C statement.”);表達式語句由一個表達式加一個分號構(gòu)成一個語句例如: a=3; i+; x+y;函數(shù)調(diào)用語句也是屬于表達式語句C語言中大多數(shù)語句是表達式語句 故也有說法:“C語言是表達式語言”空語句:只有一個分號的語句 ; /什么也不做用來做流程的轉(zhuǎn)向點用來作為循環(huán)語句中的循環(huán)體復合語句由兩條或兩條以上語句用花括號括起來的語句序列通??梢猿霈F(xiàn)在允許單條語句出現(xiàn)的地方可等價于一條語句可以嵌套使用格式復合語句和函數(shù)體同:采用花括號括起來的若干語句異:函數(shù)體內(nèi)可包含若干個復合語句,但復合語句中不能包含函數(shù)體;函數(shù)體內(nèi)可以是一條語句或沒

30、有語句復合語句和分程序分程序指含有說明語句的復合語句不是任何復合語句都是分程序#include int main()int a,b;a=5;b=10;printf(“%d,%dn”,a,b); double a=1.5; b=20; printf(“%lf,%dn”,a,b); char a=k; b=30; printf(“%c,%dn”,a,b); printf(“%lf,%dn”,a,b); b=40;printf(“%d,%d”,a,b); return 0;例A3.5 分析下列程序的輸出結(jié)果。(先只理解分程序概念)運行結(jié)果如下:5,101.500000,20K,301.500000,

31、305,40分程序指含有說明語句的復合語句分程序的前面可以定義變量3.3.2 最基本的語句-賦值語句賦值運算符 賦值符號“”就是賦值運算符,它的作用是將一個數(shù)據(jù)賦給一個變量 如“”的作用是執(zhí)行一次賦值操作(或稱賦值運算)。把常量賦給變量 也可以將一個表達式的值賦給一個變量復合的賦值運算符在賦值符“”之前加上其他運算符,可以構(gòu)成復合的運算符例如: 等價于 * 等價于 *() 等價于 為便于記憶,可以這樣理解: a += b (其中a為變量,b為表達式) a += b(將有下劃線的“a+”移到“=”右側(cè)) |_ a = a + b (在“=”左側(cè)補上變量名a)注意:如果是包含若干項的表達式,則相當

32、于它有 括號。如: x %= y+3 x %= (y+3) |_ x = x %(y+3)(不要錯寫成x=x%y+3) 凡是二元(二目)運算符,都可以與賦值符一起組合成復合賦值符。 語言規(guī)定可以使用種復合賦值運算符:,*,| 賦值表達式 由賦值運算符將一個變量和一個表達式連接起來的式子稱為“賦值表達式”一般形式為: 例如: “5” 是一個賦值表達式 對賦值表達式求解的過程是: 求賦值運算符右側(cè)的“表達式”的值; 賦給賦值運算符左側(cè)的變量。 例如: 賦值表達式“=3*5”的值為15,執(zhí)行表達式后,變量a的值也是15注意: 一個表達式應(yīng)該有一個值 左值 (lvalue) : 賦值運算符左側(cè)的標識符

33、變量可以作為左值而表達式就不能作為左值(如a+b)常變量也不能作為左值 右值 (lvalue) :出現(xiàn)在賦值運算符右側(cè)的表達式 左值也可以出現(xiàn)在賦值運算符右側(cè),因而左值都可以作為右值賦值表達式中的“表達式”,又可以是一個賦值表達式 例如: a=(b=5) 分析:括弧內(nèi)的“b=5”是一個賦值表達式,它的值等于5。執(zhí)行表達式“a=(b=5)”相當于執(zhí)行“b=5”和“ab”兩個賦值表達式。 賦值運算符按照“自右而左”的結(jié)合順序,因此,“(b5)”外面的括弧可以不要,即“a=(b=5)”和“a=b=5”等價。賦值表達式也可以包含復合的賦值運算符。 如:a+=a-=a*a分析:此賦值表達式的求解步驟如下

34、 先進行“*”的運算, 它相當于*, a的值為144132。 再進行“”的運算, 相當于=a+(-132), a的值為132-132-264。復合賦值運算+=, -=, *=, /=, %=a+=9 a=a+9a*=4 a=a*4a*=b+4 a=a*(b+4)如果a=4, b=2, c=1,表達式的結(jié)果: c*=a+=b*=a/=3 c*=a+=b*=1 /(a=1) c*=a+=2 /(a=1,b=2) c*=3 /(a=3,b=2) c=3 /(a=3,b=2)運行結(jié)果:3右結(jié)合注意: 運算順序 每次運算后變量的值的改變將賦值表達式作為表達式的一種,使賦值操作不僅可以出現(xiàn)在賦值語句中,而

35、且可以以表達式形式出現(xiàn)在其他語句(如輸出語句、循環(huán)語句等)中。 如:printf(%d,a=b); 分析: 如果b的值為3, 則輸出a的值(也是表達式a=b的值)為3。在一個語句中完成了賦值和輸出雙重功能。賦值語句 是由賦值表達式加上一個分號構(gòu)成C語言中的賦值號“=”是一個運算符 例: a=100 / 賦值表達式 a=100; / 賦值語句賦值表達式可以包含在其他表達式中 例: if(a=b)0) t=a; 正確 /*先進行賦值運算 (將b的值賦給a), 然后判斷a0是否成立,若成立則執(zhí)行t=a。*/if的條件中不能包含賦值語句 例: if(a=b;) t=a; 錯誤注意理解注意與“=”區(qū)別1

36、. 若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是A.-3 B.9C.-12D.6例 選擇題2. 下列程序輸出的結(jié)果是void main() int a=2; a%=4-1; printf(%d,a); a+=a*=a-=a*=3; printf(n%d,a);A. 2,0 B. 1,0C. -1,12 D. 2,12選C選A 問題:c語言中的賦值語句與其他高級語言的賦值語句有什么不同點?1. C語言中的賦值號“=”是一個運算符,在其他大多數(shù)語言中賦值號不是運算符.2. 其他大多數(shù)高級語言沒有“賦值表達式”這一概念.算法 有以下幾種可能性: b2-4ac=0, 有兩

37、個相等實根。 b2-4ac 0, 有兩個不等實根。 b2-4ac 0, 有兩個不等實根時。a,b,c由鍵盤輸入,則一元二次方程式的根為x1= x2= 可以將上面的分式分為兩項:p= , q= ,x1=p+q, x2=p-q3.4 數(shù)據(jù)的輸入輸出#include #include int main ( ) int a,b,c; float disc,x1,x2,p,q; scanf(a=%d,b=%d,c=%d,&a,&b,&c); disc=b*b-4*a*c; p=-(float)b/(2*a); q=sqrt(disc)/(2*a); x1=p+q;x2=p-q; printf(x1=%5

38、.2fnx2=%5.2fn,x1,x2); return 0; 運行情況:,編程 注意數(shù)據(jù)的輸入格式!所謂輸入輸出是以計算機主機為主體而言的輸出:從計算機向外部輸出設(shè)備(顯示器,打印機) 輸出數(shù)據(jù)輸入:從輸入設(shè)備(鍵盤,鼠標,掃描儀)向計算機輸入數(shù)據(jù)C語言本身不提供輸入輸出語句, 輸入和輸出操作是由C函數(shù)庫中的函數(shù)來實現(xiàn)的標準輸入輸出函數(shù)是以標準的輸入輸出設(shè)備(一般為終端設(shè)備)為輸入輸出對象的例如: 字符輸入函數(shù): getchar() 字符輸出函數(shù):putchar() 格式輸入函數(shù): scanf() 格式輸出函數(shù): printf() 字符串輸入函數(shù):gets() 字符串輸出函數(shù):puts()在

39、使用系統(tǒng)庫函數(shù)時,要用預編譯命令“#include”將有關(guān)的“頭文件”包括到用戶源文件中例如:在調(diào)用標準輸入輸出庫函數(shù)時,文件開頭應(yīng)該有: #include “stdio.h” 或: #include 字符數(shù)據(jù)的輸入輸出字符輸出函數(shù)一般形式:putchar(c)函數(shù)的作用:向終端輸出一個字符 輸出字符變量c的值,c可以是字符型變量或整型變量#includeint main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n); return 0; 例A3.6 輸出單個字符。BOY運行結(jié)果:putchar(a);p

40、utchar(n);putchar(b);putchar(n);putchar(c);putchar(n);BOY運行結(jié)果:注意:putchar()輸出能在屏幕上顯示的字符,也可輸出控制字符、轉(zhuǎn)義字符如:putchar(101); putchar(); putchar(015);/輸出字符A/輸出回車,不換行。使輸出的當前位置移到本行開頭/輸出字符字符輸入函數(shù)getchar函數(shù)沒有參數(shù)一般形式:getchar() 函數(shù)的作用 從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個字符函數(shù)值 從輸入設(shè)備得到的字符運行程序:a (從鍵盤輸入a后,按Enter鍵,字符才送到內(nèi)存)a (屏幕上將顯示輸出的字符a)

41、#includeint main() char c; c=getchar(); putchar(c); putchar(n);return 0; 例A3.7 輸入單個字符。輸出一個字符幾種方式:putchar(getchar();printf(“%c”,getchar();格式輸出函數(shù)printf函數(shù)函數(shù)的作用:向終端(或系統(tǒng)隱含指定的輸出設(shè)備)輸出若干個任意類型的數(shù)據(jù)一般格式:printf(格式控制,輸出表列)用雙撇號括起來的字符串,也稱轉(zhuǎn)換控制字符串包格式說明符和普通字符由%和格式字符組成,作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。如%d、%f等需要原樣輸出的字符需要輸出的一些數(shù)據(jù),可以是表

42、達式格式字符格式符。用來輸出十進制整數(shù)幾種用法: :按十進制整型數(shù)據(jù)的實際長度輸出。 :為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于,則左端補以空格,若大于,則按實際位數(shù)輸出。 例: printf(,); 若,b,則輸出結(jié)果為 , /注:這里表示一個空格 :輸出長整型數(shù)據(jù)。 例: long ; /* 定義a為長整型變量*/ printf(,);/不能用%d輸出 也可用 %mld格式符。以八進制整數(shù)形式輸出。輸出的數(shù)值不帶符號,符號位也一起作為八進制數(shù)的一部分輸出。例:int a=-1; printf(%d,%o,a,a); 在內(nèi)存單元中的存放形式(以補碼形式存放)如下: 111111111111

43、1111 輸出為: ,不會輸出帶負號的八進制整數(shù)。對長整數(shù)(型)可以用“”格式輸出。還可以指定字段寬度例: printf (,); 輸出為: _ _177777。 (數(shù)字前有2個空格)格式符。以十六進制數(shù)形式輸出整數(shù)。同樣不會出現(xiàn)負的十六進制數(shù)。例: ; printf (,); 輸出結(jié)果為: ffff,可以用“”輸出長整型數(shù),也可以指定輸出字段的寬度 例: “”格式符,用來輸出unsigned型數(shù)據(jù).一個有符號整數(shù)(型)也可以用格式輸出;一個型數(shù)據(jù)也可以用格式輸出。型數(shù)據(jù)也可用或格式輸出。格式符,用來輸出一個字符。如:d; (,d); 輸出字符.一個整數(shù),只要它的值在范圍內(nèi),可以用“”使之按字

44、符形式輸出,在輸出前,系統(tǒng)會將該整數(shù)作為ASCII碼轉(zhuǎn)換成相應(yīng)的字符;一個字符數(shù)據(jù)也可以用整數(shù)形式輸出。 運行結(jié)果:a=-1,177777,ffff,65535b=-2,177776,fffe,65534#includeint main()unsigned int a=65535;int b=-2;printf(“a=%d,%o,%x,%un”,a,a,a,a);printf(“b=%d,%o,%x,%un”,b,b,b,b); return 0; 例A3.8 無符號數(shù)據(jù)的輸出。指定輸出字數(shù)的寬度,printf(“%3c”,c);則輸出: a運行結(jié)果:a,97a,97#includeint m

45、ain()char c=a;int i=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);return 0; 例A3.9 字符數(shù)據(jù)的輸出。s格式符, 輸出一個字符串. 。例如: (,) 輸出字符串“”(不包括雙引號)。 %ms,輸出的字符串占m列,若串長大于m,則全部輸出,若串長小于m,則左補空格。 %-ms,若串長小于m,字符串向左靠,右補空格。 %m. ns, 輸出占m列,只取字符串中左端n個字符,輸出在m列的右側(cè),左補空格。 %-m.ns,n個字符輸出在m列的左側(cè),右補空格,若nm,m自動取n值。運行結(jié)果:CHINA, CH ,CHIN,CHI #includeint main()printf(“%3s,%7.2s,%.4s,%-5.3sn”, “CHINA”, “CHINA”, “CHINA”, “CHINA”); return 0; 例A3.10字符串的輸出。格式符。用來以小數(shù)形式輸出實數(shù)(包括單雙精度)有以下幾種用法: 。不指定字段寬度,由系統(tǒng)自動指定字段寬度,使整數(shù)部分全部輸出,并輸出位小數(shù)。應(yīng)當注意,在輸出的數(shù)字中并非全部數(shù)字都是有效數(shù)字。單精度實數(shù)的有效位數(shù)一般為位

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論