C程序設計 第2章_第1頁
C程序設計 第2章_第2頁
C程序設計 第2章_第3頁
C程序設計 第2章_第4頁
C程序設計 第2章_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設計第2章基本數(shù)據(jù)類型和運算第1章C語言概述第2章基本數(shù)據(jù)類型和運算第3章結構化程序設計第5章函數(shù)第6章指針第7章復合結構類型第8章編譯預處理第4章數(shù)組及字符串●課程概述

附錄2.1C語言的數(shù)據(jù)類型 2.2常量及其類型2.3變量及其類型2.4運算符與表達式2.5不同數(shù)據(jù)類型的輸出2.6不同數(shù)據(jù)類型的輸入

第9章位運算第10章文件基本數(shù)據(jù)類型和運算第2章教學目標?掌握C語言提供的整型、雙精度型、字符型和字符串常量的表示方法,變量的定義和初始化方法?掌握算術運算、賦值運算、逗號運算、關系運算和邏輯運算的實現(xiàn)和運算規(guī)則?了解測試數(shù)據(jù)長度運算和位運算的基本功能?掌握不同類型數(shù)據(jù)的輸入和輸出操作2.1.1C語言具有的數(shù)據(jù)類型什么是數(shù)據(jù)類型?

數(shù)據(jù)類型是指數(shù)據(jù)的內(nèi)在表現(xiàn)形式。不同的數(shù)據(jù)類型在內(nèi)存中的存儲方式不同,在內(nèi)存中所占的字節(jié)數(shù)也不相同。C語言的數(shù)據(jù)類型2.1C語言的數(shù)據(jù)類型2.1.2C語言的基本數(shù)據(jù)類型什么是基本數(shù)據(jù)類型?

基本數(shù)據(jù)類型是不可再分的最基本的數(shù)據(jù)類型,是構造其他數(shù)據(jù)類型的基礎。C語言的基本數(shù)據(jù)類型2.1C語言的數(shù)據(jù)類型數(shù)據(jù)類型關鍵字字符型char整型int浮點(單精度)型float雙精度型double無值型voidchar型數(shù)據(jù)可以用signed、unsigned加以修飾,即可以有char、signed

char、unsignedchar三種形式int

型數(shù)據(jù)可以用signed、unsigned、short、long加以修飾,即可以有int、signed

int、unsigned

int、short

int、long

int、signedlongint、unsignedlongint等形式。對于int而言,當使用類型修飾后,關鍵字int可省略不寫,例如signedlongint可以寫成long,unsignedlongint可以寫成unsignedlong。C語言生成目標代碼質量高,程序執(zhí)行效率高。(1)char型數(shù)據(jù)的修飾。(2)int型數(shù)據(jù)的修飾。(3)ANSIC標準有關規(guī)定2.1.3基本數(shù)據(jù)類型的修飾2.1C語言的數(shù)據(jù)類型2.八進制整數(shù)3.十六進制整數(shù)十進制是整數(shù)的通常寫法,十進制整數(shù)沒有前綴,其數(shù)碼為0~9。例如:437、-124、65535、3723都是合法的十進制整數(shù);而下列各數(shù)是不合法的十進制整數(shù):●0x46:含有非法的前綴0x?!?6A:含有非十進制數(shù)碼A。2.2常量及其類型1.十進制整數(shù)2.2.1整型常量2.八進制整數(shù)3.十六進制整數(shù)八進制整數(shù)必須以數(shù)字0開頭,即以0作為八進制數(shù)的前綴。數(shù)碼取值范圍為0~7。以下各數(shù)是合法的八進制數(shù):●0123:表示八進制數(shù)123,即(123)8,其值為1×82+2×81+3×80,等于十進制數(shù)83。●0101:表示十進制數(shù)65?!?011:表示八進制數(shù)-11,即十進制數(shù)-9。以下各數(shù)不是合法的八進制數(shù):●389:由于無前綴0,所以是非法的八進制數(shù)?!?92B4:包含了非八進制數(shù)碼B。2.2常量及其類型1.十進制整數(shù)2.2.1整型常量2.八進制整數(shù)3.十六進制整數(shù)十六進制整常數(shù)的前綴為0X或0x。其數(shù)碼為0~9,A~F或a~f。以下各數(shù)是合法的十六進制整常數(shù):●0X123:代表十六進制的123,即(123)16=1×162+2×161+3×160=256+32+3=291。●0XA0:表示十進制為160?!?0X12:表示十進制為-18。下面各數(shù)是不合法的十六進制整常數(shù):●7A:沒有前綴0X?!?X8K:含有非十六進制數(shù)碼K。2.2常量及其類型1.十進制整數(shù)2.2.1整型常量2.2.2實型常量1.小數(shù)形式

2.指數(shù)形式2.2常量及其類型由正負號、整數(shù)部分、十進制小數(shù)點和小數(shù)部分組成。整數(shù)部分和小數(shù)部分是由數(shù)字0~9和小數(shù)點組成,其中小數(shù)點是不能缺少的。例如:0.0、32.0、4.654等均為合法的實數(shù)。3.程序舉例2.2.2實型常量1.小數(shù)形式

2.指數(shù)形式2.2常量及其類型在小數(shù)的基礎上,后面加階碼標志(“e”或“E”)以及階碼組成。其一般形式為:

aEn或aen其中的a為十進制數(shù),E或e為階碼標志,n為十進制整數(shù)。需要注意的是,字母“e”或“E”之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù),如e5、3.24e3.2、e等都是不合法的指數(shù)形式。3.程序舉例2.2.2實型常量1.小數(shù)形式

2.指數(shù)形式2.2常量及其類型例2.1以實數(shù)的形式輸出三個數(shù)。main(){

printf("%f\n",365.);

printf("%f\n",365);

printf("%f\n",365f);}該程序的運行結果如下:3.程序舉例365.0000000.000000365.0000002.2.3字符型常量1.單引號表示法

2.轉義字符表示法2.2常量及其類型對于可顯示的字符常量,可直接用單引號將該字符括起來,如‘a(chǎn)’、‘9’、‘Z’、‘=’、‘+’、‘?’等。也可用字符的ASCII碼值表示字符,如十進制數(shù)85表示大寫字母'U',八進制數(shù)0102表示大寫字母'B'。3.字符常量的特點2.2.3字符型常量1.單引號表示法

2.轉義字符表示法2.2常量及其類型轉義字符是一種特殊的字符常量。轉義字符以反斜線“\”開頭,后面跟一個或幾個字符。轉義字符具有特定的含義,它不同于字符原有的意義,所以稱“轉義”字符。常用的轉義字符及其含義如下表所示。3.字符常量的特點2.2.3字符型常量2.2常量及其類型轉義字符含義ASCII代碼

