清華大學C語言課件-數(shù)據(jù)變量與輸入輸出_第1頁
清華大學C語言課件-數(shù)據(jù)變量與輸入輸出_第2頁
清華大學C語言課件-數(shù)據(jù)變量與輸入輸出_第3頁
清華大學C語言課件-數(shù)據(jù)變量與輸入輸出_第4頁
清華大學C語言課件-數(shù)據(jù)變量與輸入輸出_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Lesson2數(shù)據(jù)、變量與輸入輸出#include<stdio.h>#definePI3.1415926doubleS(doubler){ return4*PI*r*r;}doubleV(doubler){return4.0/3.0*PI*r*r*r;}intmain(){ doubler;

scanf("%lf",&r);

printf(“表面積為:%lf,體積為:%lf\n",S(r),V(r));return0;}這些都是C語言的標識符標識符只能由字母、數(shù)字和下劃線組成,且不能以數(shù)字開頭。用來標識變量名、符號常量名、數(shù)組名、函數(shù)名、結(jié)構(gòu)名、自定義類型名等。注意:關(guān)鍵字不能作為標識符。C語言區(qū)別標識符的大小寫字母,大小寫不同的標識符是不同的。標識符盡量取成有意義的名字,以便閱讀程序方便。例:判斷下列標識符號合法性sumSum

M.D.JohndayDate3daysstudent_name#33 charlotus_1_2_3a>b_above$123M.D.John3days#33char$123a>b

.字符非法數(shù)字3不可作首字符

#字符非法

char是關(guān)鍵字

>字符非法$不可作首字符在VC中(標識符)的有效長度可達到255我們先來看看C程序中的一些基本元素是怎樣使用的:#include<stdio.h>#definePI3.1415926doubleS(doubler){ return4*PI*r*r;}doubleV(doubler){return4.0/3.0*PI*r*r*r;}voidmain(){ doubler;

scanf("%lf",&r);

printf(“表面積為:%lf,體積為:%lf\n",S(r),V(r));}這些都是C語言的關(guān)鍵字

C語言的關(guān)鍵字共有32個,屬于C編譯器的控制命令;根據(jù)關(guān)鍵字的作用,可分其為數(shù)據(jù)類型關(guān)鍵字、控制語句關(guān)鍵字、存儲類型關(guān)鍵字和其它關(guān)鍵字四類。32個C語言關(guān)鍵字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile程序設計語言的基本規(guī)則

常數(shù)變量運算符表達式函數(shù)什么是語言規(guī)則?為什么要有這些規(guī)則?

把自然語言描述問題的方式轉(zhuǎn)換為C語言的形式表達給計算機規(guī)則表達式常數(shù)變量函數(shù)運算符31常數(shù)3、5和3.6的存放空間是否相同?變量a如何表示?如何存放?計算機如何知道3.6和a之間的關(guān)系?

和sinx如何輸入?如何存放?計算機如何識別“=”?運算結(jié)果放在哪里?計算機完成上述計算,首先要解決數(shù)據(jù)的輸入和存放問題問題數(shù)據(jù)屬于不同類別AfricaThequickbrownfoxTRUE數(shù)據(jù)非數(shù)值數(shù)值整型非整型9002.129999/12/20032.175123JackieChanchar數(shù)據(jù)類型非數(shù)值數(shù)值整型intshortintlongintdoublefloat非整型3C的基本數(shù)據(jù)類型2數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進行的操作基本數(shù)據(jù)類型說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機器環(huán)境不同而不同,上表以VC++6.0為例1、常量在程序運行中,其值保持不變的量稱為常量整型100,125,-100,0,0101,0x41,實型3.14,0.125,-3.789,-2.67e-12字符型‘a(chǎn)’,‘b’,‘2‘,‘\101‘,‘\x41‘字符串“a”,“ab”,”1232”常量的表示方法:C語言表示數(shù)據(jù)的基本形式符號常量:用標識符代表常量定義格式:#define

符號常量常量例符號常量舉例#definePRICE30main(){

int

num,total;num=10;total=num*PRICE;

printf("total=%d",total);}運行結(jié)果:total=300符號常數(shù)定義規(guī)則#defineMAXSIZE20#defineWELCOME"Welcometoyou!"#definePI3.1433整型常量(整常數(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問題:0123=(

)100x123=()100xff=()10問題:0123=(83

)100x123=(291)100xff=(255)10實型常量(實數(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ù)實型數(shù)據(jù)在輸出時,按規(guī)格化形式輸出字符常量定義:用單引號括起來的單個普通字符或轉(zhuǎn)義字符.字符常量的值:該字符的ASCII碼值存儲形式:1字節(jié)如‘a(chǎn)’‘A’‘?’‘\n’‘\101’'''5''p''$'

有效的字符型值"2"

'2'

正確'2'+'2'=4X值符號值符號值符號0空字符44,91[32空格45-92\33!46.93]34"47/94^35#48~570~9

95-36$58:96`37%59;97~122a~z38&60<123{39'61=124|40(62>125}41)63?126~42*64@127DEL(Delete鍵)43+65~90A~Z

如‘A’——65,‘a(chǎn)’——97,

‘0’——48,‘\n’——10如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------()例:‘A’-------’\101’-------’\x41’--------65轉(zhuǎn)義字符:反斜線后面跟一個字符或一個代碼值表示例轉(zhuǎn)義字符舉例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é)果:屏幕顯示:=打印機輸出:¥C允許以’\’開頭的特殊字符12字符常量與字符串常量不同字符串常量定義:用雙引號(“”)括起來的字符序列存儲:每個字符串尾自動加一個‘\0’作為字符串結(jié)束標志hello\0例字符串“hello”在內(nèi)存中的存儲形式aa\0例‘a(chǎn)’“a”例空串“”\0例:charch;

ch=“A”;例:charch;

ch=‘A’;

int

x=23;23FF024BytesRAM例:

inta=2,b,c=4;floatdata=3.67;charch=‘A’;

intx=1,y=1,z=1;

intx=y=z=1;例1

intstudent;

stadent=19;//Undefinedsymbol‘statent’infunctionmain

例2floata,b,c;c=a%b;//Illegaluseoffloatingpointinfunctionmain

變量定義位置:一般放在函數(shù)體中或復合語句中所有執(zhí)行語句前面。變量初始化與賦值:定義時給以數(shù)據(jù)叫初始化,語句中給值,叫賦值,根據(jù)使用情況,初始化時,可以不給值。給變量賦值,除了給一個直接的值以外,還可以通過計算獲得。如:inta=5,b=8,c;floatx1=6.27,x2,x3=5.94;

charch='a',kk='A';2.變量與內(nèi)存概念:其值可以改變的量每一個變量有名字,類型,大小和值變量名對應于它在內(nèi)存中的位置當一個新的值被放進變量時,它將替換掉以前的值從內(nèi)存中讀取變量的值不會改變它變量定義的一般格式:x=90;90printf(“%d”,x);合法標識符決定分配字節(jié)數(shù)和數(shù)的表示范圍變量初始化:定義時賦初值變量的使用:先定義,后使用整型變量占字節(jié)數(shù)隨機器不同而不同,一般占一個機器字short≤int≤long可用sizeof(類型標識符)測量實型變量float:占4字節(jié),提供7位有效數(shù)字double:占8字節(jié),提供15~16位有效數(shù)字字符型變量字符變量存放字符ASCII碼char與int數(shù)據(jù)間可進行算術(shù)運算例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/沒有字符串變量,用字符數(shù)組存放例

main()

{intx,y,z,w;

unsignedintk;

x=10;y=-20;k=30;

z=x+k;w=y+k;

printf(″x+k=%d,y+k=%d\n″,z,w);}程序上機運行結(jié)果為:

x+k=40,y+k=10例main()

{charc1,c2;

c1=′a′;c2=′b′;

c1=c1-32;c2=c2-32;

printf(″%c%c″,c1,c2);}

運行結(jié)果為:

AB有符號負整數(shù)

-10符號位11111111111101101111111111110110RAM11111111111111111111111111111111低地址(首地址)低地址(首地址)符號位00000000000010100000000000001010RAM00000000000000000000000000000000低地址(首地址)低地址(首地址)有符號正整數(shù)

1011111111111111111111111111111111RAM11111111111111111111111111111111無符號整數(shù)的所有二進制位都存放數(shù)值。無符號整數(shù)

4294967295u0111111111111111111111111111111110000000000000000000000000000000int型最大:+2147483647最小:-214748364801111111111111111000000000000000short型最大:+32767最小:-3276811111111111111110000000000000000最大65535最小:0unsignedshort型1111111111111111111111111111111100000000000000000000000000000000unsignedint型最大:4294967275最小:00111111111111111111111111111111110000000000000000000000000000000long型最大:+2147483647最小:-21474836481111111111111111111111111111111100000000000000000000000000000000unsignedlong型最大:4294967275最小:0一個字節(jié)0111111111111111111111111111111110000000000000000000000000000000a=a+1;(-2147483648)整型有符號數(shù)的溢出inta=1;00000000000000000000000000000001inta=2147483647;inta=-2147483648;1000000000000000000000000000000001111111111111111111111111111111a=a-1;(2147483647)inta=-1;11111111111111111111111111111111浮點數(shù)的類型和大小在微機中,不同類型的浮點型數(shù)據(jù)在內(nèi)存中占的字節(jié)數(shù)如下表:類型名稱類型說明符字節(jié)數(shù)有效數(shù)字數(shù)值范圍單精度float46~710-37~1038雙精度double815~1610-307~10308長雙精度longdouble1018~1910-4931~104932浮點數(shù)的存儲浮點型數(shù)據(jù)在內(nèi)存中按指數(shù)形式存放。舉例

3.141590(0.314159)100(1)10數(shù)符小數(shù)部分階符階碼+0.314159×10+1由此可見,小數(shù)部分的寬度決定了有效數(shù)字(精度),階碼部分的寬度決定了數(shù)值范圍。#include<stdio.h>intmain(){ floatr=100; printf("r=%d\n",r); return0;}定點整數(shù)定點小數(shù)字符數(shù)據(jù)的存儲在內(nèi)存中,是把一個字符的ASCII碼以二進制形式存放的,占一個字節(jié)。例如:charc1,c2;c1=‘a(chǎn)’;c2=‘b’;01100001字符a的ASCII碼(值)為97c101100010字符b的ASCII碼(值)為98c2與整型數(shù)據(jù)的存儲形式類似,因此兩者之間的轉(zhuǎn)換非常方便,可以把字符數(shù)據(jù)當作整型數(shù)據(jù)來用。例

#definePRICE12.5main(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a(chǎn)’;

printf(“total=%f,ch1=%c\n”,total,ch1);}運行結(jié)果:total=37.500000,ch1=d變量的作用域:局部變量在定義的函數(shù)內(nèi)或復合語句內(nèi)有效實型數(shù)據(jù)的舍入誤差由于實型變量是由有限的存儲單元組成的,因此能提供的有效數(shù)字總是有限的,在有效位以外的數(shù)字將被舍去。由此可能會產(chǎn)生一些誤差例:

main()

{floata,b;

a=123456,789e5;

b=a+20;

printf("%f",b);}輸入輸出是以計算機主機為主體而言的。輸出:從計算機向外部輸出設備輸出數(shù)據(jù)。輸入:從外部通過輸入設備向計算機輸入數(shù)據(jù)。C語言中數(shù)據(jù)的輸入、輸出是由函數(shù)來實現(xiàn)的。字符輸入函數(shù):getchar字符輸出函數(shù):putchar格式輸入函數(shù):scanf格式輸出函數(shù):printf它們的原型都在stdio.h

中主機鍵盤磁盤光盤掃描儀……顯示器打印機磁盤……3輸入和輸出5#include<stdio.h>程序中必須包含stdio.h

頭文件例:字符輸出#include<stdio.h>main(){chara;intb;a=‘B’;b=79;

putchar(a);putchar(‘\n’);

putchar(b);putchar(‘\n’);

putchar(‘Y’);}BOY3輸入和輸出5使用說明putchar(字符);可以是以下數(shù)據(jù):字符型變量整型變量字符型常量轉(zhuǎn)義字符例:字符輸入#include<stdio.h>main(){charc;c=getchar();

putchar(c);}aaabca989123使用說明:只讀取一個字符該字符可賦給字符變量、整型變量或作為表達式的一部分輸入/輸出函數(shù)

(printf/scanf)用于接受和顯示數(shù)據(jù)或信息#include<stdio.h>voidmain(){

intnum;

printf("請輸入一個數(shù):");

scanf("%d",&num);

printf("\n%d

的平方為

%d\n",num,num*num);}轉(zhuǎn)換字符串轉(zhuǎn)義序列格式輸入、輸出格式輸出printf

按格式控制字符串規(guī)定的格式,向指定的輸出設備輸出輸出表列中的輸出項。使用說明格式控制字符串由雙引號括起來的字符串,用于指定輸出格式輸出表列需要輸出的數(shù)據(jù)列表,彼此間用逗號分隔可以是任意合法的表達式23.5s78120fRAM格式控制字符串

printf(“n=%5d,f=%5.2f\n”,n,f)普通字符原樣輸出格式說明符(轉(zhuǎn)換規(guī)則)%[修飾符]格式字符指定數(shù)據(jù)的輸出格式printf的格式字符格式字符功能d,i以十進制有符號形式輸出整數(shù)(正數(shù)不輸出符號)o以八進制無符號形式輸出整數(shù)(不輸出前綴)x,X以十六進制無符號形式輸出整數(shù)(不輸出前綴)u以十進制無符號形式輸出整數(shù)f以小數(shù)形式輸出單、雙精度實數(shù)e,E以指數(shù)形式輸出單、雙精度實數(shù)g,G選用%f和%e格式中輸出寬度較短的一種,不輸出無意義的零c以字符形式輸出,輸出一個字符s輸出字符串printf的修飾符修飾符意義l用于長整型和雙精度實型數(shù)據(jù),可加在格式字符d、o、x、u、f前面。m(正整數(shù))數(shù)據(jù)最小寬度。n(正整數(shù))對于實數(shù),表示輸出n位小數(shù);對于字符串,表示截取的字符個數(shù)。-輸出的數(shù)字或字符在域內(nèi)向左靠,右邊填空格。#當整數(shù)以八進制或十六進制形式輸出時,輸出前綴??杉釉诟袷阶址鹢、x前面。printf的格式說明符小結(jié)格式字符形式d,i%d,%md,%-md,%ld,%mld,%-mld,%i,……o%o,%mo,%-mo,%lo,%mlo,%-mlo,%#o,……x,X%x,%mx,%-mx,%lx,%mlx,%-mlx,%#x,……u%u,%mu,%-mu,%lu,%mlu,%-mluf%f,%mf,%m.nf,%lf,……e,E%e,%me,%m.ne,……g,G%gc%cs%s,%ms,%m.ns,……例:格式輸出#include<stdio.h>main(){inta=97,b=-1;floatf=123.4;

printf(“%d,%c\n”,a,a);

printf(“%d,%o,%x,%u\n”,b,b,b,b);

printf(“%f,%e,%gEND\n”,f,f,f);}例:格式輸出main(){inta=1,b=2,c=3;

printf(“%d,%d,%d,%d\n”,a,b,c);

printf(“%d,%d,%d\n”,a,b,c,a+b+c);}1,2,3,01,2,3格式說明符和輸出項在數(shù)量和類型上應該一一對應。例:格式輸出main(){inti=3;

printf("%d,%d\n",i,i++);}3,3不同的編譯系統(tǒng)對輸出表列中的求值順序不一定相同。格式輸入scanf

按格式控制字符串規(guī)定的格式,從指定的輸入設備輸入數(shù)據(jù),并存放到地址表列中的各地址項指定的變量中使用說明格式控制字符串由雙引號括起來的字符串,用于指定輸入格式地址表列由若干個變量的地址組成23.5s78RAM格式輸入 scanf(“%d,%d”,&a,&b)取地址運算符:&&<變量>得到變量在內(nèi)存中的地址。FF00FF02abscanf的格式字符格式字符功能d,i以十進制形式輸入有符號整數(shù)o以八進制形式輸入無符號整數(shù)x,X以十六進制形式輸入無符號整數(shù)u以十進制形式輸入無符號整數(shù)f以小數(shù)形式或指數(shù)形式輸入實數(shù)e,E,g,G同f,它們之間可以互換c輸入單個字符s輸入字符串scanf的修飾符修飾符意義l用于輸入長整型和雙精度實型數(shù)據(jù),可加在格式字符d、o、x、u、f、e前面。h用于輸入短整型數(shù)據(jù)。m(正整數(shù))域?qū)挘付ㄝ斎霐?shù)據(jù)所占的寬度。*表示本輸入項讀入后不賦給相應的變量,即跳過該輸入值。scanf的格式說明符小結(jié)格式字符形式d,i%d,%md,%ld,%mld,%i,……o%o,%mo,%lo,%mlox,X%x,%mx,%lx,%mlxu%u,%mu,%lu,%mluf%f,%mf,%lf,%mlfe,E,g,G%e,%me,%le,%mle,%g,……c%cs%s,%ms格式輸入輸入數(shù)據(jù)時采用的分隔符應與格式控制中的分隔符一致。例1:scanf("%d%f%d",&a,&b,&c);格式符中無普通字符時,可用空格、Tab鍵、回車鍵作分隔符。如:123.45678↙或12<Tab>3.45<Tab>678↙例2:scanf("%d,%f,%d",&a,&b,&c);必須采用格式:12,3.45,678↙例3:scanf("a=%d,b=%d",&a,&b);必須采用格式:a=12,b=345↙格式輸入無符號整數(shù)可用%d、%o、%x格式輸入。輸入格式符帶有*:表示該數(shù)據(jù)不賦值。例:scanf("%d%*d%d",&a,&c);鍵入:1234567↙則a=12,c=567,而34未賦值。數(shù)據(jù)輸入時不可規(guī)定精度,但可確定寬度。例1:scanf(“%3f%3c”,&a,&b);

合法。例2:scanf(”%3.2f%3c”,&a,&b);

非法。格式輸入舉例:main(){cha

溫馨提示

  • 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

提交評論