




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第2章基本數(shù)據(jù)類型●基本數(shù)據(jù)類型的特征●數(shù)據(jù)常量●數(shù)據(jù)類型轉(zhuǎn)換●數(shù)據(jù)的控制臺輸入與輸出引入新課#include“stdio.h”main(){ floata,b,area; a=1.4; b=3.5; area=a*b;
printf("a=%f,b=%f,area=%f\n",a,b,area);}warningC4305:'=':truncationfrom'constdouble'to'float'?C語言數(shù)據(jù)類型基本數(shù)據(jù)類型導出數(shù)據(jù)類型double(雙精度浮點型)long(長整型)char(字符類型)整型short(短整型)int(整型)浮點型float(單精度浮點型)longdouble(長雙精度浮點型)void類型用戶定制類型T*(指針類型)struct{…}(結(jié)構(gòu)體類型)union{…}(共用體類型)文件類型enum(枚舉)函數(shù)類型構(gòu)造類型T[…](數(shù)組類型)C語言提供有豐富的數(shù)據(jù)類型:數(shù)據(jù)類型:存儲結(jié)構(gòu)存儲空間取值范圍操作基本數(shù)據(jù)類型類型符號關(guān)鍵字數(shù)的表示范圍所占位數(shù)整型字符型實型有無(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsigned
int0~65535320~4294967295unsigned
longunsigned
short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~255說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機器硬件不同而不同,上表以IBMPC機為例:(signed)intunsignedint0111111111111111215-1=327671000000000000000-(215)=-327681111111111111111216-1=65535
內(nèi)存中的數(shù)值是以補碼形式存放的,一個正數(shù)的補碼就是該數(shù)的二進制數(shù)(如10的補碼為0000000000001010)。求一個負數(shù)的補碼的方法如下:
如-10的補碼可以這樣求: ①先取該數(shù)的絕對值; 先取10 ②然后以二進制形式表示;
10的二進制碼為 0000000000001010 ③再對其取反; 取反得11111111 11110101 ④然后加1; 加1,得 1111111111110110, 即-10的16位存儲形式為:1111111111110110。一般用大寫字母是宏定義預處理命令,不是C語句直接常量:整型常量實型常量字符常量字符串常量如#definePRICE30常量定義:程序運行時其值不能改變的量(即常數(shù))分類:符號常量:用標識符代表常量定義格式:#define
符號常量常量>>>>例符號常量舉例(ch2_1.c)#definePRICE30main(){
intnum,total;num=10;total=num*PRICE;
printf("total=%d",total);}運行結(jié)果:total=300整型常量(整常數(shù))三種形式:十進制整數(shù):由數(shù)字0~9和正負號表示.如123,-456,0八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123,011十六進制整數(shù):由0x開頭,后跟0~9,a~f,A~F表示.如0x123,0Xff<例12與12L例30000為int型65536為longint
型整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母l或L,認為它是longint
型常量問題:0123=()100x123=()100Xff=()1083291255實型常量(實數(shù)或浮點數(shù))表示形式:十進制數(shù)形式:(必須有小數(shù)點)如0.123,.123,123.0,0.0,123.指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3,123E2,1.23e4,e-5,1.2E-3.5
實型常量的類型默認double型在實型常量后加字母f或F,認為它是float型數(shù)值的浮點表示形式∏值的幾種表示形式:日常的表示法3.14159×1000.0314159×1023141.59×10-3c語言中的表示形式3.14159e00.0314159e+23141.59e-30.0314159+2數(shù)字部分(尾數(shù))指數(shù)(階碼)“數(shù)字部分”的小數(shù)點的位置是“浮動的”,這種形式稱為浮點數(shù)形式。凡實數(shù)都以浮點形式存儲,一個實數(shù)一般用4個字節(jié)存儲。<字符常量定義:用單引號括起來的單個普通字符或轉(zhuǎn)義字符.
字符常量的值:該字符的ASCII碼值如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------(
)例:‘A’-------’\101’-------’\x41’--------65<如‘A’——65,‘a(chǎn)’——97,‘0’——48,‘\n’——10如‘a(chǎn)’‘A’‘?’‘\n’‘\101’轉(zhuǎn)義字符:反斜線后面跟一個字符或一個代碼值表示例轉(zhuǎn)義字符舉例(ch2_001.c,ch2_004.c)
main(){printf("\101\x42C\n");
printf("Isay:\"Howareyou?\"\n");
printf("\\CProgram\\\n");
printf("Turbo\'C\'");}運行結(jié)果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例main(){printf(“Y\b=\n”);}運行結(jié)果:屏幕顯示:=打印機輸出:¥<轉(zhuǎn)義字符及其含義:轉(zhuǎn)義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行垂直制表回車響鈴單引號3位8進制數(shù)代表的字符水平制表退格換頁反斜線雙引號2位16進制數(shù)代表的字符specialchar.c<字符常量與字符串常量不同字符串常量定義:用雙引號(“”)括起來的字符序列存儲:每個字符串尾自動加一個‘\0’作為字符串結(jié)束標志hello\0例字符串“hello”在內(nèi)存中aa\0例‘a(chǎn)’“a”例空串“”\0例:charch;
ch=“A”;例:charch;
ch=‘A’;整型變量占字節(jié)數(shù)隨機器不同而不同,一般占一個機器字short≤int≤long可用sizeof(類型標識符)測量實型變量float:占4字節(jié),提供7位有效數(shù)字double:占8字節(jié),提供15~16位有效數(shù)字sizeof_1.c例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*//******文件名:ex020101.c******//******測定數(shù)據(jù)類型長度******/#include<stdio.h>int
main(void){
inti=0;
printf("char:%dbytes.\n",sizeof(char));
printf("short:%dbytes.\n",sizeof(short));
printf("i:%dbytes\n",sizeof(i)); /*計算變量i的字節(jié)數(shù)*/
printf("long:%dbytes\n",sizeof(long));
printf("float:%dbytes\n",sizeof(float));
printf("double:%dbytes\n",sizeof(double));
printf("1.23456:%dbytes\n",sizeof(1.23456));/*計算常量的字節(jié)數(shù)*/
printf("double:%dbytes\n",sizeof(double)); return0;}字符型變量字符變量存放字符ASCII碼char與int數(shù)據(jù)間可進行算術(shù)運算例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/沒有字符串變量,用字符數(shù)組存放例/*ch2_003.c*/#definePRICE12.5main(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-’A’+’a’;
printf(“total=%f,ch1=%c\n”,total,ch1);}宏定義變量定義輸出結(jié)果運行結(jié)果:total=37.500000,ch1=d小結(jié)1、了解C語言豐富的數(shù)據(jù)類型;常量的概念。2、掌握符號常量定義方法。3、掌握常用基本數(shù)據(jù)類型(整型、實型、字符型)數(shù)據(jù)的常量表示、機內(nèi)存儲、以及掌握正確選擇數(shù)據(jù)類型。2.4數(shù)據(jù)的控制臺輸入與輸出
輸入輸出的對象是數(shù)據(jù),而數(shù)據(jù)是以介質(zhì)為載體的,因此進行輸入輸出操作就要與各種外部設備發(fā)生聯(lián)系,要指定從哪個設備(文件)讀入數(shù)據(jù),將數(shù)據(jù)輸出到哪個設備(文件)上去。本節(jié)只討論從終端(鍵盤)輸入和輸出到終端(顯示器)的輸入輸出函數(shù)。通常也把這些函數(shù)稱為控制臺輸入輸出函數(shù)。主要是用得最廣泛的scanf函數(shù)、printf函數(shù)、getchar函數(shù)和putchar函數(shù)等。其中scanf和printf用于格式化輸入輸出。(1)printf()函數(shù)
printf()函數(shù)的功能是按指定的輸出格式把相應的參數(shù)值在標準輸出設備(通常是終端)上顯示出來。printf和scanf函數(shù)的一般使用轉(zhuǎn)換說明輸出形式應用例子輸出示例%d十進制int型printf("sum=%d\n",sum);sum=2008%f十進制double型printf("a=%f\n",a);a=6.280000%c單個字符printf(“Itis%c\n",c);ItisM%s字符串printf("**%s**\n",s);**Hello!**%o無符號八進制數(shù)printf("Oct=%o\n",oct);Oct=176%x無符號十六進制數(shù)printf("Hex=%x\n",hex);Hex=96AF%%%本身printf("a%%b=%d\n",d);a%b=5表2-6 printf()中常用的轉(zhuǎn)換說明及其作用printf
格式說明字段結(jié)構(gòu)%修飾寬度精度長度修正格式碼a/A,c,d,e/E,f,g/G,i,,n,o,p,s,u,x/X,%l/L,h,ll,hh,j,z,t.十進制整數(shù)十進制整數(shù)-,0,+,空格,#(2)長度修正符長度修正符可修飾的格式碼參數(shù)類型ld,i,o,u,x,Xlong,lld,i,o,u,x,Xlonglong
int,unsignedlonglong
inthd,i,o,u,x,Xshort,unsignedshorthhd,i,o,u,x,Xchar,unsignedcharLa,A,e,E,f,g,Glongdouble(3)域?qū)捙c精度說明域?qū)捙c精度說明的格式為:m.n。其中:
m為輸出域?qū)?,用字符?shù)表示。對實數(shù),包括了一個小數(shù)點的位置。
n為精度,其用法有如下幾種情形:配合格式碼f、e/E時,指定小數(shù)點后面的位數(shù);未指定精度時,默認小數(shù)點后6位。配合格式碼g/G時,指定有效位的數(shù)目。作用于字符串時,精度符限制最大域?qū)?。作用于整型?shù)據(jù)時,指定必須顯示的最小位數(shù),不足時左惻補先導0。
(2)格式控制字符串內(nèi)的格式說明個數(shù)應與輸出變量表里所列的變量個數(shù)吻合,類型一致。使用函數(shù)printf()必須注意的問題(1)格式控制串必須在雙引號內(nèi)。(3)對輸出變量表里所列諸變量(表達式),其計算順序是自右向左進行的。因此,要注意右邊的參數(shù)值是否會影響到左邊的參數(shù)取值。(2)也要特別注意函數(shù)printf()中格式說明%d與輸出變量的對應關(guān)系是從左往右一一對應。#include"stdio.h"main(){
intx=4;
printf("%d\t%d\t%d\n",++x,++x,--x);}(1)要特別注意函數(shù)printf()對輸出變量表里所列諸變量(表達式)的計算順序是自右向左進行的。printf("%d\t%d\t%d\n",++x,++x,--x);對應關(guān)系第1計算第2計算第3計算#include"stdio.h"main(){
intx=4;
printf("%d\t%d\t%d\n",++x,++x,--x);}(3)因此,在printf()輸出前,應該先計算---x,再計算中間的++x,最后計算左邊的++x。所以,該程序執(zhí)行后的輸出是:
5
4
3而不是:
5
6
5想一想:printf("%d\t%d\t%d\n",x++,x++,x--);/*文件名:ex021001.c*/#include<stdio.h>int
main(void){ printf(“%12.5f\n”,123.1234567); printf(“%12f\n”,123.1234567); printf(“%12.5g\n”,123.1234567); printf(“%5.10s%s\n”,”abcdefghijklm”,”a”); printf(“%12.8d\n”,12345); return0;}執(zhí)行結(jié)果如圖2.8所示。域?qū)?2,精度5123.12346123.123457123.12abcdefghija00012345域?qū)?2,未指定精度,默認6位精度域?qū)?2,有效位5位最少5個字符,最大域?qū)?0域?qū)?2,未必須最少顯示8位,不足時左惻補0(2)scanf()函數(shù)
scanf()函數(shù)的功能是接受用戶從鍵盤上輸入的數(shù)據(jù),按照格式控制符的要求進行類型轉(zhuǎn)換,然后送到由對應參數(shù)指示的變量單元(內(nèi)存空間)中去。.格式輸入函數(shù)scanf()和格式輸出函數(shù)printf(),都在頭文件stdio.h里。使用它們時,在程序的開始處,應該書寫包含命令:#include“stdio.h”。不過由于這兩個函數(shù)在C語言程序設計中使用得太頻繁了,所以即使在程序中沒有寫這條包含命令,編譯也不會出錯(在VC++中會出現(xiàn)警告)。格式輸入函數(shù):scanf()1.scanf(<格式控制字符串>,<輸入地址列表>)參數(shù)<格式控制字符串>是用雙引號括起的字符串常量,里面列出輸入數(shù)據(jù)的格式說明和分隔符;參數(shù)<輸入地址列表>列出存放輸入數(shù)據(jù)的各個變量的地址。轉(zhuǎn)
換
說
明輸
入
形
式
應
用
例
子輸
入
示
例
%d匹配可帶符號的十進制整數(shù)scanf("%d",&a);輸入100,則a為100%f匹配可帶符號的浮點數(shù)scanf("%f",&f);輸入3.14,則a為3.140000%c匹配一個(默認)字符scanf("%c",&c);輸入A,則c為
'A'%s匹配非空白字符序列scanf("%s",line);輸入string,則數(shù)組line中放置string,末尾自動加上空字符%o匹配可帶符號的八進制整數(shù)scanf("%o",&u);輸入754,則u的值為八進制754%x匹配可帶符號的十六進制整數(shù)scanf("%x",&x);輸入123,則x值為十六進制123表2-7 scanf()中常用的轉(zhuǎn)換說明及其作用地址參數(shù)
C語言允許程序員間接地使用內(nèi)存地址,這個地址是通過對變量名“求地址”運算得到的。求地址的運算符為&。例如對于定義:
shorta; floatb;&a給出的是變量a兩字節(jié)空間的首地址,&b給出的是變量b四字節(jié)空間的首地址。2.格式說明字段%寬度長度修正格式碼a/A,c,d,e/E,f,g/G,i,,n,o,p,s,u,x/X,%l/L,h,ll,hh,j,z,t十進制整數(shù)格式碼長度修正符輸入數(shù)據(jù)類型說明d無hhhlllint
charshortlonglonglong輸入帶符號十進制整數(shù),可選加+或-ihhhlllcharshortlonglonglong輸入帶符號整數(shù),可選加+或-以及0(八進制)、0x(十六進制)u無unsigned輸入帶符號十進制整數(shù)ohhunsignedchar輸入無符號八進制整數(shù),可選加+或-xhlllunsignedshortunsignedlongunsignedlonglong輸入無符號十六進制整數(shù),可選加+或-c無char讀取字符s無字符串連續(xù)讀取字符,直到遇到文件結(jié)束符、空白或達到指定字段寬度n無hhhlllint
charshortlonglonglong不讀取字符,而是而是把scanf()所處理的字符總數(shù)寫入到對應參數(shù)指定的變量中。p無地址讀取地址f,e,g,a無lLfloatdoublelongdouble讀取帶符號十進制實數(shù)[]無字符搜索集合只能輸入定義在搜索集合中的字符,例如%[abcdefgh]或%[a-h]%無%讀取%例:
a、b為字符型變量。執(zhí)行“scanf("a=%c,b=%c",&a,&b);”后,要使a為'A'、b為'B',試問在鍵盤上的正確輸入是什么?(1)在scanf()的格式控制字符串里,安排起數(shù)據(jù)分隔作用的一般字符。用戶輸入時,必須按照安排鍵入這些分隔字符。輸入數(shù)據(jù)時,判斷一個數(shù)據(jù)輸入結(jié)束的幾種方法解:
scanf()中,格式控制字符串“a=%c,b=%c”里的a=、,、b=都是一般字符。輸入時,這部分字符用戶必須按原樣從鍵盤鍵入。因此,在鍵盤上的正確輸入應該是:
a=A,b=B↙ /*這里用“↙”表示回車換行符*/用戶在鍵盤上鍵入這樣的輸入后,變量a里就存放字母A的ASCII碼值,b里就存放字母B的ASCII碼值了。(2)在scanf()的格式控制字符串里,不安排任何數(shù)據(jù)分隔符,這時就默認空格符、制表符或回車換行符為數(shù)據(jù)輸入完畢的分隔符。比如:
scanf("%d%d%d",&a,&b,&c);中的格式控制字符串里沒有一般字符。這時,輸完一個數(shù)據(jù)后,就可鍵入空格(或Tab鍵,或Enter鍵),再輸下一個數(shù)據(jù),直到最后輸入回車換行表示整個輸入的結(jié)束。(3)在格式符前冠以附加格式符,指明輸入數(shù)據(jù)的域?qū)?正整數(shù))。比如:
scanf("%3d%2d%4d",&a,&b,&c);%3d里的3就是附加格式符,表示由d限定的十進制數(shù)為3位數(shù)。因此,在鍵盤上連續(xù)鍵入245321258后回車,scanf就會把245存入變量a,把32存入變量b,把1258存入變量c。245321258(1)所有數(shù)據(jù)從鍵盤輸入完畢后,必須以回車換行(即鍵盤上的Enter鍵)作為整個數(shù)據(jù)輸入的結(jié)束。正確使用scanf()函數(shù)必須注意的幾點(2)<輸入地址列表>中給出的必須是一個變量地址,而不能是其他。因此在變量名的前面不要忘記加上取地址符&。(3)<格式控制字符串>中給出的格式說明個數(shù)(即給出的“%”個數(shù)),必須與輸入地址列表中所列變量地址的個數(shù)相一致,因為它們之間應該是一一對應的。/*文件名:ex021401.c*/#include<stdio.h>int
main(void){ doublea,b,c,d;
scanf("%f%f",&a,&b);
printf("\na=%1f,b=%1f\n",a,b);
scanf("%lf%lf",&c,&d);
printf("\nc=%lf,d=%lf\n",c,d); return0;}某次執(zhí)行結(jié)果如下:字符輸入輸出函數(shù)getchar()與putchar()
為了方便字符的輸入輸出,標準C還提供了兩個簡單的庫函數(shù):getchar()和putchar()。它們的原型分別為:int
getchar(void);int
putchar(intc);
putchar(ch);
字符輸入函數(shù)getchar()和字符輸出函數(shù)putchar(),都在頭文件“stdio.h”里。程序中使用時,必須在開始處書寫一條包含命令:
#include"stdio.h"字符輸入函數(shù):getchar()
1.<變量>=getchar();即把由getchar
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 剪紙課題立項申報書
- 事故車交易合同范本
- 上海嘉善房屋出租合同范本
- 高中課題申報書
- 課題申報書亮點
- 臨時用工勞務合同范本 三
- 勞務拆遷采購合同范本
- 合同范本 材料價差調(diào)整
- 勞務公司包工合同范本
- 與中介簽買房合同范本
- 兒童睡眠障礙治療
- 四川省建筑行業(yè)調(diào)研報告
- 北京市豐臺區(qū)2024-2025學年高三上學期期末英語試題
- 2025上海市嘉定工業(yè)區(qū)農(nóng)村青年干部招聘22人歷年高頻重點提升(共500題)附帶答案詳解
- 2025采購部年度工作計劃
- 2025年安徽合肥市軌道交通集團限公司社會招聘24人高頻重點提升(共500題)附帶答案詳解
- 2024年度個人珠寶首飾分期購買合同范本3篇
- 食為天:2024中國食品飲料行業(yè)白皮書
- 醫(yī)學倫理與醫(yī)患溝通技巧
- 個人信息保護:維護個人隱私和數(shù)據(jù)安全
- 5.3.2 函數(shù)的極值與最大(?。┲?第2課時 教學設計
評論
0/150
提交評論