\n換行10\r回車13\f換頁12\t水平制表(Tab)9\v垂直制表11\b退格符(backspace)8\\反斜杠符"\"92\’單引號符39\”雙引號符34\ddd

1~3位八進制數(shù)所代表的字符\xhh

1~2位十六進制數(shù)所代表的字符2.2.3字符型常量1.單引號表示法

2.轉義字符表示法2.2常量及其類型(1)字符常量只能用單引號括起來,不能用雙引號或其他符號。(2)字符常量只能是單個字符,不能是字符串。(3)C語言對字符型和整型是不加區(qū)分的,字符型常量被視為1字節(jié)的整數(shù),其值就是該字符的ASCII碼,可以像整數(shù)一樣參加數(shù)值運算。例如,'C'的ASCII碼為67,'C'-2的值為65,即字符'A'的ASCII碼。3.字符常量的特點2.2.4字符串常量1.字符串常量

2.字符串的長度2.2常量及其類型3.字符串常量與字符常量的區(qū)別字符串常量是用雙引號括起來的零個或多個字符序列。例如:“”,“Goldhuman!”,“010278”等都是字符串常量。兩個雙引號連寫("")表示空字符串。當字符串中包含像單引號、雙引號或反斜杠線這類有特定用途的字符時,應該分別使用轉義字符,即分別用\‘、\“、\\來表示。例如:“Hesaid:\"hello!\"”代表的英文句子應該是“Hesaid:"hello!"”C語言規(guī)定,字符串中的字母是區(qū)分大小寫的,所以"a"和"A"是不同的字符串。2.2.4字符串常量1.字符串常量

2.字符串的長度2.2常量及其類型3.字符串常量與字符常量的區(qū)別一個字符串中所有字符的個數(shù)稱為該字符串的長度,其中每個轉義字符只當做一個字符。例如,字符串"1234567","xyz","BbedsQd","\\ABCD\\","\101\102\x43\x44"的長度分別為7、3、7、6、4。C語言規(guī)定,每個字符串在內(nèi)存中占用的字節(jié)數(shù)等于字符串的長度加1。其中最后一個字節(jié)存放的字符稱為“空字符”,其ASCII碼為0,書寫時常用轉義字符'\0'來表示,是字符串結束的標記。2.2.4字符串常量1.字符串常量

2.字符串的長度2.2常量及其類型3.字符串常量與字符常量的區(qū)別(1)字符常量只能用單引號括起來,不能用雙引號或其他符號。(2)字符常量只能是單個字符,不能是字符串。(3)C語言對字符型和整型是不加區(qū)分的,字符型常量被視為1字節(jié)的整數(shù),其值就是該字符的ASCII碼,可以像整數(shù)一樣參加數(shù)值運算。例如,'C'的ASCII碼為67,'C'-2的值為65,即字符'A'的ASCII碼。2.2.5符號常量1.符號常量的定義

2.符號常量的優(yōu)點

2.2常量及其類型宏定義是用指定的標識符來代表一串字符,其一般形式為:#define標識符

字符串

例如:#definePI3.14159265其中,標識符PI稱為宏名,也叫符號常量,習慣上用大寫英文字母表示;字符串3.14159265稱為宏體,沒有類型和值的含義。1)宏定義2)const定義2.2.5符號常量1.符號常量的定義

2.符號常量的優(yōu)點

2.2常量及其類型const定義的符號常量既有類型又有值,與宏定義不同,其一般的形式為:const數(shù)據(jù)類型標識符=常量表達式;例如:

constintmax=300;constfloatx=max+3.14;上述語句定義了一個整型符號常量max,其值等于300;一個浮點型符號常量x,其值為303.14。1)宏定義2)const定義2.2.5符號常量1.符號常量的定義

2.符號常量的優(yōu)點

2.2常量及其類型使用const定義符號常量應注意以下幾點:(1)const定義是以關鍵字const開頭,以分號結尾的C語言語句。(2)每個const語句可以定義多個同類型的符號常量,相互之間用逗號隔開。(3)const定義既可以出現(xiàn)在函數(shù)外部,也可以出現(xiàn)在函數(shù)內(nèi)部。不同位置定義的符號常量的作用域也不同。(4)const定義是在程序編譯時完成對標識符的賦值,這個值被存放在內(nèi)存的常量區(qū)中,而宏定義則是在編譯時完成標識符的賦值,在編譯時按上下文對替換的字符串進行解釋,宏名作為標識符被放在內(nèi)存的代碼區(qū)中。2.3.1變量及其定義1.什么是變量2.變量的定義格式2.3變量及其類型3.變量定義時的注意事項變量是指在程序運行過程中其值可以發(fā)生變化的量。一般情況下,變量用來保存程序運行過程中輸入的數(shù)據(jù)、計算獲得的中間結果以及程序的最終結果。2.3.1變量及其定義1.什么是變量2.變量的定義格式2.3變量及其類型3.變量定義時的注意事項變量的定義格式為:

類型說明符變量名表;其中,類型說明符包括int、float、double、char等,用來指定變量的數(shù)據(jù)類型;變量名表如果有多個變量,則彼此間要用逗號分隔開;分號是語句結束符。例如:intx;/*定義了一個類型為整型的變量x*/inty,z;/*定義了一個整型變量y和一個整型變量z*/floata,b,c;/*定義了三個浮點型變量a、b、c*/2.3.1變量及其定義1.什么是變量2.變量的定義格式2.3變量及其類型3.變量定義時的注意事項(1)允許在一個類型說明符后,定義多個相同類型的變量。各變量名之間用逗號間隔。(2)類型說明符與變量名之間至少用一個空格間隔。(3)變量定義必須放在變量使用之前,一般放在函數(shù)體的開頭部分。(4)最后一個變量名之后必須以分號“;”結尾。2.3.2整型變量2.3變量及其類型整型變量的基本類型符為int●

可以根據(jù)數(shù)值的范圍將整型變量定義為基本整型、短整型、長整型和無符號型,具體如下所述:(1)基本整型:類型說明符為int。(2)短整型:類型說明符為shortint或short。(3)長整型:類型說明符為longint或long。(4)無符號型:類型說明符為unsigned。其中,無符號型又可與上述三種類型匹配而構成如下類型:無符號基本型:類型說明符為unsigned

int或unsigned。無符號短整型:類型說明符為unsignedshort。無符號長整型:類型說明符為unsignedlong。2.3.2整型變量2.3變量及其類型●各種無符號類型的量所占的內(nèi)存空間字節(jié)數(shù)與相應的有符號類型的量相同。●有符號整型變量的最大取值為32767,而無符號整型變量的最大取值為65535?!褚訧BMPC機為例,各類整型變量所分配的內(nèi)存字節(jié)數(shù)及表示范圍如表所示。類型類型說明符字節(jié)取值范圍

