版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第2章基本數(shù)據(jù)類型與簡單程序設(shè)計第2章基本數(shù)據(jù)類型與簡單程序設(shè)計12.1C語言的基本數(shù)據(jù)類型
2.1.1常用標(biāo)準(zhǔn)數(shù)據(jù)類型類型標(biāo)識符名
稱字節(jié)數(shù)范
圍char字符型1-27~+27-1(-128~+127)short短整型2-215~+215-1(-32768~32767)int或long長整型4-231~+231-1(-2147483648~2147483647)float浮點型(實型)410-37~10+38(絕對值)double雙精度浮點型810-307~10+308(絕對值)說明:在Dev-C++或visualc中,int同long,在winTC中,int等同short。2.1C語言的基本數(shù)據(jù)類型2.1.1常用標(biāo)準(zhǔn)數(shù)據(jù)類22.1.2無符號類型如果在short或char類型標(biāo)識符前面加上關(guān)鍵字unsigned,則表示無符號類型,其值為非負(fù)整數(shù)類型標(biāo)識符名稱字節(jié)數(shù)范圍unsignedchar無符號字符型10~255unsignedshort無符號短整型20~65535unsignedint或unsignedlong無符號長整型40~42949672952.1.2無符號類型如果在short或char類型標(biāo)識符前32.2常量和變量2.2.1常量和符號常量在程序的運行過程中,其值保持不變的量稱為常量。 #definePI3.1415926
此后,凡在文件中出現(xiàn)的PI均可用3.1415926來代替。2.2常量和變量2.2.1常量和符號常量42.2.2整型常量除了我們比較熟悉的整型常量如:100、0、-256之外,
C語言中還有其他形式的整型常量。例子
說明
-1234十進(jìn)制整型常量
(包含數(shù)字0~9)01234八進(jìn)制整型常量(以0開頭,包含數(shù)字0~7)0x1234十六進(jìn)制整型常量(以0x或0X開頭,包含數(shù)字0~9、字母A~F或a~f)0Llong型十進(jìn)制整型常量(以l或L結(jié)尾)2.2.2整型常量除了我們比較熟悉的整5例如:0235等于十進(jìn)制數(shù)157,即
2×82+3×81+5×80=157。
-0X23等于十進(jìn)制數(shù)-35。例如:6任何類型的數(shù)據(jù)在計算機中都是以二進(jìn)制補碼形式存儲的。正數(shù)的補碼等于其原碼,而負(fù)數(shù)的補碼等于其原碼的反碼+1。任何類型的數(shù)據(jù)在計算機中都是以二進(jìn)制補碼形式存儲的。7例如: 0000000001010011 表示 83 1111111110101101 表示 -8300000000000000000000000001010011 表示 83L11111111111111111111111110101101表示 -83L例如:82.2.3浮點型常量C語言中的浮點類型主要分為單精度和雙精度浮點型兩種。以下是合法的十進(jìn)制浮點數(shù)表示:1234.56、-1.2、0.0、.5、6.、1000000000.0。2.2.3浮點型常量C語言中的浮點類型主要分為單精度和雙9浮點數(shù)還可采用科學(xué)表示法,以下是合法的科學(xué)浮點數(shù)表示:1.23456e2、
0.345E-3、-765e12、-.5E-8、6.e-7、1.0e10。浮點數(shù)還可采用科學(xué)表示法,以下是合法的科學(xué)浮點數(shù)表示:10出現(xiàn)在字母e(或E)之前的小數(shù)點,其左邊和右邊應(yīng)有一位數(shù)字在字母e(或E)之后必須是整數(shù)。1.34E1.2、.e2均是非法的浮點數(shù)。出現(xiàn)在字母e(或E)之前的小數(shù)點,其左邊和右邊應(yīng)有一位數(shù)字112.2.4字符型數(shù)據(jù)C的字符常量是用單引號(即撇號)括起來的一個字符。如'*'、'a'、'A'、'&'、'!'等都是字符常量。注意,'a'和'A'是不同的字符常量。字符數(shù)據(jù)存放在內(nèi)存時,并不是字符本身,而是字符的代碼,稱之為ASCII碼。2.2.4字符型數(shù)據(jù)C的字符常量是用單引號(即撇號)括起來12部分字符對應(yīng)的ASCII碼字符
回車
空格
*
+
0
1
2
3
……
9
ASCII碼
13
32
42
43
48
49
50
51
……
57
字符
A
B
C
……
Z
a
b
c……
z
ASCII碼
65
66
67
……
90
97
98
99
……
122
部分字符對應(yīng)的ASCII碼字符回車空格*+0113常用的轉(zhuǎn)義字符有: ‘\n’ 換行符 (將當(dāng)前位置移到下一行開頭) ‘\t’ 水平制表符 (跳到下一個<tab>位置) ‘\b’ 退格 ‘\r’ 回車 (將當(dāng)前位置移到本行開頭) ‘\f’ 走紙 ‘\\’ 反斜杠’\’ ‘\’’ 單引號’ ‘\”’ 雙引號
轉(zhuǎn)義字符看起來是兩個字符,實際上只能算一個字符。常用的轉(zhuǎn)義字符有: ‘\n’ 換行符 (將當(dāng)前位置移到下一行14也可以使用"\"加上一個1~3位的8進(jìn)制數(shù)或"\x"加上一個1~2位的16進(jìn)制數(shù)表示的ASCII碼值來表示轉(zhuǎn)義字符,例如: ‘\0’ 表示 空字符 '\33'或'\033' 表示ESC(27) '\07' 表示響鈴 '\x0A' 表示換行(10)。也可以使用"\"加上一個1~3位的8152.2.5變量在程序的運行過程中,值可以改變的量稱為變量。每個變量都有一個名字,稱為變量名。每個變量均必須進(jìn)行變量說明,指明變量的類型 如:intk=50;2.2.5變量在程序的運行過程中,值可以改變的量稱為變量。16變量名和符號常量名的命名方法相同,都是用標(biāo)識符表示。標(biāo)識符就是一個名字,其命名必須按照一定的規(guī)則進(jìn)行,只能由字母、數(shù)字和下劃線組成,且第一個字符必須為字母或下劃線,不允許使用數(shù)字。如下面是合法的標(biāo)識符。Class_1,_abc1,id,a1b2,sum,total變量名和符號常量名的命名方法相同,都是用標(biāo)識符表示。17 下面是不合法的標(biāo)識符: ab /*標(biāo)識符不能含空格符*/ 1a /*標(biāo)識符不能以數(shù)字打頭*/ #abc /*標(biāo)識符不能使用#*/ xyz-1 /*標(biāo)識符不要把減號“-”和下劃線“_”混淆*/ 下面是不合法的標(biāo)識符:18注意:大寫字符和小寫字符被認(rèn)為是兩個不同的字符。如:a1和A1是兩個不同的變量。變量和符號常量的不同之處在于:變量的值可以改變,而符號常量則不行。注意:大寫字符和小寫字符被認(rèn)為是兩個不同的字符。19例2-1 inti,j,k;
charc1,c2;上面兩行語句定義了3個int型變量i,j,k和2個字符型變量c1、c2例2-120例2-2floatx1,x2; /*定義2個單精度浮點型變量*/doublez1,z2; /*定義2個雙精度變量*/floatx;doubley;x=123456.789;/*給變量賦初值*/y=1.23456789E5;例2-2floatx1,x2; /*定義2個單精度浮212.3賦值語句所謂賦值,就是將一個數(shù)據(jù)存入一個連續(xù)的具有若干存儲單元的存儲空間中,該存儲空間有一個名字,就是前面介紹的變量名。
對一個變量進(jìn)行定義后,這個變量如果沒有進(jìn)行賦值,它的值是不確定的。2.3賦值語句所謂賦值,就是將一個數(shù)據(jù)222.3.1賦值語句的格式與功能一般形式: 變量=表達(dá)式;功能:首先計算賦值號“=”右邊表達(dá)式的值,然后將結(jié)果值送給賦值號“=”左邊的變量。 例如: g=9.8; g=10+20-9;“=”不是等號,而是賦值號。2.3.1賦值語句的格式與功能一般形式:23例2-1 charc1,c2; c1='a'; c2='b';上面定義了2個字符型變量c1,c2,一個字符型變量可存放一個字符。將一個字符常量存放到一個字符變量中,實際上并不是把該字符本身放到內(nèi)存中,而是將該字符的相應(yīng)的ASCII碼存放內(nèi)存單元中。C語言字符型數(shù)據(jù)與整型數(shù)據(jù)之間可以通用。例2-1 charc1,c2;24例2-2
#include<stdio.h> main(){ charc1='a',c2; intk; k=c1;/*將字符型變量c1賦給整型變量k*/ c2=97;/*將整數(shù)97賦給字符型變量c2*/ printf("%c,%c,%d",c1,c2,c1); /*字符變量既可按字符形式輸出,亦可按整型輸出*/ printf("\n%d,%c",k,k); /*整型變量既可按整型形式輸出,亦可按字符型輸出*/ getch(); }運行結(jié)果: a,a,97 97,a例2-2 #include<stdio.h>運行結(jié)果:25例2-3將小寫字母轉(zhuǎn)換成大寫字母。
#include<stdio.h> main() { charc1,c2; inti,j; c1='a'; c2=c1-32;/*c2='A'*/ printf("%c,%c",c1,c2); getch(); }運行結(jié)果:a,A例2-3將小寫字母轉(zhuǎn)換成大寫字母。 #include<262.3.2賦值語句中的類型轉(zhuǎn)換“=”左邊變量與右邊表達(dá)式的數(shù)據(jù)類型不一致時,C編譯系統(tǒng)會自動實現(xiàn)數(shù)據(jù)類型的轉(zhuǎn)換。轉(zhuǎn)換的原則是,將賦值號右邊的表達(dá)式值的類型轉(zhuǎn)換成與左邊變量相同的類型后再賦值。
例如: inta; longb; charc;a=b;/*long型變量b的值變換成int型后再賦給a*/b=a; /*int型變量a的值變換成long型后再賦給b*/b=a+c; /*int型a+c的值變換成long型后再賦給b*/2.3.2賦值語句中的類型轉(zhuǎn)換“=”左邊變量與右邊表達(dá)式的27當(dāng)右邊表達(dá)式值的類型比左邊變量的類型要長時,會對右邊的數(shù)據(jù)進(jìn)行截取,僅取出與左邊變量類型相同的長度,這意味著,會丟失高位字節(jié)或高位字。例2-4 main() {inta=350,b; charc; c=a; b=c; printf("%d,%d,%d",a,c,b); getch(); }運行結(jié)果為: 350,94,94當(dāng)右邊表達(dá)式值的類型比左邊變量的類型要長時,會對右邊的數(shù)據(jù)進(jìn)282.4數(shù)據(jù)的輸出2.4.1字符輸出函數(shù)putchar()函數(shù)putchar()的功能是把一字節(jié)的代碼值所代表的字符輸出到顯示器上。常用格式如下: putchar(c);其中參數(shù)C可以是字符常量、變量或字符表達(dá)式。2.4數(shù)據(jù)的輸出2.4.1字符輸出函數(shù)putcha29例2-5字符輸出函數(shù)putchar()的功能 #include<stdio.h> main(){ charc='A'; putchar(c);/*輸出字符A*/ putchar('\n');/*輸出換行符*/ putchar('#');/*輸出字符#*/ getch(); }例2-5字符輸出函數(shù)putchar()的功能 #inc302.4.2格式化輸出函數(shù)printf()格式化輸出函數(shù)是按指定的格式完成輸出過程。一般使用形式如下: printf("輸出格式串",表達(dá)式表);其中,輸出格式串包含“格式符”或非格式符?!案袷椒币?開頭后面跟一個字母。2.4.2格式化輸出函數(shù)printf()格式化輸出函數(shù)31格式符見表2-4。格式符
功能說明
%c
按字符形式輸出
%d
按十進(jìn)制整數(shù)形式輸出
%o
按八進(jìn)制整數(shù)形式輸出
%x
按十六進(jìn)制整數(shù)形式輸出
%f
按浮點形式輸出,默認(rèn)6位小數(shù)
%m.nf
按浮點形式輸出,顯示寬度不小于m,n位小數(shù)
格式符見表2-4。格式符功能說明%c按字符形式輸出%32printf()函數(shù)的功能是凡遇格式符,就將對應(yīng)的表達(dá)式的值按指定格式輸出到顯示器上,凡遇非格式符,則原樣輸出。輸出格式串中的轉(zhuǎn)換說明符與表達(dá)式的個數(shù)必須相同,它們按各自的先后順序—一對應(yīng),如圖2-2所示。printf()函數(shù)的功能是凡遇格式符,就將對應(yīng)的表達(dá)式33 例如: a=100; b=200; printf("%d+%d=%d\n",a,b,a+b);輸出結(jié)果為:100+200=300(換行) 例如:34例2-8#include<stdio.h>main(){ floatx1=123.5678,x2=-4567.789; printf("x1=%f,x2=%f\n",x1,x2); printf("x1=%8.2f\tx2=%8.2f\n",x1,x2); getch(); /*按任意鍵 */ printf("%c%3c\n",'*','*'); printf("%d%3d\n",11,22);}例2-8#include<stdio.h>35運行結(jié)果為 x1=123.567802,x2=-4567.789062 x1=123.57x2=-4567.79 (按任意鍵后顯示) ** 1122運行結(jié)果為362.5數(shù)據(jù)的輸入數(shù)據(jù)的輸入,一般是以鍵盤為處理對象的,從鍵盤接受字符和數(shù)據(jù)。 字符輸入函數(shù)getchar()和輸出函數(shù)putchar(),是以一個字節(jié)的字符代碼為單位來完成輸入輸出過程的。在程序中使用這兩個函數(shù)時,要求在程序開頭包含頭文件stdio.h。即#include<stdio.h>2.5數(shù)據(jù)的輸入數(shù)據(jù)的輸入,一般是以鍵372.5.1字符輸入函數(shù)getchar()功能是接收從鍵盤上輸入的字符。在程序中使用這個函數(shù)輸入字符時,可以用另一個變量接收讀取的字符,例如: c=getchar();2.5.1字符輸入函數(shù)getchar()功能是接收從鍵38例2-9字符輸入函數(shù)getchar()的功能 #include<stdio.h> main() { charch; ch=getchar(); printf("ch=%c,ch=%d\n",ch,ch);getch(); }當(dāng)執(zhí)行到語句:ch=getchar();時,計算機就會等待用戶擊鍵(等待輸入)。例2-9字符輸入函數(shù)getchar()的功能 #incl392.5.2格式化輸入函數(shù)scanf()scanf()函數(shù)的功能是按指定的格式從鍵盤接受輸入信息。 一般使用格式如下:scanf(“格式串”,地址表);“格式串”中既可以含格式符,也可以含非格式符。輸入時,凡遇非格式符,要求原樣輸入,凡遇格式符,按指定格式輸入數(shù)據(jù)。2.5.2格式化輸入函數(shù)scanf()scanf()40輸入格式符表格式符
功能說明
%c
接收一個字符型數(shù)據(jù)
%d
接收一個整數(shù)型數(shù)據(jù),直到遇到空格、<tab>或回車符
%f
接收一個浮點型數(shù)據(jù)
輸入格式符表格式符功能說明%c接收一個字符型數(shù)據(jù)%d41例2-10從鍵盤上輸入直徑d的值,然后計算圓的面積area和周長len。 #definePI3.1415926 main() { floatd,area,len,r; printf("請輸入直徑的值:"); scanf("%f",&d); r=d/2; area=PI*r*r; len=2*PI*r; printf("半徑r=%f,面積S=%f,周長L=%f\n",r,area,len); }例2-10從鍵盤上輸入直徑d的值,然后計算圓的面積area422.6運算符和表達(dá)式將運算符和運算對象按一定規(guī)則連接起來就成為表達(dá)式.2.6運算符和表達(dá)式將運算符和運算對象按一定規(guī)則連接起來就432.6.1算術(shù)運算符運算符
運算
優(yōu)先級
例子
()圓括號
1
5/(1
–
3)
*
乘法
3
7*3=21
/
除法
3
7/3.0=2.3333337/3=2
%
模除
3
7
%
3
=
1+
加法
4
7
+
3
=
10-
減法
4
7
-
3
=
42.6.1算術(shù)運算符運算符運算優(yōu)先級例子(44說明: 1.模除運算是兩個整數(shù)相除后取余數(shù);要求%兩邊必須是整型數(shù)據(jù)。 2.若算術(shù)運算符兩邊均為整數(shù),則結(jié)果仍為整數(shù)。 例: 7/3=2 1/2=0 3.若參加運算的兩個數(shù)中有一個數(shù)為實數(shù),則結(jié)果為double型。4.每個運算符都有一個優(yōu)先級。如乘除的優(yōu)先級高于加減。說明:45在表達(dá)式求值時,按運算符的優(yōu)先級高低次序進(jìn)行。如先乘除,后加減。()可改變運算次序。若在一個運算符對象兩側(cè)的運算符的優(yōu)先級相同,則按規(guī)定的“結(jié)合方向”處理。有些運算符的結(jié)合方向為“從右到左”,即“右結(jié)合性”。在表達(dá)式求值時,按運算符的優(yōu)先級高低次序進(jìn)行。如先乘除,后加462.6.2自增、自減運算符——
“右結(jié)合性”,優(yōu)先級為2?!?+”為自增運算符,“--”為自減運算符。自增、自減運算表達(dá)式的結(jié)合方向都是自右至左。但++k與k++的不同之處在于:前者先執(zhí)行k=k+1,然后再使用k的值;而后者則先使用k的值,再執(zhí)行k=k+1。2.6.2自增、自減運算符——
“右結(jié)合性”,優(yōu)先級為247例2-11 #include<stdio.h> main() { inti,j,k; k=30; i=k++; /*先將k值30賦給i,再使k值增1,此時k=31,i=30*/ printf("i=%d,k=%d",i,k); j=++k; /*k值先增1,再將k值賦于i,此時k=32,i=32*/ printf("\nj=%d,k=%d",j,k); }運行結(jié)果:i=30,k=31j=32,k=32例2-11 #include<stdio.h>運行結(jié)果:482.6.3賦值運算符——
“右結(jié)合性”,優(yōu)先級為14。賦值運算符為“=”例2-12 main() { floatk,x,y; x=(k=9.8)+7; printf("k=%5.1f,x=%5.1f\n",k,x); y=k=9.8+7; printf("k=%5.1f,y=%5.1f\n",k,y); }運行結(jié)果:k=9.8,x=16.8k=16.8,y=16.82.6.3賦值運算符——
“右結(jié)合性”,優(yōu)先級為14。賦492.6.4逗號運算符逗號運算符將兩個表達(dá)式連接起來。其優(yōu)先級15,最低。格式:表達(dá)式1,表達(dá)式2功能:先求解表達(dá)式1,再求解表達(dá)式2。整個逗號表達(dá)式的值為表達(dá)式2的值。在很多情況下,使用逗號表達(dá)式只是想求出各個表達(dá)式的值。2.6.4逗號運算符逗號運算符將兩個表達(dá)式連接起來。其優(yōu)先50例2-13 main() { inti,j=0123; /*012是八進(jìn)制數(shù),其等價的十進(jìn)制數(shù)是83*/ i=0x3a; /*0x3a是十六進(jìn)制數(shù),其等價的十進(jìn)制數(shù)是58*/ printf("%d,%d\n",i,j); }運行結(jié)果:58,83例2-13 main()運行結(jié)果:512.7常用的數(shù)學(xué)函數(shù)在使用數(shù)學(xué)函數(shù)之前,要求在程序開頭包含頭文件"math.h",即: #include<math.h>以下函數(shù)的參數(shù)類型和函數(shù)值類型均為實型。 sqrt(x) 求x的開平方,x≥0。 pow(x,y) 求xy exp(x) 求ex abs(x) 求x的絕對值,n為int整型數(shù)。 fabs(x) 求x的絕對值,n為double型浮點小數(shù)。 log(x) 求x的對數(shù),以e為底,x>0。 log10(x) 求x的對數(shù),以10為底,x>0。 sin(x) 求x的正弦,x的單位為弧度。 cos(x) 求x的余弦,x的單位為弧度。 tan(x) 求x的正切,x的單位為弧度。 rand() 產(chǎn)生0~32767范圍內(nèi)的整數(shù)隨機數(shù)。2.7常用的數(shù)學(xué)函數(shù)在使用數(shù)學(xué)函數(shù)之前,要求在程序開頭包含52例2-14:輸入一個正數(shù)x,求x的開平方。 #include<math.h> main() { floatx,y; printf("inputx:"); scanf("%f",&x); y=sqrt(x); printf("sqrt(%7.2f)=%7.2f\n",x,y); }運行程序的結(jié)果是:inputx:81↙sqrt(81.00)=9.00例2-14:輸入一個正數(shù)x,求x的開平方。 #include53例2-15:使用pow函數(shù)求冪ab。#include<math.h>main(){fl
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 質(zhì)量問題升級制度
- 財務(wù)審批審核制度
- 落實職工生日制度
- 2026西藏山南市扎囊縣文化和旅游局招聘文旅工作者2人參考考試題庫附答案解析
- 2026上海市普陀區(qū)街道政府專職消防隊伍面向社會招聘96名消防員參考考試試題附答案解析
- 2026國家住房和城鄉(xiāng)建設(shè)部直屬事業(yè)單位第一批招聘3人備考考試試題附答案解析
- 2026北京經(jīng)濟技術(shù)開發(fā)區(qū)衛(wèi)生健康領(lǐng)域事業(yè)單位招聘28人參考考試題庫附答案解析
- 2026河南封丘縣實新學(xué)校教師招聘備考考試題庫附答案解析
- 2026年菏澤單縣事業(yè)單位公開招聘初級綜合類崗位人員(26人)參考考試題庫附答案解析
- 2026浙江省第七地質(zhì)大隊編外人員招聘1人參考考試題庫附答案解析
- 小美滿合唱五線譜總譜
- 《陸上風(fēng)電場工程設(shè)計概算編制規(guī)定及費用標(biāo)準(zhǔn)》(NB-T 31011-2019)
- 介入導(dǎo)管室有關(guān)知識課件
- 騰訊云智慧機場建設(shè)方案
- 2024年黑龍江哈爾濱“丁香人才周”哈爾濱市生態(tài)環(huán)境局所屬事業(yè)單位招聘筆試沖刺題
- 鑄牢中華民族共同體意識課件
- 推廣經(jīng)理半年工作計劃
- 110kV線路運維方案
- 智能化弱電工程常見質(zhì)量通病的避免方法
- 屋頂光伏安全專項施工方案
- 醫(yī)療器械拓展性臨床試驗管理規(guī)定(試行)YY/T-0292.1-2020《醫(yī)用診斷X射線輻射防護(hù)器具》
評論
0/150
提交評論