版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章C程序基礎(chǔ)1.1C語(yǔ)言程序的基本結(jié)構(gòu)1.2C語(yǔ)言基本語(yǔ)法成分1.3C語(yǔ)言數(shù)據(jù)類型1.4表達(dá)式和語(yǔ)句1.5C程序運(yùn)行過(guò)程1.6編寫簡(jiǎn)單的C程序1.7數(shù)據(jù)的輸入與輸出1.8C語(yǔ)言宏定義1.9算法1.10C語(yǔ)言的產(chǎn)生、發(fā)展及特點(diǎn)☆☆☆☆☆☆??☆自學(xué)C程序的基本結(jié)構(gòu)
C程序的運(yùn)行過(guò)程
C語(yǔ)言基本語(yǔ)法成分
C語(yǔ)言基本數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出算法第1部分C程序的基本結(jié)構(gòu)例1編寫程序,輸出一句話:ThisisaCprogram!#include<stdio.h>voidmain(){
printf("ThisisaCprogram!\n");}編譯預(yù)處理命令函數(shù)編譯預(yù)處理命令:以#開頭,單獨(dú)占一行,放在程序最前面。#include即文件包含命令,用于把后面指定文件的內(nèi)容包含進(jìn)來(lái)例2輸入兩個(gè)整數(shù),計(jì)算并輸出其和。#include<stdio.h>intmain()
/*主函數(shù)*/{
inta,b,sum;
/*定義三個(gè)整型變量*/
scanf("%d%d",&a,&b);//
輸入值給a,b
sum=a+b;
printf("sumis%d\n",sum);return(0);}說(shuō)明:⑴“/*…*/”表示注釋部分,以“/*”開始,以“*/”結(jié)束;注釋只是對(duì)程序的說(shuō)明,僅起幫助閱讀程序的作用,不影響程序的運(yùn)行,可以放在程序的任意位置。⑵定義變量后,系統(tǒng)就為其分配相應(yīng)大小的存儲(chǔ)單元,用于存放其值。C語(yǔ)言要求變量必須先定義,后使用。absumEG102.C#include<stdio.h>intmain(){inta,b,sum;
scanf("%d%d",&a,&b);sum=a+b;printf("sumis%d\n",sum);return(0);}⑶
scanf用于將輸入的數(shù)按指定的格式送到后面指定的內(nèi)存單元(賦值給變量)?!?d”表示輸入/輸出一個(gè)整數(shù),“&”的含義是得到后面變量的地址。⑷“=”為賦值運(yùn)算符,把右邊表達(dá)式的值賦值給左邊的變量。⑸輸出時(shí)“%d”表示輸出一個(gè)整數(shù)值,該值由“,”后邊對(duì)應(yīng)的變量或表達(dá)式提供。使用scanf函數(shù)可以輸入任意兩個(gè)整數(shù)相加,即程序執(zhí)行前不確定a、b的值,程序運(yùn)行中指定。EG102.C#include<stdio.h>intmain(){inta,b,sum;
scanf("%d%d",&a,&b);sum=a+b;printf("sumis%d\n",sum);return(0);}程序的四個(gè)部分(編寫程序的四個(gè)步驟):EG102.C1、定義變量:定義在本函數(shù)中用到的變量(類型、名字);2、輸入變量的值:確定要處理的對(duì)象的值,也可以賦值;3、計(jì)算:處理計(jì)算對(duì)象,完成各種運(yùn)算;4、輸出:輸出計(jì)算結(jié)果。例3輸入3個(gè)實(shí)數(shù),計(jì)算并輸出其平均值。#include<stdio.h>intmain(){
floata,b,c,aver;
scanf("%f%f%f",&a,&b,&c);//輸入三個(gè)實(shí)數(shù)
aver=(a+b+c)/3;//
為變量aver賦值
printf("averis%f\n",aver);
return(0);}說(shuō)明:⑴float用于聲明實(shí)型變量(精度要求不高時(shí)使用,高精度時(shí)用double類型)。⑵
“%f”表示輸入、輸出一個(gè)float型實(shí)數(shù)(double用%lf),輸出時(shí)默認(rèn)6位小數(shù)?!?.2f”表示控制輸出2位小數(shù)。345↙averis4.000000EG103.C例4輸入兩個(gè)整數(shù),輸出較大的數(shù)。#include<stdio.h>intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}intmain(){inta,b,c;scanf("%d%d",&a,&b);
c=max(a,b);printf("max=%d\n",c);return(0);}1234↙max=34EG104.C、EG105.C程序的基本結(jié)構(gòu)#include<…>#include<…>#define…
/*預(yù)處理命令*/intmain(){
聲明部分
/*定義本函數(shù)中用到的變量*/
執(zhí)行部分
/*完成本函數(shù)功能的若干語(yǔ)句*/return(0);}其他函數(shù){
聲明部分執(zhí)行部分}6.函數(shù)體的結(jié)構(gòu)為:①變量定義:定義在本函數(shù)中用到的變量②輸入數(shù)據(jù):將要處理的數(shù)據(jù)存放到內(nèi)存中(賦值或輸入給某些變量)③計(jì)算/處理:對(duì)輸入的數(shù)據(jù)進(jìn)行計(jì)算或處理④輸出結(jié)果:輸出計(jì)算后得到的最終結(jié)果(題目要求的結(jié)果)7.一行可以寫多條語(yǔ)句,一條語(yǔ)句也可以寫在多行上。C程序框架1.C程序是由函數(shù)組成的(函數(shù)式語(yǔ)言)。2.每個(gè)程序有且只有一個(gè)main函數(shù)。C程序總是以main函數(shù)作為入口開始執(zhí)行,結(jié)束于main的最后一條語(yǔ)句。3.用戶可根據(jù)需要自定義函數(shù)。4.以#開始的預(yù)處理命令寫在程序最前面,每個(gè)命令占一行。5.函數(shù)由函數(shù)首行信息(函數(shù)首部)和函數(shù)體構(gòu)成。第2部分C程序運(yùn)行過(guò)程C程序上機(jī)步驟一、編輯:將源程序輸入計(jì)算機(jī)內(nèi)存中→修改源程序→將改正后的源程序保存為磁盤文件。——以ASCII碼形式輸入和存儲(chǔ)----擴(kuò)展名為.C或.CPP(源程序)二、編譯:先進(jìn)行語(yǔ)法檢查,并將無(wú)語(yǔ)法錯(cuò)誤的源程序翻譯成二進(jìn)制形式的目標(biāo)代碼----擴(kuò)展名為.OBJ(目標(biāo)程序)三、鏈接:將各模塊的二進(jìn)制目標(biāo)代碼與系統(tǒng)標(biāo)準(zhǔn)模塊連接,得到一個(gè)可執(zhí)行文件----擴(kuò)展名為.EXE(可執(zhí)行程序)四、執(zhí)行:執(zhí)行經(jīng)過(guò)編譯和連接的可執(zhí)行目標(biāo)文件。VC++6.0上機(jī)步驟1、啟動(dòng)VC++6.0⑴、啟動(dòng):開始菜單→程序→VisualC++6.0⑵、工作窗口:
編輯窗口、工作空間窗口、輸出窗口2、在編輯狀態(tài)下輸入或修改源文件⑴、編輯新文件
編輯新文件:文件→新建…→文件→“C++SourceFile”
保存文件:文件→保存或Ctrl+S⑵、編輯已存在的文件
打開文件:文件→打開或Ctrl+O或直接雙擊文件
另存文件:文件→另存為…編譯時(shí)的提示信息將顯示在輸出窗口,雙擊錯(cuò)誤信息則轉(zhuǎn)到相應(yīng)出錯(cuò)處,修改完畢再重新編譯,直到無(wú)任何錯(cuò)誤后編譯成功,顯示“0error(s),0warning(s)”。注意:編譯成功只能說(shuō)明程序無(wú)語(yǔ)法錯(cuò)誤,不一定代表算法正確或運(yùn)行結(jié)果正確。3、編譯源程序
組建→編譯
或Ctrl+F7編譯時(shí)若彈出如下提示框,選擇“是”。4、運(yùn)行源程序
組建→執(zhí)行或Ctrl+F5標(biāo)識(shí)符標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名等對(duì)象的字符序列。①以字母或下劃線開頭,由字母、數(shù)字或下劃線組成。
合法的標(biāo)識(shí)符:aisumS1r3aver_totaldaya_b不合法標(biāo)識(shí)符:S1r3S表
S'3D6a-b(注意不同于數(shù)學(xué)中的變量)②不能與C語(yǔ)言的關(guān)鍵字重名,如int、float、if③注意標(biāo)識(shí)符的有效長(zhǎng)度,不能超過(guò)32個(gè)字符④區(qū)分大小寫字母:sum和Sum不同⑤盡量做到“見(jiàn)名知義”;如sum、area⑥應(yīng)盡量避免單個(gè)使用容易認(rèn)錯(cuò)的字符。如:數(shù)字1與字母l和字母I,數(shù)字0與字母o和O,數(shù)字2與字母Z和z第3部分C基本語(yǔ)法成分比較下面兩個(gè)程序的不同,有何特點(diǎn)?#include<stdio.h>intmain(){inta,b,sum;
a=2;b=3;sum=a+b;printf("sumis%d\n",sum);return(0);}#include<stdio.h>intmain(){inta,b,sum;
scanf("%d%d",&a,&b);sum=a+b;printf("sumis%d\n",sum);return(0);}結(jié)論:如果數(shù)據(jù)需要在程序運(yùn)行時(shí)確定(程序運(yùn)行前不能確定),應(yīng)該用scanf函數(shù)輸入;如果數(shù)據(jù)已知(如常量或題目中已告知),可直接賦值。例1.5已知a=5,b=10,交換并輸出a、b的值。編寫程序的四個(gè)步驟:定義變量輸入(確定變量的值)計(jì)算/處理輸出#include<stdio.h>intmain(){return(0);}inta,b,temp;a=5;b=10;temp=a;a=b;b=temp;printf("a=%d,b=%d\n",a,b);思考:交換a、b能否不借助于第3個(gè)變量?EG106.Ca=a+b;b=a-b;a=a-b;inta=5,b=10,temp;//初始化變量賦初值/初始化C語(yǔ)言允許在定義變量的同時(shí)給變量賦初值,即變量的初始化。
inta=5,b=10,temp;×inta,b,temp;a=5;b=10;
floatf=3.56;
inta,b,c=3;
inta=3,b=3,c=3;
inta=b=c=3;inta,b,c;a=b=c=3;√例1.6計(jì)算圓柱體的表面積。分析:圓柱體表面積S=側(cè)面積S1+2×底面積S2S1=dh,S2=πr2,d=2πr因此,需要知道底面半徑r和圓柱體高h(yuǎn),怎么辦?#include<stdio.h>intmain(){return(0);}floatr,h,s;scanf("%f%f",&r,&h);d=2*3.14*r;s1=d*h;s2=3.14*r*r;s=s1+2*s2;printf("Totalareais%.2f\n",s);,d,s1,s2;原則:只出現(xiàn)一次的中間變量可以省略!#include<stdio.h>#definePI3.14intmain(){return(0);}floatr,h,s;scanf("%f%f",&r,&h);s=2*PI*r*h+2*PI*r*r;printf("area=%.2f\n",s);用一個(gè)標(biāo)識(shí)符代表一個(gè)常量的,稱為符號(hào)常量,即標(biāo)識(shí)符形式的常量。其值不能被改變,也不能再被賦值。定義形式:
#define符號(hào)常量名常量表達(dá)式或字符串如:#definePRICE303.1415926EG108.C關(guān)于scanf、printf的說(shuō)明:整型(int)實(shí)型(float)實(shí)型(double)用途存放整數(shù)存放低精度實(shí)數(shù)存放高精度實(shí)數(shù)輸入格式%d%f(%.2f×)%lf輸出格式%d%f%.2f%lf或%f關(guān)于格式控制符:整型數(shù)據(jù)的輸入輸出都使用%d;實(shí)型數(shù)據(jù)(float)的輸入只能使用%f,不能是%.2f的格式。scanf("%d%d",&a,&b);scanf("%f",&r);scanf("%.2f",&r);×關(guān)于其它字符:scanf函數(shù)中只包括%d、%f等格式控制符,不要有其它字符。printf函數(shù)中為了說(shuō)明輸出數(shù)據(jù)的含義,往往包含其它字符。scanf("r=%d",&r);//不推薦scanf("%f\n",&r);//不推薦printf("sum=%d\n",sum);printf("a=%d,b=%d\n",a,b);運(yùn)算符和表達(dá)式用于描述運(yùn)算形式的符號(hào)稱為運(yùn)算符。如+、-、=、>參與運(yùn)算的對(duì)象(即數(shù)據(jù))稱為操作數(shù)。
表達(dá)式是將操作數(shù)用運(yùn)算符連接起來(lái)的、符合C語(yǔ)法規(guī)則的式子。它描述了對(duì)哪些數(shù)據(jù)、以什么順序施以何種操作。其中運(yùn)算量可以是常量、變量或函數(shù)調(diào)用。如:
3+2-5、x+3/2、max=a+b、t=sin(x)+cos(x)表達(dá)式的取值及類型
C語(yǔ)言中的所有表達(dá)式都具有確定的值。當(dāng)不同類型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),注意結(jié)果的值及類型。如:2.0+3C語(yǔ)言運(yùn)算符分為以下幾類:⑴
算術(shù)運(yùn)算符:+
-
*
/
%
++
--⑵關(guān)系運(yùn)算符:<
<=
>
>=
==
!=⑶邏輯運(yùn)算符:!
&&
||⑷位運(yùn)算符:<<
>>
~
|
^
&⑸
賦值運(yùn)算符:=及擴(kuò)展賦值運(yùn)算符⑹條件運(yùn)算符:?:⑺逗號(hào)運(yùn)算符:,⑻指針和地址運(yùn)算符:*
&⑼求字節(jié)運(yùn)算符:sizeof
⑽分量運(yùn)算符:.
->
⑾下標(biāo)運(yùn)算符:[]
⑿強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(類型)
⒀
其他:如函數(shù)調(diào)用運(yùn)算符()需要注意的問(wèn)題:⑴、參加操作的數(shù)據(jù)類型:⑵、要求運(yùn)算量的個(gè)數(shù):一元(單目)、二元(雙目)或三元(三目)運(yùn)算符⑶、優(yōu)先級(jí)操作數(shù)兩側(cè)的運(yùn)算符優(yōu)先級(jí)別不同時(shí),則先執(zhí)行“優(yōu)先級(jí)”高的運(yùn)算。如:3+5*6⑷、結(jié)合性操作數(shù)兩側(cè)的運(yùn)算符優(yōu)先級(jí)別相同時(shí),則按結(jié)合方向處理(左結(jié)合性、右結(jié)合性)。如:3*5/6⑸、結(jié)果的取值及類型C語(yǔ)言中的所有表達(dá)式都具有確定的值。當(dāng)不同類型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),注意結(jié)果的值及類型。2+3.01.算術(shù)運(yùn)算符和算術(shù)表達(dá)式基本算術(shù)運(yùn)算符:+-*/%其中:①、+、-、*、/的運(yùn)算對(duì)象可以是整型或?qū)嵭蛿?shù)據(jù);但如果其中一個(gè)運(yùn)算量為實(shí)型,則運(yùn)算結(jié)果為double型。②、/:兩個(gè)整數(shù)相除表示整除,舍去小數(shù)部分,結(jié)果為整數(shù)。③、%:要求兩側(cè)的操作數(shù)必須為整數(shù)。2+3.0=5.02+3.0=5.02-1.0=1.01*3.0=3.05/2=25/2.0=2.51/3=01.0/3=0.3333335%2=121%8=5運(yùn)算符的優(yōu)先級(jí)和結(jié)合性當(dāng)一個(gè)表達(dá)式中出現(xiàn)多個(gè)運(yùn)算符時(shí),按各運(yùn)算符的優(yōu)先級(jí)和結(jié)合性確定各運(yùn)算符的計(jì)算順序。①、*、/、%的優(yōu)先級(jí)相同,+、-的優(yōu)先級(jí)相同;但前三種高于后兩種。②、+-*/%均為左結(jié)合性。
3+2-5
x-2*3
2*5%7/3自增、自減運(yùn)算符
++、--:使變量的值增1或減1(均為一元運(yùn)算符)形式:
⑴、前綴:++i、--i⑵、后綴:i++、i--i++或++i:可看成i=i+1,都能使i的值增1;當(dāng)++和--在表達(dá)式里出現(xiàn)時(shí)情形比較復(fù)雜,此處不討論。優(yōu)先級(jí):++-- */%+-(單目運(yùn)算符、右結(jié)合性)(雙目運(yùn)算符、左結(jié)合性)(雙目運(yùn)算符、左結(jié)合性)2.賦值運(yùn)算符和賦值表達(dá)式一、賦值運(yùn)算符(=)
=:雙目運(yùn)算符、優(yōu)先級(jí)14、結(jié)合性為自右至左二、賦值表達(dá)式1、簡(jiǎn)單賦值表達(dá)式:變量名=表達(dá)式如:sum=a+b、temp=a、i=i+12、多重賦值表達(dá)式:
變量名1=變量名2=……=變量名n=表達(dá)式
a=b=c=3+x三、復(fù)合(自反)賦值運(yùn)算符
+=、-=、*=、/=、%=;<<=、>>=、&=、^=、|=(位運(yùn)算)a+=5;a=a+5;y*=x-2;y=y*(x-2);x%=y/3;x=x%(y/3);3.逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式一、逗號(hào)運(yùn)算符(,)
,:雙目運(yùn)算符、優(yōu)先級(jí)15(最低)、結(jié)合性為自左至右二、逗號(hào)表達(dá)式形式:表達(dá)式1,表達(dá)式2,……,表達(dá)式n運(yùn)算:從左至右依次計(jì)算表達(dá)式1、表達(dá)式2、……、表達(dá)式n;結(jié)果:表達(dá)式n的值(和類型)即為整個(gè)逗號(hào)表達(dá)式的值(和類型)i=1,j=2,k=i+j逗號(hào)表達(dá)式,值為3i++,j+4,k-2逗號(hào)表達(dá)式,值為1運(yùn)算符優(yōu)先級(jí):()++-- */%+-…=+=等,1、編寫程序,輸入三角形的三條邊,計(jì)算并輸出三角形的面積。(假設(shè)輸入的三條邊能構(gòu)成一個(gè)三角形)求三角形的面積公式為:提示:求平方根函數(shù)sqrt(表達(dá)式)函數(shù)原型:doublesqrt(doublex)
----教材p.233相關(guān)預(yù)處理命令:#include<math.h>floata,b,c,s,area;scanf("%f%f%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f\n",area);#include<stdio.h>intmain(){return(0);}變量定義輸入運(yùn)算輸出#include<stdio.h>#include<math.h>intmain(){
return(0);}floata,b,c,s,area;scanf("%f%f%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f\n",area);#include<stdio.h>intmain(){return(0);}變量定義輸入運(yùn)算輸出注意:變量的類型,本題應(yīng)該是float或double,實(shí)數(shù)盡量使用double。scanf、printf函數(shù)的格式:
scanf("%f%f%f",&a,&b,&c);//雙引號(hào)間不要加其它任何符號(hào)
scanf("%lf%lf%lf",&a,&b,&c);//double型輸入時(shí)應(yīng)使用%lf3.數(shù)學(xué)函數(shù)的使用方法;同時(shí)需加上#include<math.h>
doublepow(doublex,doubley);程序最前面寫上:#include<sdtio.h>#include<math.h>求得的值的類型參數(shù)的類型s=pow(a+b,2.1);area=pow(s*(s-a)*(s-b)*(s-b),0.5);area=sqrt(s*(s-a)*(s-b)*(s-c));4.計(jì)算的順序:先計(jì)算s,再計(jì)算area。--后面用到的值必須先計(jì)算s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f\n",area);5.是否三角形的判斷:任意兩邊之和大于第三條邊a+b>cb+c>aa+c>b&&&&&&a>0&&b>0&&c>0if()s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f\n",area);{}復(fù)合語(yǔ)句或任意兩邊之差小于第三邊(與上面的條件不能混用):b-c<a&&c-a<b&&a-b<c第4部分C語(yǔ)言數(shù)據(jù)類型#include<stdio.h>intmain(){
inta=5,b=10,temp;temp=a;a=b;b=temp;printf("a=%d,b=%d\n",a,b);return(0);}#include<stdio.h>#definePI3.1415926intmain(){
floatr,h,s;scanf("%f%f",&r,&h);s=2*PI*r*h+2*PI*r*r;printf("areais%.2f\n",s);return(0);}比較下面兩個(gè)程序中變量的類型:結(jié)論:存放整數(shù)則變量定義為int型,輸入輸出使用%d;存放實(shí)數(shù)一般定義為float型,輸入輸出使用%f。例編寫程序,輸入一個(gè)華氏溫度,輸出對(duì)應(yīng)的攝氏溫度。轉(zhuǎn)換公式為:例編寫程序,計(jì)算20!,并輸出結(jié)果。1!=12!=23!=64!=245!=1206!=7207!≈50008!≈4萬(wàn)9!≈36萬(wàn)10!≈360萬(wàn)11!≈4千萬(wàn)12!≈5億13!≈65億……C語(yǔ)言數(shù)據(jù)類型:字符型(char)實(shí)型(浮點(diǎn)型)單精度型(float)雙精度型(double)整型短整型(shortint)整型(int)長(zhǎng)整型(longint)枚舉類型(enum)數(shù)組類型結(jié)構(gòu)體類型(struct)共用體類型(union)文件類型(FILE)基本類型構(gòu)造類型指針類型空類型(void)C數(shù)據(jù)類型常量與變量C語(yǔ)言中的常量區(qū)分為不同的類型:180-34.6-1.230.0'a''x'整型常量實(shí)型常量字符型常量字面常量
符號(hào)常量:用一個(gè)標(biāo)識(shí)符代表一個(gè)常量,即標(biāo)識(shí)符形式的常量。其值不能被改變,也不能再被賦值。定義形式:#define符號(hào)常量名常量表達(dá)式或字符串如:#definePI3.14PI=3.1415926;×//符號(hào)常量不能被賦值變量:在程序運(yùn)行過(guò)程中其值可以被改變的量inta,b,sum;floatx,y;3sum變量名變量值存儲(chǔ)單元每個(gè)變量在使用之前必須先進(jìn)行定義(聲明),C要求變量必須先定義后使用。進(jìn)行變量聲明后,計(jì)算機(jī)系統(tǒng)會(huì)為聲明的變量分配相應(yīng)大小的存儲(chǔ)空間,用以存放數(shù)據(jù)。整型數(shù)據(jù)一、整型常量①十進(jìn)制形式,如112、0、-3;②八進(jìn)制形式,以數(shù)字0開頭,如0123;③十六進(jìn)制形式,以0x開頭,如0x123intx,y,z;x=10;y=010;z=0x10;printf("x=%d,y=%d,z=%d\n",x,y,z);x=10,y=8,z=16EG109.C二、整型變量根據(jù)數(shù)值的范圍可以分為三種:①基本型:int;4個(gè)字節(jié)(-2,147,483,648~2,147,483,647,即-231~(231-1))②短整型:shortint或short;2個(gè)字節(jié)(-32768~32767)③長(zhǎng)整型:longint或long;4個(gè)字節(jié),同intunsigned:無(wú)符號(hào)數(shù)signed:有符號(hào)數(shù);默認(rèn)為有符號(hào)類型inta,b;unsignedinti,j,fact;實(shí)型數(shù)據(jù)實(shí)數(shù)又稱為浮點(diǎn)數(shù),實(shí)型常量有兩種表示形式:①、十進(jìn)制數(shù)形式:如0.123、.123、123.0、123.、0.
②、指數(shù)形式:字母e(E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)如:1.23e2、12300E-2、.123e3、123.e0√而:2.1e3.5、E2
×規(guī)范化的指數(shù)形式:在小數(shù)部分中,小數(shù)點(diǎn)左邊有且只有一位非零的數(shù)字,指數(shù)占3位。如1.23E+002實(shí)型變量C實(shí)型變量分為單精度(float)和雙精度型(double)。類型字節(jié)數(shù)有效數(shù)字絕對(duì)值范圍float46~70,1.2×10-38~3.4×1038double815~160,2.3×10-308~1.7×10308longdouble10190,3.4×10-4932~1.1×104932字符型數(shù)據(jù)
C的字符常量是用單引號(hào)('')括起來(lái)的一個(gè)字符。如'a'、'8'、'x'、'D'、'?'、'$'等。
轉(zhuǎn)義字符:以“\”開頭的字符序列。字符含義\n換行,光標(biāo)移到下一行行首\t水平制表\b退格\r回車,光標(biāo)移到本行開頭\\反斜扛字符“\”\'單引號(hào)字符“'”\"雙引號(hào)字符“"”\ddd1到3位八進(jìn)制數(shù)所代表的字符\xhh1到2位十六進(jìn)制數(shù)所代表的字符'\101'、'\x41':A'\1'、'\x1':?'\32'、'\x1A':→大小寫字母的ASCII值相差32:大寫字母轉(zhuǎn)換為小寫:
ch=ch+32;小寫字母轉(zhuǎn)換為大寫:
ch=ch-32;輸入一個(gè)大寫字母,轉(zhuǎn)換為對(duì)應(yīng)的小寫字母:#include<stdio.h>intmain(){charch;scanf("%c",&ch);ch=ch+32;printf("%c\n",ch);return(0);}字符ASCII碼字符ASCII碼A65a97B66b98C67c99D68d100E69e101F70f102G71g103…………Z90z122EG111.C字符常量本身具有數(shù)值,就是它們的ASCII碼值,如:'A'的值是65,'a'的值是97,'0'的值是48,因此字符型數(shù)據(jù)和整型數(shù)據(jù)在0-127范圍內(nèi)通用。說(shuō)明:字符可以整數(shù)形式輸出;也可與整數(shù)進(jìn)行相互運(yùn)算。#include<stdio.h>intmain(){charch;
intx;ch='A';
x=ch+32;printf("%c,%d\n",ch,ch);printf("%c,%d\n",x,x);return(0);}A,65a,97如需要存放ASCII碼為128~255之間的字符,需要將字符變量定義為unsignedchar(默認(rèn)為signedchar:-128~127)EG112.C字符串常量
字符串常量由一對(duì)雙引號(hào)("")括起來(lái)的字符序列。如"Howareyou!"、"China"、"a"、"$123.45"、""等??梢暂敵鲆粋€(gè)字符串,如:printf("Hello!");。系統(tǒng)在存儲(chǔ)字符串時(shí)自動(dòng)在字符串末尾加一個(gè)結(jié)束標(biāo)志'\0',據(jù)此判斷字符串是否結(jié)束。"China"China\0'a'"a"aa\0
注意:寫字符串時(shí)不必加'\0',它是系統(tǒng)自動(dòng)加上的。字符串的存儲(chǔ):數(shù)組(將在第4章介紹)
charstr[50];//可用于存放最多49個(gè)字符的字符串第5部分?jǐn)?shù)據(jù)的輸入輸出C語(yǔ)言對(duì)數(shù)據(jù)的輸入輸出實(shí)行函數(shù)化。
C語(yǔ)言沒(méi)有提供輸入輸出語(yǔ)句,其輸入輸出功能均由函數(shù)來(lái)實(shí)現(xiàn)。如printf、scanf等稱為標(biāo)準(zhǔn)輸入輸出函數(shù)。使用標(biāo)準(zhǔn)輸入輸出函數(shù)時(shí);需要在程序開始使用預(yù)編譯命令:
#include
<stdio.h>或:#include
"stdio.h"printf函數(shù)
格式:printf(格式控制,
輸出表列)功能:在終端的當(dāng)前光標(biāo)處輸出若干個(gè)任意類型的數(shù)據(jù)1.格式控制:用""括起來(lái)的字符串,包括兩部分:普通字符(包括轉(zhuǎn)義字符):需要原樣輸出的字符格式說(shuō)明:由%和格式字符組成,其作用是將輸出數(shù)據(jù)按指定的格式輸出printf("ThisisaCprogram!\n");printf("a=%d,b=%d\n",a,b);printf函數(shù)使用的格式控制符:格式字符說(shuō)明d,i以帶符號(hào)的十進(jìn)制形式輸出整數(shù)c以字符形式輸出,只輸出一個(gè)字符s輸出字符串f以小數(shù)形式輸出單、雙精度數(shù),默認(rèn)6位小數(shù)e,E以指數(shù)形式輸出單、雙精度數(shù),小數(shù)位數(shù)為6位g,G選用%f或%e格式中輸出寬度較短的一種格式,不輸出無(wú)意義的0inta=123,b=-1;floatx=12.34;charch=65;printf("a=%d,b=%d",a,b);輸出結(jié)果:a=123,b=-1printf("x=%f",x);輸出結(jié)果:x=12.340000printf("x=%e",x);輸出結(jié)果:x=1.234000e+001printf("x=%g",x);輸出結(jié)果:x=12.34printf("%f%%",1.0/3);輸出結(jié)果:0.333333%printf("ch=%c",ch);輸出結(jié)果:ch=Aprintf("str=%s","IloveChina!");輸出結(jié)果:str=IloveChina!EG113.C在格式控制符中,%和后面跟隨的單個(gè)字符之間又可以插入以下幾種修飾符。字符說(shuō)明字母l用于輸出double型數(shù)據(jù)m(正整數(shù))數(shù)據(jù)最小寬度(小于實(shí)際位數(shù)時(shí)無(wú)效).n(正整數(shù))對(duì)實(shí)數(shù),表示輸出幾位小數(shù);對(duì)字符串,表示截取的字符個(gè)數(shù)-輸出的數(shù)字或字符在域內(nèi)向左靠EG114.C例:inti=79;%di79%5di79%-5di79%1di79doublex=33.1234567;%fx33.123455%.2fx33.12%6.2fx33.12%4.2fx33.12%ex3.312346e+001%.3ex3.312e+0012.輸出表列:由0到多個(gè)具體參數(shù)組成,其中的參數(shù)可以是常量、變量或表達(dá)式。printf("%d\n",25);printf("x=%d\n",x);printf("x*y=%d\n",x*y);printf("max=%d\n",max(a,b));EG115.C注意:①輸出整數(shù)和實(shí)數(shù)時(shí),數(shù)0用以指定數(shù)字前的空位是否補(bǔ)0;無(wú)0則補(bǔ)空格。floata=1.23;printf("%08.1f\n",a);000001.2
②
格式控制符的個(gè)數(shù)與后面的參數(shù)個(gè)數(shù)應(yīng)相等,且前后位置要一一對(duì)應(yīng)。printf("a=%d,b=%d\n",a,b);
③格式字符與其對(duì)應(yīng)的輸出項(xiàng)的類型要保持一致,例如,不應(yīng)用%f輸出整數(shù)。scanf函數(shù)
格式:scanf("格式控制",地址表列)功能:從鍵盤讀入字符序列,并按指定的格式轉(zhuǎn)換成相應(yīng)的數(shù)據(jù),存儲(chǔ)到地址表列所指定的內(nèi)存單元中
“地址表列”由若干個(gè)地址組成,可以是變量的地址或字符串的首地址。#include<stdio.h>intmain(){inta,b,c;scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);return(0);}注:輸入整數(shù)、實(shí)數(shù)或字符串時(shí),如果格式控制部分只有格式控制符,不含其它字符,則數(shù)據(jù)之間以一個(gè)空格或多個(gè)空格、或Tab鍵或回車鍵分隔。EG116.Cscanf函數(shù)的格式控制符:格式字符說(shuō)明d,i用來(lái)輸入十進(jìn)制整數(shù)c用來(lái)輸入單個(gè)字符s用來(lái)輸入字符串,將字符串送到一個(gè)字符數(shù)組中,在輸入時(shí)以非空白字符開始,以第一個(gè)空白字符結(jié)束。字符串以串結(jié)束標(biāo)志'\0'作為最后一個(gè)字符。f(e,E,g,G)用來(lái)輸入單精度實(shí)數(shù)(float),可以用小數(shù)形式或指數(shù)形式輸入lf,le等用來(lái)輸入雙精度實(shí)數(shù)(double),可以用小數(shù)形式或指數(shù)形式輸入inta;scanf("%d",&a);charch;scanf("%c",&ch);charstr[50];scanf("%s",str);floatx;scanf("%f",&x);doubley;scanf("%lf",&y);在%和格式字符之間可插入附加的格式說(shuō)明符:字符說(shuō)明l用于輸入double型數(shù)據(jù)(用%lf或%le)--特別注意m(正整數(shù))域?qū)?,指定輸入?shù)據(jù)所占寬度(列數(shù))*賦值抑制符,表示本輸入項(xiàng)讀入后不賦給任何變量格式:%*m格式字符說(shuō)明:⑴與printf函數(shù)不同,scanf函數(shù)的格式控制部分一般不包含其它字符;scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);⑵
格式控制中若帶域?qū)挘到y(tǒng)自動(dòng)按域?qū)捊厝∷钄?shù)據(jù);scanf("%3d%3d",&a,&b);12345678↙a=123,b=456scanf("%3c%3c",&ch1,&ch2);abcdefg↙ch1=a,ch2=dchars1[20],s2[20];scanf("%s%3s",s1,s2);ComputerComputer↙s1=Computer,s2=Com⑶賦值抑制符*,表示按格式說(shuō)明讀入數(shù)據(jù)后不送給任何變量scanf("%2d%*3d%2d",&a,&b);12345678↙a=12,b=67EG117.C、EG118.C、EG119.C;EG120.C⑷輸入實(shí)數(shù)時(shí)不能規(guī)定精度;scanf("%7.2f",&a);×scanf("%5f",&a);12.345678↙a=12.340000使用scanf函數(shù)應(yīng)注意的問(wèn)題:⑴地址表列必須提供變量或字符串在內(nèi)存中的地址,不能寫成變量名的形式;inta,b;scanf("%d%d",&a,&b);charstr[20];scanf("%s",str);⑵如果在“格式控制”字符串中除格式控制符外還有其它字符,則在輸入時(shí)應(yīng)輸入相同的字符;scanf("%d,%d",&a,&b)12,34↙scanf("%d%d",&a,&b)1234↙scanf("%d:%d:%d",&a,&b,&c)12:34:56↙scanf("a=%d,b=%d,c=%d",&a,&b,&c);a=12,b=34,c=56↙⑶在用“%c”輸入字符時(shí),空格字符和轉(zhuǎn)義字符也都作為有效字符輸入;scanf("%c%c%c",&c1,&c2,&c3);ABC↙c1=A,c2=
,c3=B⑷在輸入數(shù)據(jù)時(shí),遇以下情況之一認(rèn)為一個(gè)數(shù)據(jù)輸入結(jié)束:①遇到空格或按Tab鍵或回車鍵;②滿足域?qū)?,?4d,輸入4位即結(jié)束;③遇到非法字符。scanf("%d%c%f",&a,&b,&c);12P12o.35↙a=12,b=P,c=12.00000scanf("%d%d",&x,&y);12,34↙x=12,y無(wú)正確數(shù)據(jù)數(shù)據(jù)類型及printf、scanf的總結(jié)數(shù)據(jù)整數(shù)實(shí)數(shù)字符字符串變量類型intfloat(一般情況)double(高精度、大數(shù))char數(shù)組charstr[20];輸入格式%d%f%lf%c%s輸出格式%f%E(%e)定義數(shù)據(jù)類型的原則:只要是存放整數(shù)都定義為int;實(shí)數(shù):一般情況下定義為float即可,如果需要精度高或數(shù)值大則定義為double。關(guān)于輸入、輸出的格式控制符:int型數(shù)據(jù)的輸入輸出都使用%d。float型數(shù)據(jù)的輸入使用%f,double型數(shù)據(jù)輸入必須使用%lf。scanf函數(shù)中不要加其它符號(hào);printf函數(shù)中往往要加,作為輸出數(shù)據(jù)的說(shuō)明信息。第6部分算法廣義的說(shuō),為解決一個(gè)問(wèn)題而采取的方法和步驟稱為算法。對(duì)同一個(gè)問(wèn)題可能有不同的解決方法和步驟,即不同的算法。在保證算法正確的基礎(chǔ)上,還要考慮算法的質(zhì)量,即選擇較優(yōu)的算法。比如,交換兩個(gè)整數(shù),處理過(guò)程如下:方法一:inta=10,b=5,temp;temp=a;a=b;b=temp;方法二:inta=10,b=5;a=a+b;b=a-b;a=a-b;方法三:inta=10,b=5;b=a+b;a=b-a;b=b-a;算法的特性1.有窮性一個(gè)算法包含有限的操作步驟2.確定性算法中的每一個(gè)步驟是確定的,含義是唯一的3.有零個(gè)或多個(gè)輸入4.有一個(gè)或多個(gè)輸出5.有效性算法中每一個(gè)步驟應(yīng)能有效地執(zhí)行,并得到確定的結(jié)果算法的表示一、自然語(yǔ)言表示法例,求兩數(shù)之和:①輸入a、b兩數(shù);②求和sum=a+b;③輸出兩數(shù)之和sum。注意:每一個(gè)操作步驟必須是計(jì)算機(jī)所能實(shí)現(xiàn)的。特點(diǎn):通俗易懂,但文字冗長(zhǎng)、易出現(xiàn)歧義,因此較少使用。張三對(duì)李四說(shuō)他的兒子考上了清華大學(xué)。二、傳統(tǒng)的程序流程圖用ANSIC規(guī)定的圖形符號(hào)形象直觀的描述算法。名稱符號(hào)含義箭頭流向或路徑矩形處理功能圓形連接點(diǎn)平行四邊形輸入或輸出菱形判斷圓弧矩形流程的起點(diǎn)或終點(diǎn)尖頭框循環(huán)雙邊矩形框調(diào)用子程序例輸入三個(gè)數(shù)a、b、c,輸出其中的最大者。開始輸入a,b,ca>b?a>c?T輸出cF結(jié)束輸出aTb>c?F輸出bTF輸出c(算法二,常用算法)輸入三個(gè)數(shù)a、b、c,輸出其中的最大者。開始輸入a,b,cb>max?結(jié)束假設(shè)a就是最大數(shù)max=amax=bc>max?max=c輸出maxFT#include<stdio.h>intmain(){inta,b,c,max;scanf("%d%d%d",&a,&b,&c);
max=a;
if(b>max)max=b;if(c>max)max=c;printf("max=%d\n",max);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉林大學(xué)《交通仿真》2021-2022學(xué)年第一學(xué)期期末試卷
- 鋼結(jié)構(gòu)項(xiàng)目安全措施實(shí)施方案
- 公共交通急救演練方案
- 橋梁拆除項(xiàng)目的預(yù)算控制方案
- 東坡文化課件教學(xué)課件
- 2024-2025學(xué)年新教材高中歷史第二單元第7課隋唐制度的變化與創(chuàng)新課時(shí)作業(yè)含解析新人教版必修中外歷史綱要上
- 2024-2025學(xué)年新教材高中生物第1章遺傳因子的發(fā)現(xiàn)第1節(jié)第1課時(shí)孟德爾一對(duì)相對(duì)性狀雜交實(shí)驗(yàn)的過(guò)程及解釋練習(xí)含解析新人教版必修第二冊(cè)
- 2024-2025學(xué)年高中化學(xué)第三章烴的含氧衍生物2醛課時(shí)作業(yè)含解析新人教版選修5
- 2024年國(guó)際物流協(xié)作合同范本
- 2024年城市規(guī)劃咨詢協(xié)議
- 酒店的基本概念
- 重點(diǎn)但位消防安全標(biāo)準(zhǔn)化管理評(píng)分細(xì)則自評(píng)表
- 掛牌儀式流程方案
- 傳輸s385v200v210安裝手冊(cè)
- 風(fēng)險(xiǎn)調(diào)查表(企業(yè)財(cái)產(chǎn)保險(xiǎn))
- 農(nóng)業(yè)信息技術(shù) chapter5 地理信息系統(tǒng)
- 淺談新形勢(shì)下加強(qiáng)企業(yè)稅務(wù)管理的對(duì)策研究
- 必看!設(shè)備管理必須要懂的一、二、三、四、五
- 空冷島專題(控制方案、諧波及變壓器容量選擇)
- 結(jié)合子的機(jī)械加工工藝規(guī)程及銑槽的夾具設(shè)計(jì)
- 液氧汽化站安全技術(shù)操作規(guī)程2018-07.docx
評(píng)論
0/150
提交評(píng)論