基本整型int

2-32768~32767

短整型shortint

2-32768~32767

長整型longint

4-2147483648~2147483647

無符號整型unsignedint

20~65535

無符號長整型unsignedlong

40~4294967295

2.3.2變量及其定義2.3變量及其類型3.例2.3的調整1.例2.2例2.2整型變量的定義與使用舉例一。#include<stdio.h>main(){

int

x,y,m,n;/*指定x,y,m,n為整型變量*/unsignedu;/*指定u為無符號整型變量*/x=-21;y=18;u=40;m=x+u;n=y+u;

printf("x+u=%d,y+u=%d\n",m,n);}程序的運行結果為:

x+u=19,y+u=58

2.例2.32.3.2變量及其定義2.3變量及其類型2.例2.31.例2.2#include<stdio.h>main(){int

a,b,c,d;/*定義整型變量a、b、c、d*/longx,y;/*定義長整型變量x、y*/x=7;/*變量賦初值*/y=8;a=9;b=10;c=x+a;/*求x與a的加和*/d=y+b;/*求y與b的加和*/

printf("c=x+a=%d,d=y+b=%d\n",c,d);/*輸出c、d值*/}程序的輸出結果為:c=x+a=16,d=y+b=183.例2.3的調整2.3.2變量及其定義2.3變量及其類型2.例2.31.例2.2C語言中,可以在程序的一行中寫入多條語句,因此上面的程序可以調整為:main(){int

a,b,c,d;longx,y;x=7;y=8;a=9;b=10;c=x+a;d=y+b;

printf("c=x+a=%d,d=y+b=%d\n",c,d);}3.例2.3的調整調整后的程序只是其表示形式發(fā)生了變化,程序的本質并沒有改變,該程序的運行結果為:

c=x+a=16,d=y+b=182.3.3實型變量2.3變量及其類型在C語言中,實型變量分為單精度、雙精度兩類,具體如下所述:●單精度型:類型說明符為float?!耠p精度型:類型說明符為double。在一般系統(tǒng)中一個float型的數(shù)據(jù)占4個字節(jié)(32位)內(nèi)存空間,一個double型的數(shù)據(jù)占8個字節(jié)(64位)內(nèi)存空間。單精度實數(shù)提供7位有效數(shù)字,雙精度實數(shù)提供15~16位有效數(shù)字,數(shù)值的取值范圍隨機器系統(tǒng)而異。每一個實型變量都應在使用前進行定義。例如:floatm,n;/*定義兩個變量x和y,并且指定它們?yōu)閱尉葘嵭土?/doublea,b,c;/*指定a、b、c為雙精度實型量*/1.實型變量2.例2.42.3.3實型變量2.3變量及其類型#include<stdio.h>main(){ floata; doubleb; a=5555.55555; b=5555.5555555555;

printf("%f\n%f\n",a,b);}1.實型變量2.例2.4該程序的運行結果如下:5555.5556645555.5555562.3.4字符型變量2.3變量及其類型字符型變量用來存放字符常量,一個字符型變量只能存放一個字符,不要存放一個字符串。字符變量的類型說明符是char。下面是幾個字符型變量的定義:charm1,m2,m3;上述語句將m1、m2和m3定義為字符型變量,其內(nèi)可以各放一個字符,下面給這三個字符變量分別賦值a、b、c:m1='a';m2='b';m3='c';1.字符型變量2.例2.52.3.4字符型變量2.3變量及其類型#include<stdio.h>main(){ charc1,c2; c1=97; c2=98;

printf("%c%c",c1,c2);

printf("%d%d\n",c1,c2); c1=c1-32;/*小寫字母的ASCII碼值比對應的大寫字母大32*/ c2=c2-('a'-'A');

printf("%c%c\n",c1,c2);}1.字符型變量2.例2.5程序的運行結果為:ab9798AB2.3.5字符串變量2.3變量及其類型

C語言沒有專門的字符串變量,可以用字符數(shù)組來實現(xiàn)。詳見第4章的介紹。2.4.1運算符及運算對象2.4運算符與表達式1.運算符2.運算對象基本運算符C語言運算符號專用運算符算術運算符關系運算符邏輯運算符賦值運算符逗號運算符長度運算符位運算符基本算術運算符自增自減運算符位移位運算符位邏輯運算符強制類型轉換運算符下標運算符成員運算符指針運算符2.4.1運算符及運算對象2.4運算符與表達式1.運算符2.運算對象運算對象也稱為操作數(shù),C語言中的運算對象有下列三種情況:(1)運算符的運算對象可以是一個,此時的運算符稱為“單目運算符”。單目運算符如果放在運算對象的前面稱為“前綴單目運算符”;如果放在運算對象的后面稱為“后綴單目運算符”。(2)運算對象最常見的有兩個,此時參與運算的運算符稱為“雙目運算符”。雙目運算都是放在兩個運算對象的中間。(3)運算對象還可以是三個,稱“三目運算符”。三目運算符在C語言中只能是條件運算符,夾在三個運算對象之間。2.表達式語句表達式是用運算符與圓括號將操作數(shù)(運算對象)連接起來所構成的式子。C語言的操作數(shù)包括常量、變量和函數(shù)值等。例如,表達式sin(2.0)+(a-b)*5/sqrt(2.0)中包括的運算符有+、-、*、/,操作數(shù)包括常量5,變量a、b以及函數(shù)sin(2.0)和sqrt(2.0)。表達式按照運算符的運算規(guī)則進行運算可以獲得一個值,稱為“表達式的值”。1.表達式的定義2.4.2表達式2.4運算符與表達式2.表達式語句C語言中,在一個表達式的后面加上分號“;”就構成了表達式語句,即簡單語句。有的表達式語句是有意義的簡單語句,例如:x=x+1;和x++;都表示使x單元的內(nèi)容加1。而有的表達式語句是無意義的,例如:3++;是無意義的表達式語句,因為這條語句沒有引起任何存儲單元中數(shù)據(jù)的變化。1.表達式的定義2.4.2表達式2.4運算符與表達式2.自增自減運算符3.算術表達式4.算術運算符的結合性和優(yōu)先級(1)加法運算符“+”:加法運算符為雙目運算符,即應有兩個操作數(shù)參與加法運算。如5+4等。但“+”也可作正值運算符,此時為單目運算,如+5等。(2)減法運算符“-”:減法運算符為雙目運算符。但“-”也可作負值運算符,此時為單目運算,如-5等。(3)乘法運算符“*”:乘法運算符為雙目運算符,如8*9。但“*”在指針運算中也可以表示單目的“取內(nèi)容”運算。1.基本算數(shù)運算符2.4.3算術運算符2.4運算符與表達式2.自增自減運算符3.算術表達式4.算術運算符的結合性和優(yōu)先級(4)除法運算符“/”:除法運算符為雙目運算符。參與的操作數(shù)均為整型時,結果也為整型,舍去小數(shù)。如果運算量中有一個是實型,則結果為實型。(5)求余運算符“%”:求余運算符也叫求模運算,為雙目運算符,用來求兩個整數(shù)的的余數(shù),如:9%2=1。1.基本算數(shù)運算符2.4.3算術運算符2.4運算符與表達式2.自增自減運算符3.算術表達式4.算術運算符的結合性和優(yōu)先級(4)除法運算符“/”:除法運算符為雙目運算符。參與的操作數(shù)均為整型時,結果也為整型,舍去小數(shù)。如果運算量中有一個是實型,則結果為實型。(5)求余運算符“%”:求余運算符也叫求模運算,為雙目運算符,用來求兩個整數(shù)的的余數(shù),如:9%2=1。1.基本算數(shù)運算符2.4.3算術運算符2.4運算符與表達式2.自增自減運算符3.算術表達式4.算術運算符的結合性和優(yōu)先級1.基本算數(shù)運算符2.4.3算術運算符2.4運算符與表達式基本算術運算符的運算對象、運算規(guī)則與結合性如表所示。對象數(shù)名稱運算符運算規(guī)則結合性單目正+取正值自右向左負﹣取負值雙目加+加法自左向右減﹣減法乘*乘法除/除法模%整除取余2.自增自減運算符3.算術表達式4.算術運算符的結合性和優(yōu)先級1.基本算數(shù)運算符2.4.3算術運算符2.4運算符與表達式例2.6運算符“/”應用舉例#include<stdio.h>main(){ printf("%d,%d\n",30/8,-30/8); printf("%f,%f\n",30.0/8,-30.0/8);}程序的運行結果為:3,-33.750000,-3.7500002.自增自減運算符3.算術表達式4.算術運算符的結合性和優(yōu)先級自增自減運算符都是單目運算符,用來對整型、字符型、指針型以及數(shù)組元素等變量進行算術運算,其運算結果與原來的類型相同,并存回原來的運算對象,例如:(1)++m:先使m的值加1,再使用變量m。(2)m++:先使用m的值,再使變量m加1。(3)--m:先使m的值減1,再使用變量m。(4)m--:先使用m的值,再使變量m減1。1.基本算數(shù)運算符2.4.3算術運算符2.4運算符與表達式2.自增自減運算符3.算術表達式4.算術運算符的結合性和優(yōu)先級當出現(xiàn)難以區(qū)分的若干個+或-組成的表達式運算時,C語言規(guī)定,自左向右取盡可能多的符號組成運算符。例如:設整型變量m和n的值均為6,則:m+++n:應理解為(m++)+n,最后的計算結果為12,m的值為7,n不變。m---n:則理解為(m--)-n,最后的計算結果為0,m的值為5,n不變。1.基本算數(shù)運算符2.4.3算術運算符2.4運算符與表達式2.自增自減運算符3.算術表達式4.算術運算符的結合性和優(yōu)先級1.基本算數(shù)運算符2.4.3算術運算符2.4運算符與表達式例2.7自增自減運算符應用舉例。#include<stdio.h>main(){ inty=6;

printf("%d\n",++y);

printf("%d\n",--y);

printf("%d\n",y++);

printf("%d\n",y--);

printf("%d\n",-y++);

printf("%d\n",-y--);}程序的輸出結果為:7667-6-72.自增自減運算符3.算術表達式4.算術運算符的結合性和優(yōu)先級1.基本算數(shù)運算符2.4.3算術運算符2.4運算符與表達式例2.8由自增運算符構成的表達式應用舉例。#include<stdio.h>main(){ intp,q; intx=8,y=8; p=(x++)+(x++)+(x++); q=(++y)+(++y)+(++y); printf("%d,%d,%d,%d",p,q,x,y);}程序的輸出結果為:24,33,11,112.自增自減運算符3.算術表達式4.算術運算符的結合性和優(yōu)先級1.基本算數(shù)運算符2.4.3算術運算符2.4運算符與表達式算術表達式是用算術運算符連接數(shù)值型的運算對象構成的表達式,用來完成數(shù)值計算的功能。如5%6+12,(3+5)/(6%4)等。使用算術運算符時,應注意以下幾點:(1)乘法運算符“*”在表達式中既不能省略,也不能用“.”或“×”代替;除法運算符也不能用“÷”代替。(2)C語言沒有乘方運算,可以通過連乘的方式實現(xiàn)乘方運算,也可以使用數(shù)學函數(shù),如pow(10,n)表示10的n次方,pow(x,y)表示x的y次方。2.自增自減運算符3.算術表達式4.算術運算符的結合性和優(yōu)先級1.基本算數(shù)運算符2.4.3算術運算符2.4運算符與表達式(3)表達式中不允許使用方括號或花括號,但允許使用多重圓括號嵌套配對使用。如x/(12*(a+b))。(4)算術表達式應能正確地表達數(shù)學公式。例如:數(shù)學表達式(4+y)/2b對應的C語言算術表達式為:(4+y)/(2*b)或(4+y)/2/b。(5)算術表達式的結果應該不超過其所能表示的數(shù)的范圍。例如,最大的整數(shù)是32767,則32767+12就是錯誤的結果。2.自增自減運算符3.算術表達式4.算術運算符的結合性和優(yōu)先級1.基本算數(shù)運算符2.4.3算術運算符2.4運算符與表達式運算符的結合性是指如果一個操作數(shù)左邊和右邊的兩個運算符的優(yōu)先級相同,應該優(yōu)先計算的操作符。計算機在進行表達式的計算時,通常嚴格按照運算符的優(yōu)先級和結合性進行,就算術表達式而言,括號最優(yōu)先,其次是一元運算符,然后是乘、除和求模,最后是加、減;當同一優(yōu)先級的運算符同時出現(xiàn)時,按它們的結合性確定其優(yōu)先次序。詳見附錄一。3.關系表達式4.關系運算符的優(yōu)先次序1.關系運算符2.4.4關系術運算符2.4運算符與表達式所謂“關系運算”實際上是“比較運算”,首先將兩個值進行比較,然后判斷其比較的結果是否符合給定的條件。關系運算符的運算對象、運算規(guī)則和結合性如表所示。對象數(shù)目名稱運算符運算規(guī)則結合性雙目小于<條件滿足則為真,結果為1;否則為假,結果為0。自左向右小于等于<=大于>大于等于>=等于==不等于!=3.關系表達式4.關系運算符的優(yōu)先次序1.關系運算符2.4.4關系術運算符2.4運算符與表達式在C語言中所有關系運算符優(yōu)先級別如表所示。序號關系運算符優(yōu)先級別1<優(yōu)先級相同(級別高)2<=3>4>=5==優(yōu)先級相同(級別低)6!=3.關系表達式4.關系運算符的優(yōu)先次序1.關系運算符2.4.4關系術運算符2.4運算符與表達式用關系運算符將兩個表達式連接起來的式子稱為關系表達式。其中,表達式可以是算術表達式或關系表達式,也可以是隨后將要學習到的邏輯表達式和字符表達式。例如:'a'+1<cm+10==-i-3*j由于關系表達式中的表達式也可以又是關系表達式。因此,C語言也允許出現(xiàn)嵌套的情況。例如:a!=(c==d)關系表達式的值是一個邏輯值,即“真”或“假”,分別用“1”和“0”表示。如(a=3)>(b=5),由于3>5不成立,故其值為0。3.關系表達式4.關系運算符的優(yōu)先次序1.關系運算符2.4.4關系術運算符2.4運算符與表達式例2.9關系表達式應用舉例。#include<stdio.h>main(){ charc='k';

inti=4,j=2,k=5; floatx=3e+5,y=7.56; printf("%d,%d\n",'a'+3<c,-i-2*j>=k+1);

printf("%d,%d\n",j<6,x-4.85<=x+y);

printf("%d,%d\n",i+j+k==-3*j,k==j==i+7);}程序的運行結果為:1,01,1

0,03.關系表達式4.關系運算符的優(yōu)先次序1.關系運算符2.4.4關系術運算符2.4運算符與表達式例2.10設變量定義如下:chara1='a',a2='A';/*a1、a2可以看成整型,其值分別為97、65*/

intn1=65,n2=97;floatf1=0.3E1,f2=3.0001;則:a1>a2、n1<n2、f1==f2的值依次是1、1、0。a1>=n1、a2>=n2、f1==n1、a1==n2的值依次是1、0、0、1。f1>a1、f2<a2、f1==n1-62的值分別為0、1、1。2.邏輯運算符的優(yōu)先級和結合性2.4.5邏輯運算符2.4運算符與表達式C語言中的邏輯運算符對兩個關系式或邏輯值進行運算,共有邏輯與(&&)、邏輯或(||)、邏輯非(!)三個運算符。其中邏輯與和邏輯或是雙目運算符,邏輯非是單目運算符。邏輯運算符的運算規(guī)則常用真值表表示,如表所示。1.邏輯運算符及其運算規(guī)則3.邏輯表達式aba&&ba||b!a000010101110010111102.邏輯運算符的優(yōu)先級和結合性2.4.5邏輯運算符2.4運算符與表達式邏輯運算符中邏輯非“!”的優(yōu)先級最高,其次是邏輯與“&&”,最后是邏輯或“||”。與其他運算符相比,邏輯非的優(yōu)先級高于算術運算符(當然也高于關系運算符)和賦值運算符,而邏輯與和邏輯或高于賦值運算符,但低于算術運算符和關系運算符,詳見附錄一。1.邏輯運算符及其運算規(guī)則3.邏輯表達式優(yōu)先級2.邏輯運算符的優(yōu)先級和結合性2.4.5邏輯運算符2.4運算符與表達式

三種邏輯運算符的結合性如下所述:(1)邏輯運算符“!”的結合性是自右向左的,也就是先計算最右邊的“!”,再依次向左計算其他的邏輯運算。例如:“!!!!8”的計算順序相當于“!(!(!(!8)))”,其結果為1。(2)邏輯運算符“&&”和“||”的結合性是自左向右的,即先計算最左邊的“&&”或“||”,再依次向右計算其他的“&&”或“||”。例如:“8&&2&&0”的計算順序相當于“(8&&2)&&0”,表達式的結果為0。1.邏輯運算符及其運算規(guī)則3.邏輯表達式結合性2.邏輯運算符的優(yōu)先級和結合性2.4.5邏輯運算符2.4運算符與表達式用邏輯運算符連接關系表達式或其他任意數(shù)值型表達式就構成邏輯表達式。通常用邏輯運算符連接關系表達式,這時先計算關系表達式的值,然后再進行邏輯運算。C語言規(guī)定任何非0值都被視為邏輯真,而0則被視為邏輯假。例如:下面的表達式是判斷變量char1的值是不是字母:char1>='A'&&char1<='Z'||char1>='a'&&char1<='z'1.邏輯運算符及其運算規(guī)則3.邏輯表達式2.邏輯運算符的優(yōu)先級和結合性2.4.5邏輯運算符2.4運算符與表達式例2.11判斷某一年是否為閏年。判斷閏年的條件是符合下面兩者之一:①能被4整除,但不能被100整除。②能被4整除,又能被400整除。上面的閏年判斷條件可以用下面的邏輯表達式表示:(year%4==0&&year%100!=0)||year%400==0判斷非閏年的邏輯表達式為:!((year%4==0&&year%100!=0)||year%400==0)或者(year%4!=0)||(year%100==0&&year%400!=0)1.邏輯運算符及其運算規(guī)則3.邏輯表達式2.邏輯運算符的優(yōu)先級和結合性2.4.5邏輯運算符2.4運算符與表達式邏輯運算符、算術運算符和關系運算符之間的優(yōu)先級比較如表所示。1.邏輯運算符及其運算規(guī)則3.邏輯表達式運算符優(yōu)先級邏輯非(?。└叩退阈g運算符關系運算符邏輯與(&&)和邏輯或(||)2.邏輯運算符的優(yōu)先級和結合性2.4.5邏輯運算符2.4運算符與表達式在一個邏輯表達式中,如果有多個邏輯運算符,如下面的表達式:!m&&n||a<b&&c則C語言將按以下原則進行處理:(1)邏輯運算符!優(yōu)先于邏輯運算符&&,邏輯運算符&&又優(yōu)先于邏輯運算符||,即“!”為三者中最高的。(2)邏輯運算符中的“&&”和“||”低于關系運算符,而“!”高于算術運算符。例如:(m<n)&&(a>=b)可以寫成m<n&&a>=b。1.邏輯運算符及其運算規(guī)則3.邏輯表達式2.4.6逗號運算符和條件表達式2.4運算符與表達式1.逗號運算符和逗號表達式2.條件運算符在C語言中逗號(,)也是一種運算符,稱為逗號運算符。其功能是把兩個表達式連接起來組成一個表達式,稱為逗號表達式,有時也稱為“順序求值運算符”。如:8+9,6+3逗號表達式的一般形式為:表達式1,表達式2表達式的求值過程為:首先分別求兩個表達式的值,得出結果后,以表達式2的值作為整個逗號表達式的值。例如,求逗號表達式“8+9,6+3”的值時,首先得出兩個表達式的值分別為17,9;然后整個逗號表達式的值為9。2.4.6逗號運算符和條件表達式2.4運算符與表達式1.逗號運算符和逗號表達式2.條件運算符條件運算符由“?”和“:”組成,是一個三目運算符。其中,第一個運算對象可以是任何類型的表達式,通常按邏輯表達式來理解,后兩個運算對象是類型相同的任何表達式。條件運算符的語法格式為:表達式1?表達式2:表達式3表達式1條件表達式取表達式2的值條件表達式取表達式3的值真(非0)假(0)2.4.6逗號運算符和條件表達式2.4運算符與表達式1.逗號運算符和逗號表達式2.條件運算符例2.12條件運算符應用舉例。#include<stdio.h>main(){int

m,n,max;

printf("\nPleaseinputtwonumbers:");

scanf("%d,%d",&m,&n);/*輸入兩個整數(shù)*/

printf("max=%d",m>n?m:n);/*用條件運算符求兩個數(shù)的最大值*/}程序的運行情況為(用↙代表回車符):Pleaseinputtwonumbers:45,690↙max=6902.4.7長度(求字節(jié))運算符2.4運算符與表達式1.長度運算符2.例2.13長度運算符sizeof是一種單目運算符,用來求某一類型變量的長度。其運算對象可以是任何數(shù)據(jù)類型符或變量。其語法格式為:

sizeof(表達式)其中的表達式可以是變量名、常量以及數(shù)據(jù)類型名。其功能是求表達式中變量名所代表的存儲單元所占的字節(jié)數(shù);或求表達式中常量的存儲單元所占的字節(jié)數(shù);或是求表達式中的數(shù)據(jù)類型表示的數(shù)據(jù)在內(nèi)存單元中所占的字節(jié)數(shù)。2.4.7長度(求字節(jié))運算符2.4運算符與表達式1.長度運算符2.例2.13#include<stdio.h>main(){ intn; shorts; unsignedshorta; unsignedintu1; longu2; unsignedlongu3; floatf; charc; doubled;

printf("sizeof(n)=%d\n",sizeof(n));2.4.7長度(求字節(jié))運算符2.4運算符與表達式1.長度運算符2.例2.13

printf("sizeof(s)=%d\n",sizeof(s));

printf("sizeof(long)=%d\n",sizeof(long));

printf("sizeof(unsigned

int)=%d\n",sizeof(unsigned

int));

printf("sizeof(unsignedshort)=%d\n",sizeof(unsignedshort)); printf("sizeof(u3)=%d\n",sizeof(u3));

printf("sizeof(f)=%d\n",sizeof(f));

printf("sizeof(double)=%d\n",sizeof(double));

printf("sizeof(c)=%d\n",sizeof(c));}2.4.7長度(求字節(jié))運算符2.4運算符與表達式1.長度運算符2.例2.13程序的運行結果為:sizeof(n)=2sizeof(s)=2sizeof(long)=4sizeof(unsigned

int)=2sizeof(unsignedshort)=2sizeof(u3)=4sizeof(f)=4sizeof(double)=8sizeof(c)=12.4.7長度(求字節(jié))運算符2.4運算符與表達式1.長度運算符2.例2.13sizeof運算符使用上較靈活,例如,求整型int數(shù)據(jù)所占的字節(jié)數(shù),可以使用以下三種方法:(1)求sizeof(int)。(2)求sizeof(100)。(3)使用inta;定義一個整型變量a,求sizeof(a)。2.4.8賦值運算符2.4運算符與表達式1.簡單賦值運算符2.復合賦值運算符賦值表達式的格式為:變量名=表達式其中“=”稱為賦值號或賦值運算符,賦值表達式的功能是計算“=”右邊表達式的值并存入“=”左邊的變量中。C語言提供兩種賦值運算符:簡單賦值運算符和復合賦值運算符。簡單賦值運算符“=”是一種二元運算符,必須連接兩個運算量,其左邊只能是變量或數(shù)組元素(詳見第4章),右邊可以是任何表達式。例如:a=a+1,b=a+c等是正確的賦值表達式,而2=c,a+2=1等則是錯誤的賦值表達式。2.4.8賦值運算符2.4運算符與表達式1.簡單賦值運算符2.復合賦值運算符復合賦值運算符由簡單賦值運算符“=”和另外一個二元運算符組成,具有計算和賦值雙重功能,共有10種,分別是+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=。其中,前五種復合賦值運算符具有算術運算和賦值的雙重功能;后五種復合賦值運算符則具有位運算和賦值的雙重功能。復合賦值運算符的規(guī)則是:Mop=N等價于M=MopN設op為一個二元運算符,M、N為兩個操作數(shù)。例如:x/=2等價于x=x/2x%=y+5等價于x=x%(y+5)2.強制轉換2.4.9數(shù)據(jù)之間的混合運算2.4運算符與表達式自動轉換發(fā)生在不同數(shù)據(jù)類型的量混合運算時,由編譯系統(tǒng)自動完成。自動轉換遵循的規(guī)則如圖所示。1.自動轉換3.賦值表達式的強制轉換char,shortintunsigneddoublelongfloat級別高級別低2.強制轉換2.4.9數(shù)據(jù)之間的混合運算2.4運算符與表達式強制轉換的格式為:(數(shù)據(jù)類型名)操作對象強制轉換并不改變操作對象的數(shù)據(jù)類型和數(shù)值。例如(float)x確切的含義將x轉換成浮點型參與運算,而x本身的數(shù)據(jù)類型和數(shù)值并沒有任何改變。1.自動轉換3.賦值表達式的強制轉換2.強制轉換2.4.9數(shù)據(jù)之間的混合運算2.4運算符與表達式例2.15高精度整數(shù)轉換成低精度整數(shù)應用舉例。#include<stdio.h>main(){doublem=65536;doublen=65535;

printf("\n%d,%d",(int)m,(int)n);

/*把m和n分別轉換成int型的整數(shù)后輸出*/}1.自動轉換3.賦值表達式的強制轉換程序的運行結果為:0,-12.強制轉換2.4.9數(shù)據(jù)之間的混合運算2.4運算符與表達式例2.16強制類型轉換在函數(shù)參數(shù)方面的應用舉例。#include<math.h>#include<stdio.h>main(){ inta=100; doubleb; b=sqrt((double)a);/*求a的平方根*/

printf("\n%f",b);}1.自動轉換3.賦值表達式的強制轉換程序的運行結果為:10.0000002.強制轉換2.4.9數(shù)據(jù)之間的混合運算2.4運算符與表達式當左邊的變量與右邊的表達式的數(shù)據(jù)類型相同時,不需要進行數(shù)據(jù)類型的轉換。當左邊的變量與右邊的表達式的數(shù)據(jù)類型不相同時,系統(tǒng)負責將右邊的數(shù)據(jù)類型轉換成左邊的數(shù)據(jù)類型。此時會發(fā)生以下兩種情況:(1)轉換后不丟失數(shù)據(jù)(2)轉換后丟失數(shù)據(jù)。1.自動轉換3.賦值表達式的強制轉換2.5.1printf函數(shù)2.5不同數(shù)據(jù)類型的輸出程序中用到printf函數(shù)時要在程序的開頭部分用以下的命令:#include<stdio.h>或#include"stdio.h"printf函數(shù)是C程序設計中用得最多的輸出函數(shù),使用不同的格式轉換符,可以將各種不同類型的數(shù)據(jù)輸出到標準輸出設備上。printf函數(shù)的調用格式為:

printf("格式控制字符串",輸出項清單);其中,函數(shù)中的參數(shù)“格式控制字符串”用來規(guī)定輸出項的格式,包括格式轉換說明符、轉義字符和普通字符三種形式。2.轉義字符2.5.1printf函數(shù)2.5不同數(shù)據(jù)類型的輸出1.格式轉換說明符3.普通字符格式轉換說明符與各個輸出項相對應,用來規(guī)定待輸出項的顯示格式。下表列出了與不同種輸出項對應的常用的格式說明符。格式轉換說明符

功能%d以帶符號的十進制形式輸出整數(shù)(正數(shù)不輸出符號)%f以小數(shù)形式輸出單、雙精度數(shù),隱含輸出6位小數(shù)%c以字符形式輸出,只輸出一個字符%s輸出字符串%e按指數(shù)格式輸出浮點數(shù)(規(guī)格化表示)%g選用%f或%e格式中輸出寬度較小短的一種格式,不輸出無意義的0%u以無符號十進制形式輸出整數(shù)%o以無符號八進制形式輸出整數(shù)(不輸出前導符0)%x以無符號十六進制形式輸出整數(shù)(不輸出前導符0x)2.轉義字符2.5.1printf函數(shù)2.5不同數(shù)據(jù)類型的輸出1.格式轉換說明符3.普通字符

%d格式轉換說明符有以下幾種形式:(1)%d,按整數(shù)的實際長度進行輸出,整數(shù)有幾位就輸出幾位。(2)%md,m為指定的輸出寬度。如果整數(shù)的位數(shù)小于m,則左補空格,如果整數(shù)的位數(shù)大于m,則按實際的位數(shù)輸出。(3)%ld,輸出長整型。長整型的輸出也可以指定寬度,即%mld,有關m的說明見(2)中的介紹。%d2.轉義字符2.5.1printf函數(shù)2.5不同數(shù)據(jù)類型的輸出1.格式轉換說明符3.普通字符

%f用來以小數(shù)的形式輸出實數(shù),有以下幾種用法:(1)%f,不指定字段寬度,由系統(tǒng)自動指定,整數(shù)部分全部輸出,小數(shù)部分輸出6位。(2)%m.nf,指定輸出的實數(shù)的寬度為m,其中n位為小數(shù)位。如果實際長度小于m,則左側補空格。(3)%-m.nf,指定輸出的實數(shù)的寬度為m,其中n位為小數(shù)。如果實際長度小于m,則右側補空格。%f2.轉義字符2.5.1printf函數(shù)2.5不同數(shù)據(jù)類型的輸出1.格式轉換說明符3.普通字符

%c用來輸出單個字符。一個0~255之間的整數(shù)可以用字符形式輸出,字符也可以用0~255之間的整數(shù)形式輸出。例2.20格式控制符“%c”的應用舉例。#include<stdio.h>main(){ inta=100; charch='c';

printf("\na=%d,%c\n",a,a);

printf("ch=%d,%c\n",ch,ch);}%c程序的輸出結果為:

a=100,d

ch=99,c2.轉義字符2.5.1printf函數(shù)2.5不同數(shù)據(jù)類型的輸出1.格式轉換說明符3.普通字符

%s用來輸出字符串。有以下幾種用法:(1)%s,基本字符串輸出形式。(2)%ms,輸出的字符串占m列。如果字符串的長度大于m,按實際長度輸出,如果小于m,則左側補空格。(3)%-ms,輸出的字符串占m列。如果字符串的長度大于m,則按實際長度輸出,如果小于m,則右側補空格。(4)%m.ns,字符串輸出占m列。如果n小于m,則只取字符串左端的n個字符,這些字符輸出在右側,左側補空格;如果n大于m,則n個字符全部輸出。(5)%-m.ns,字符串輸出占m列。如果n小于m,則只取字符串左端的n個字符,這些字符輸出在左側,右側補空格;如果n大于m,則n個字符全部輸出。%s2.轉義字符2.5.1printf函數(shù)2.5不同數(shù)據(jù)類型的輸出1.格式轉換說明符3.普通字符例2.21格式控制符“%s”的應用舉例。#include<stdio.h>main(){char*ch="Human";printf("%s,%7s,%-7s,%7.3s,%-7.3s,%3.2s",ch,ch,ch,ch,ch,ch);}%s程序的輸出結果為(代表空格):Human,Human,Human,Hum,Hum,Hu2.轉義字符2.5.1printf函數(shù)2.5不同數(shù)據(jù)類型的輸出1.格式轉換說明符3.普通字符

%e表示用指數(shù)形式輸出實數(shù),有以下幾種用法:(1)%e,不指定輸出數(shù)據(jù)所占的寬度和數(shù)字部分小數(shù)位數(shù),由系統(tǒng)指定給出的6位小數(shù);指數(shù)部分占5位,其中“e”占1位,指數(shù)符號(+或-)占1位,指數(shù)占3位,例如e+123。按規(guī)范化指數(shù)形式輸出,即小數(shù)點前面只能有1位非零數(shù)字。(2)%m.ne,指定輸出位共占m列,n為小數(shù)的位數(shù)。如果實際長度小于m,則左側補空格。(3)%-m.ne,指定輸出位共占m列,n為小數(shù)的位數(shù)。如果實際長度小于m,則右側補空格。

%e的輸出控制方法和實數(shù)控制字符%f類型,讀者可參考%f的介紹,此處不再重復舉例說明。%e2.轉義字符2.5.1printf函數(shù)2.5不同數(shù)據(jù)類型的輸出1.格式轉換說明符3.普通字符轉義字符主要用于控制數(shù)據(jù)的顯示位置,如換行、換頁、間隔長度。使用轉義字符可以使程序的輸出更加整齊。例2.23轉義字符應用舉例。#include<stdio.h>main(){printf("\na\tb\nc\td");}程序的輸出結果為:a bc d2.轉義字符2.5.1printf函數(shù)2.5不同數(shù)據(jù)類型的輸出1.格式轉換說明符3.普通字符格式控制字符串中除格式控制符和轉義字符以外的其他字符都視為普通字符,與輸出項無關,輸出時按原樣顯示。1.putchar函數(shù)的一般格式2.用putchar函數(shù)輸出字符2.5.2putchar函數(shù)2.5不同數(shù)據(jù)類型的輸出C語言提供的putchar用于單字符的輸出,其調用的一般格式為:putchar(c);其中c是一個字符型常量或變量,也可以是一個不大于255的整型常量或變量。該函數(shù)的功能是向標準輸出設備(一般指屏幕終端)輸出一個字符。程序中用到putchar函數(shù)時要在程序的開頭部分用以下的命令:#include<stdio.h>或#include"stdio.h"1.putchar函數(shù)的一般格式2.用putchar函數(shù)輸出字符2.5.2putchar函數(shù)2.5不同數(shù)據(jù)類型的輸出用putchar輸出可以顯示的字符時,只需把待輸出的字符作為其參數(shù)即可。例如,輸出字符c可以有以下幾種形式:(1)charx;x='c';putchar(x);(2)putchar('c');(3)putchar(99);用putchar還可以輸出不可顯示的字符,例如,輸出一聲響鈴可以用以下兩種形式:(1)putchar(7);(2)putchar('\007');再如用putchar('\n');可以控制換行。2.6.1scanf函數(shù)2.6不同數(shù)據(jù)類型的輸入scanf函數(shù)可以用于所有類型數(shù)據(jù)的輸入,使用不同的格式轉換符可以將不同類型的數(shù)據(jù)從標準輸入設備讀入內(nèi)存。程序中用到scanf函數(shù)時要在程序的開頭部分用以下的命令:#include<stdio.h>或#include"stdio.h"scanf函數(shù)的調用格式為:

scanf("格式控制字符串",地址表列);其中的參數(shù)有“格式控制字符串”和“地址列表”兩項。2.地址列表3.特殊控制4.注意事項常用的格式轉換說明符如表所示。1.格式控制字符串2.6.1scanf函數(shù)2.6不同數(shù)據(jù)類型的輸入格式轉換說明符功能%d用來輸入十進制整數(shù)%o用來輸入八進制整數(shù)%x用來輸入十六進制整數(shù)%f用來輸入實數(shù),可以用小數(shù)形式或指數(shù)形式輸入%e輸入一個浮點數(shù)%c用來輸入單個字符%s用來輸入字符串,將字符串送到一個字符數(shù)組中,在輸入時以非空白字符開始,以第一個空白字符結束。字符串以串結束標志'\0'作為其最后一個字符%h用來輸入短整型數(shù)據(jù)(可用%hd,%ho,%hx)%l用來輸入長整型數(shù)據(jù)(可用%ld,%lo,%lx),以及double型數(shù)據(jù)(用%lf或%le)2.地址列表3.特殊控制4.注意事項scanf函數(shù)中的“地址列表”由一個或幾個地址組成,多個地址之間用逗號隔開。如果格式控制中沒有逗號,則輸入的各個數(shù)之間可以使用一個或多個空格鍵、回車鍵、Tab鍵來分隔。scanf函數(shù)中的“&”是取地址運算符,后面接變量。如:&a表示取變量a的地址,“scanf("%d",&a);”的意思是將輸入的數(shù)據(jù)存放到變量a所指的存儲單元中。1.格式控制字符串2.6.1scanf函數(shù)2.6不同數(shù)據(jù)類型的輸入2.地址列表3.特殊控制4.注意事項#include<stdio.h>main(){

int

a,b,c,d;

printf("Pleaseinputfournumber:\n");

scanf("%d,%d,%d,%d",&a,&b,&c,&d);/*輸入4個整數(shù)*/

printf("Thenumberyouinputare:\n");

printf("%d,%d,%d,%d",a,b,c,d);

/*輸出4個整數(shù)*/}1.格式控制字符串2.6.1scanf函數(shù)2.6不同數(shù)據(jù)類型的輸入例2.24使用scanf輸入4個在整數(shù)程序的輸出結果為(↙表示回車):Pleaseinputfournumber:1,2,3,4↙Thenumber

youinputare:1,2,3,42.地址列表3.特殊控制4.注意事項在百分號“%”之后、轉換控制字符之前加上一個星號“*”時,scanf函數(shù)將正常讀入對應的數(shù)據(jù),但不賦值。例如,%*c將抑制一個輸入的字符;%*d將抑制一個輸入的整數(shù)。1.格式控制字符串2.6.1scanf函數(shù)2.6不同數(shù)據(jù)類型的輸入1)抑制賦值2.地址列表3.特殊控制4.注意事項#include<stdio.h>main(){

int

a,b;

scanf("%d%*c%d",&a,&b);

printf("%d,%d",a,b);/*輸出a和b的值*/}程序的輸出結果為:1.格式控制字符串2.6.1scanf函數(shù)2.6不同數(shù)據(jù)類型的輸入例2.25“*”號應用舉例10,202.地址列表3.特殊控制4.注意事項在百分號“%”之后、轉換控制字符之前加上一個整數(shù),可以規(guī)定從輸入數(shù)據(jù)中接收的字符的個數(shù)。如果連續(xù)輸入的字符個數(shù)超過指定的長度,則多余的字符被截斷;反之若連續(xù)輸入的字符的個數(shù)尚未達到指定的長度而提前遇到分隔符,則只接收分隔符之前的字符。1.格式控制字符串2.6.1scanf函數(shù)2.6不同數(shù)據(jù)類型的輸入2)限制接收字符的個數(shù)2.地址列表3.特殊控制4.注意事項#include<stdio.h>main(){int

a,b;

printf("Pleaseinputtwonumber:\n");scanf("%4d%4d",&a,&b);

printf("a=%d,b=%d\n",a,b);}程序的輸出結果為:1.格式控制字符串2.6.1scanf函數(shù)2.6不同數(shù)據(jù)類型的輸入例2.26限制接收字符個數(shù)特殊控制舉例a=123,b=32652.地址列表3.特殊控制4.注意事項在使用scanf函數(shù)時需要注意以下幾個問題:(1)用%c作格式控制字符時,輸入的任何字符均被當成有效的輸入。(2)可以規(guī)定輸入的字符的寬度,系統(tǒng)對輸入的數(shù)據(jù)自動截取。(3)輸入實數(shù)時,不能規(guī)定精度。(4)至少有一個輸入項,輸入項必須用地址表示。(5)格式轉換說明符以外的字符按原樣輸入。1.格式控制字符串2.6.1scanf函數(shù)2.6不同數(shù)據(jù)類型的輸入2.地址列表3.特殊控制4.

溫馨提示

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

最新文檔

評論

0/150

提交評論