c語(yǔ)言基本常識(shí)有哪些_C語(yǔ)言程序架構(gòu) IT知識(shí)
電腦知識(shí) 由優(yōu)爾供稿C語(yǔ)言一經(jīng)出現(xiàn)就以其功能豐富、表達(dá)能力強(qiáng)、靈活方便、應(yīng)用面廣等特點(diǎn)迅速在全世界普及和推廣。下面一起來(lái)看看9252兒童網(wǎng)小編為大家整理的c語(yǔ)言基本常識(shí),歡迎閱讀,僅供參考。
C語(yǔ)言基礎(chǔ)知識(shí)
一:主要內(nèi)容
1.C數(shù)據(jù)類型
2.簡(jiǎn)單的算術(shù)運(yùn)算和表達(dá)式
3.鍵盤(pán)輸入和屏幕輸出
4.選擇控制結(jié)構(gòu)
總結(jié)風(fēng)格:分條羅列,主要是知識(shí)點(diǎn),有例題不多
5.循環(huán)控制結(jié)構(gòu)
一、C數(shù)據(jù)類型
1.C語(yǔ)言處理兩種數(shù)據(jù):常量和變量
2.常量:整形常量、實(shí)型常量、字符常量、字符串常量、枚舉常量
3.整形常量:正整數(shù)、負(fù)整數(shù)、零 eg: 10,-30,0
4.實(shí)型常量:實(shí)數(shù)、小數(shù)、浮點(diǎn)數(shù) eg: 3.14,-0.56,18.0
5.字符常量:字符型常量、用單引號(hào)括起來(lái)的任意字符 eg: x X ? , 9
6.字符串常量:用雙引號(hào)括起來(lái)的一個(gè)或多個(gè)字符 eg: "x" "Hello" "Y78"
7.在C程序中,整型常量可以用十進(jìn)制、八進(jìn)制、十六進(jìn)制形式表示,但編譯器都會(huì)自動(dòng)將其轉(zhuǎn)換成二進(jìn)制存儲(chǔ)
8.整型常量的類型:長(zhǎng)整型、短整型、有符號(hào)、無(wú)符號(hào)。
9.不同進(jìn)制的整型常量的表示形式:
1)十進(jìn)制:0~9數(shù)字組合,可帶正負(fù)號(hào) eg: 256,-128,0,+7
2)八進(jìn)制:0開(kāi)頭,后面跟0~7數(shù)字組合 eg: 021,-017
3)十六進(jìn)制:0x(0X)開(kāi)頭,后跟0~9,a~f(A~F)數(shù)字組合 eg:0x12,-0x1F
10.不同類型的整形常量的表示形式:
1) 有符號(hào)整型常量:默認(rèn)int型定義為有符號(hào)整數(shù),無(wú)需signed eg:10,-30,0
2) 無(wú)符號(hào)整形常量:常量值后跟u或U,只能表示>=0的數(shù) eg:30u,256U
3) 長(zhǎng)整型常量:常量值后跟l或L eg:-256l,1024L
4) 無(wú)符號(hào)長(zhǎng)整型常量:常量值后跟LU、Lu 、lU 、lu eg:30lu
11.C程序中,實(shí)型常量?jī)煞N表示形式:小數(shù)、指數(shù)
12.不同形式的實(shí)型常量的表示形式:
1) 十進(jìn)制表示形式:數(shù)字和小數(shù)點(diǎn)組成,必須要有小數(shù)點(diǎn),整數(shù)部分可省略 eg:0.123, -12.35, .98
2) 指數(shù)形式:e或E代表以10為底的指數(shù), e左邊是數(shù)值部分(有效數(shù)字,可以是整數(shù)、小數(shù),不能省略),e右邊是指數(shù)部分(必須是整數(shù)形式) eg:3.45e-6
13.實(shí)型常量有單精度和雙精度之分,無(wú)有符號(hào)和無(wú)符號(hào)之分
14.不同類型的實(shí)型常量表示形式:
1)單精度實(shí)型常量:常量值后跟F或f eg:1.25F,1.25e-2f
2)雙精度實(shí)型常量(double):實(shí)型常量默認(rèn)按雙精度處理 eg:0.123,-12.35, .98
3)長(zhǎng)雙精度實(shí)型常量(long double):常量值后跟L或l eg:1.25L
15.變量:在程序執(zhí)行過(guò)程中可以改變的量
16.變量在必須先定義后使用,定義時(shí)需要聲明變量的類型和變量名,一般形式:類型關(guān)鍵字 變量名;
17.關(guān)鍵字是C語(yǔ)言預(yù)先規(guī)定具有特殊意義的單詞,類型關(guān)鍵字用于聲明變量的類型
18.標(biāo)準(zhǔn)C語(yǔ)言編寫(xiě)的程序都是以main()作為開(kāi)頭,指定了C程序執(zhí)行的起點(diǎn),在C程序中只能出現(xiàn)一次,稱為主函數(shù)
19.C程序總是從main函數(shù)開(kāi)始執(zhí)行,與他在程序中的位置無(wú)關(guān),main函數(shù)主體部分稱為語(yǔ)句,用{}括起來(lái),一般C語(yǔ)句以;結(jié)束
20.變量的類型決定了編譯器為其分配內(nèi)存單元的字節(jié)數(shù)、數(shù)據(jù)在內(nèi)存單元中的存放形式、該類型變量合法的取值范圍以及該類型變量可參與的運(yùn)算種類
21.變量名是用戶定義的標(biāo)識(shí)符,用于標(biāo)識(shí)內(nèi)存中具體的存儲(chǔ)單元,存放的數(shù)據(jù)稱為變量的值
22.新數(shù)據(jù)存放于存儲(chǔ)單元時(shí),舊數(shù)據(jù)將會(huì)被修改,反應(yīng)變量的值是可以改變的
23.變量名的命名規(guī)則:
1)標(biāo)識(shí)符只能由英文字母、數(shù)字、下劃線組成
2)標(biāo)識(shí)符必須以字母或下劃線開(kāi)頭
3)不允許使用C關(guān)鍵字為標(biāo)識(shí)符命名
4)標(biāo)識(shí)符可以包含任意多個(gè)字符,但一般會(huì)有最大長(zhǎng)度限制,預(yù)編譯器有關(guān),一般不會(huì)超過(guò),最好不超過(guò)8個(gè)字符
注意:標(biāo)識(shí)符區(qū)分大小寫(xiě)
eg:x y3 _imax ELSE X A_to_B (合法)
eg:7x int #No bad one re-input(不合法)
24.標(biāo)準(zhǔn)C規(guī)定所有變量必須在第一條可執(zhí)行語(yǔ)句之前定義
25.在同一條語(yǔ)句中可以同時(shí)定義多個(gè)相同類型變量,多個(gè)變量之間用逗號(hào)分隔,沒(méi)有順序要求
26.在使用標(biāo)準(zhǔn)輸入/輸出函數(shù)時(shí),必須在程序開(kāi)頭加上編譯預(yù)處理命令
27.中stdio為頭文件,std是standard,i為input,o為output,h為head
28.編譯預(yù)處理命令#include的作用:將在輸入/輸出函數(shù)的頭文件stdio.h包含到用戶源文件中
29.%d按十進(jìn)制整數(shù)個(gè)格式輸出,%f按十進(jìn)制小數(shù)格式輸出,一般輸出6位小數(shù),%c輸出一個(gè)字符, 換行,雙引號(hào)內(nèi)字符原樣輸出
30.不同類型的數(shù)據(jù)在內(nèi)存中占用不同大小的存儲(chǔ)單元,他們所能表示的數(shù)據(jù)的取值范圍各不相同,不同類型的數(shù)據(jù)表示形式及其可以參與的運(yùn)算種類也不同
31.定義整型變量時(shí),只要不指定為無(wú)符號(hào)型,其隱含類型為有符號(hào)型,signed通常省略不寫(xiě)
32.C程序中每個(gè)變量的值都是按字節(jié)編址,都被存儲(chǔ)在內(nèi)存中特定的存儲(chǔ)單元中,這個(gè)存儲(chǔ)空間實(shí)際是一個(gè)線性地址表,即每個(gè)字節(jié)的存儲(chǔ)空間對(duì)應(yīng)一個(gè)唯一的地址
33.1個(gè)字節(jié)等于8個(gè)二進(jìn)制位,即8個(gè)位為一個(gè)字節(jié),一個(gè)字節(jié)可以表示的整數(shù)最小為0,最大255,即8個(gè)位可以表示0-255之間的數(shù),一個(gè)二進(jìn)制位的值只能是0或1
34.同種類型在不同的平臺(tái)所占字節(jié)數(shù)不同,要計(jì)算數(shù)據(jù)類型所占內(nèi)存空間的字節(jié)數(shù)需要用sizeof()運(yùn)算符
35.sizeof是C語(yǔ)言關(guān)鍵字,不是函數(shù)名,sizeof(變量名)計(jì)算一個(gè)變量所占內(nèi)存的字節(jié)數(shù)
36.計(jì)算不同類型運(yùn)算符的表達(dá)式時(shí),要考慮運(yùn)算符的優(yōu)先級(jí)和結(jié)合性
37.正數(shù)的反碼、補(bǔ)碼與原碼都相同,負(fù)數(shù)的補(bǔ)碼等于反碼加1
38.在計(jì)算機(jī)內(nèi)存中負(fù)數(shù)都是用補(bǔ)碼來(lái)表示
39.對(duì)于實(shí)數(shù),無(wú)論小數(shù)海曙指數(shù)形式,在計(jì)算機(jī)內(nèi)存中都采用浮點(diǎn)形式來(lái)存儲(chǔ)
40.浮點(diǎn)數(shù)分為階碼、尾數(shù)兩部分,實(shí)數(shù)N=S*pow(r,j),S為尾數(shù)(無(wú)論正負(fù),規(guī)定用存小數(shù)),j為階碼(無(wú)論正負(fù),必須是整數(shù)),r是基數(shù) eg:10.0111=0.100111*pow(2,10)
41.階碼所占位數(shù)決定實(shí)數(shù)的取值范圍,尾數(shù)所占位數(shù)決定實(shí)數(shù)的精度,尾數(shù)的符號(hào)決定實(shí)數(shù)的正負(fù),階碼和尾數(shù)的字節(jié)大小與編譯器有關(guān)
42.float型變量能接收實(shí)型常量的7位有效數(shù)字,double型變量能接收16位
43.運(yùn)算符的優(yōu)先級(jí):?jiǎn)文窟\(yùn)算<算術(shù)運(yùn)算<關(guān)系運(yùn)算<邏輯運(yùn)算<條件運(yùn)算<賦值運(yùn)算<逗號(hào)運(yùn)算
44.素?cái)?shù):又稱質(zhì)數(shù),指在大于1的自然數(shù)中,除1和本身不能被其他自然數(shù)整除的數(shù)
45.合數(shù):指在自然數(shù)中除1和本身外還能被其他自然數(shù)整除的數(shù)
46.因子:所有能整除這個(gè)數(shù)的數(shù),不包括自身,但包括1
47.閏年:能被4整除但不能被100整除,或能被400整除
二、 簡(jiǎn)單的算術(shù)運(yùn)算和表達(dá)式
1.條件運(yùn)算符是C語(yǔ)言提供的唯一一個(gè)三元運(yùn)算符,C語(yǔ)言中沒(méi)有冪運(yùn)算符
2.只有計(jì)算相反數(shù)是一元運(yùn)算符,其余運(yùn)算符都是二元運(yùn)算符
3.一元運(yùn)算符也叫單目運(yùn)算符,二元運(yùn)算符也叫雙目運(yùn)算符,三元運(yùn)算符也叫三目運(yùn)算符
4.整數(shù)除法的結(jié)果是整數(shù),浮點(diǎn)數(shù)除法的結(jié)果是浮點(diǎn)數(shù)
5.求余運(yùn)算限定參與運(yùn)算的兩個(gè)操作數(shù)必須為整型,余數(shù)的符號(hào)與被除數(shù)的符號(hào)相同,不能對(duì)兩個(gè)實(shí)型數(shù)進(jìn)行求余運(yùn)算
6.所有的算術(shù)運(yùn)算符中只有一元的去相反數(shù)運(yùn)算符為右結(jié)合,其余的結(jié)合性都為左結(jié)合
7.同一優(yōu)先級(jí)的運(yùn)算符進(jìn)行混合運(yùn)算時(shí),從左向右依次進(jìn)行
8.運(yùn)算符的優(yōu)先級(jí):?jiǎn)文窟\(yùn)算>算術(shù)運(yùn)算>關(guān)系運(yùn)算>邏輯運(yùn)算>條件運(yùn)算>賦值運(yùn)算>逗號(hào)運(yùn)算
9.計(jì)算并輸出一個(gè)三位整數(shù)的個(gè)位、十位、百位數(shù)字之和
#include
void main()
{
int x=321;
int a,b,c,sum;
a=x%10;//a=1
b=(x/10)%10;//b=2
c=x/100;//c=3
sum=a+b+c;
printf("a=%d,b=%d,c=%d sum=%d ",a,b,c,sum);
}
10.涉及算術(shù)運(yùn)算的復(fù)合賦值運(yùn)算符有5個(gè):+=,-=,*=,/=,%=
11.增1運(yùn)算符也稱自增運(yùn)算符,減1運(yùn)算符也稱自減運(yùn)算符,都是一元運(yùn)算符,只有一個(gè)操作數(shù)必須是變量不能是常量或表達(dá)式
12.自增自減運(yùn)算符作為前綴時(shí),先執(zhí)行加1或減1然后使用;自增自減運(yùn)算符作為后綴時(shí),先使用再執(zhí)行加1或減1;
13.考慮優(yōu)先級(jí)與結(jié)合性的實(shí)例
m=-n++《=》m=-(n++)《=》m=-n,n=n+1;
//正面:-和++都是一元運(yùn)算符,優(yōu)先級(jí)相同,此時(shí)要考慮結(jié)合性,結(jié)合性都是右結(jié)合的,所以先算++后算-
//反面:如果等價(jià)m=(-n)++就不合法了,因?yàn)楸磉_(dá)式不能進(jìn)行自增操作
14.scanf函數(shù)和printf函數(shù)都是C的標(biāo)準(zhǔn)輸入/輸出函數(shù),&為取地址運(yùn)算符
15.宏常量與宏替換:
1) 在程序中直接使用的常數(shù)稱為幻數(shù),將幻數(shù)定義為宏常量或const常量是為了提高程序的可讀性和可維護(hù)性
2) 宏常量也稱符號(hào)常量,沒(méi)有數(shù)據(jù)類型,編譯器不對(duì)其進(jìn)行類型檢查,只進(jìn)行字符串替換
3) 宏定義一般形式:#define 標(biāo)識(shí)符 字符串。標(biāo)識(shí)符被稱為宏名,宏名與字符串之間可有多個(gè)空白符,不加等號(hào),結(jié)尾不加分號(hào)
4) 宏常量是由宏定義編譯預(yù)處理命令來(lái)定義,宏名替換成字符串的過(guò)程稱為宏替換,宏替換不做任何語(yǔ)法檢查
5) 當(dāng)宏定義是一個(gè)表達(dá)式時(shí),調(diào)用時(shí),是一個(gè)數(shù)就可以直接帶入,而是表達(dá)式也要看成是一個(gè)數(shù)代進(jìn)宏定義表達(dá)式中,
而看成一個(gè)數(shù)這就要求把調(diào)用的數(shù)加上圓括號(hào),為了減少不必要的錯(cuò)誤,最好都加上圓括號(hào)
6) 宏替換的過(guò)程是將宏名原樣替換成字符串,而不是直接計(jì)算出值,所以要用調(diào)用后的結(jié)果參與其他運(yùn)算就需要把調(diào)用的結(jié)果加上圓括號(hào)
7) 例題:
#include
#define N 2 //N=2
#define M N+1 //M=2+1
#define NUM 2*M+1 //NUM=2*2+1+1=6
void main()
{
int i;
for(i=1;i<=NUM;i++);
printf("%d ",i); //執(zhí)行完空循環(huán),i=7
i--; // i=6
printf("%d ",i);
}
8) 例題:
#include
#define f(x) x*x
void main()
{
int b;
b=f(4+4); //b=4+4*4+4=24,解釋見(jiàn)5)
printf("b=%d ",b);
}
9) 例題:
#include
#define f(x) x*x
void main()
{
int b;
b=f(4+4)/(2+2); //b=4+4*4+4/(2+2)=21解釋見(jiàn)6)
printf("b=%d ",b);
}
10) 例題:
#include
#define f(x) x*x
void main()
{
int b;
b=f((4+4)); //b=(4+4)*(4+4)=64
printf("b=%d ",b);
}
11) 例題:
#include
#define f(x) (x*x)
void main()
{
int b;
b=f((4+4))/(2+2); //b=((4+4)*(4+4))/(2+2)=16
printf("b=%d ",b);
}
16.const常量
1) const常量只能在定義時(shí)賦初值,因?yàn)榫幾g器將其放在只讀存儲(chǔ)區(qū),不允許在程序中修改
2) const常量的定義一般形式:const 類型名 標(biāo)識(shí)符=字符串;//將標(biāo)識(shí)符聲明為具有該數(shù)據(jù)類型的const常量
3) const是一種類型修飾符,const常量具有數(shù)據(jù)類型,編譯器要對(duì)其進(jìn)行類型檢查
17.表達(dá)式中的自動(dòng)類型轉(zhuǎn)換:
1) 表達(dá)式中,操作數(shù)類型相同,運(yùn)算的結(jié)果類型與操作數(shù)類型相同
2) 表達(dá)式中,操作數(shù)類型不相同,C編譯器自動(dòng)將所有操作數(shù)進(jìn)行類型提升,轉(zhuǎn)換成同一類型,所占字節(jié)最大,再計(jì)算
18.賦值中的自動(dòng)類型轉(zhuǎn)換:
1) 賦值運(yùn)算符左側(cè)變量與右側(cè)表達(dá)式類型不同時(shí),發(fā)生自動(dòng)類型轉(zhuǎn)換:右側(cè)表達(dá)式的值轉(zhuǎn)換成左側(cè)變量的類型
19.強(qiáng)制類型轉(zhuǎn)換:
1) 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符是一元運(yùn)算符
2) 強(qiáng)制類型轉(zhuǎn)換也稱強(qiáng)轉(zhuǎn),是將表達(dá)式的值轉(zhuǎn)換為任意類型,并不改變變量本身的數(shù)據(jù)類型
3) 強(qiáng)轉(zhuǎn)一般形式:(類型)表達(dá)式
4) 演示強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的使用
#include
void main()
{
int m=5;
printf("m/2=%d ",m/2);//m=2
printf("(float)(m/2)=%f ",(float)(m/2));//m=2.000000
printf("(float)m/2=%f ",(float)m/2);//m=2.500000
printf("m=%d ",m);//m=5,只是將m強(qiáng)轉(zhuǎn)為實(shí)型數(shù)據(jù),并不改變m的數(shù)據(jù)類型 }
20.常用的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù):
1) 使用C標(biāo)準(zhǔn)數(shù)學(xué)函數(shù),要在程序開(kāi)頭加上編譯預(yù)處理命令:#include
2) 例:已知三角形三邊長(zhǎng)為a,b,c,計(jì)算三角形的面積
#include
#include
void main()
{
float a,b,c,s,area;
printf("Input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
s=(a+b+c)/2;
area=(float)sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%f ",area);
}
21.賦值運(yùn)算符的左側(cè)不能出現(xiàn)表達(dá)式,變量與變量之間可以賦值
例1:若有定義:int a,b,c;下列表達(dá)式中哪一個(gè)是合法的C語(yǔ)言賦值表達(dá)式(C、D)
A)a=7+b=c=7 B)a=b++=c=7 C)a=(b=7,c=12) D)a=3,b=a+5,c=b+2
//A.7+b表達(dá)式不能做左值 B.b++表達(dá)式不能做左值 C.逗號(hào)表達(dá)式a=12 D.依次賦值
例2:下面不正確的賦值語(yǔ)句是(B)
A)a=++a B)a=b++=10 C)a+=b D)a=1>a
//D.算術(shù)運(yùn)算符優(yōu)先級(jí)高于賦值運(yùn)算符,先算1>a再將其結(jié)果賦給a
例3:若有下列定義:int a=3,b=2,c=1;以下選項(xiàng)錯(cuò)誤的賦值表達(dá)式是(A)
A)a=(b=4)=3 B)a=b=c+1 C)a=(b=4)+c D)a=1+(b=c=4)
//A.先計(jì)算圓括號(hào)里的值等于4,然后按照賦值表達(dá)式的順序從右向左計(jì)算,將3賦值給4這是不對(duì)的,即賦值號(hào)左側(cè)只能是變量,不能出現(xiàn)表達(dá)式b=4
三、 鍵盤(pán)輸入和屏幕輸出
1.字符常量:
把字符放在一對(duì)單引號(hào)內(nèi),適用于多數(shù)可打印字符
2.轉(zhuǎn)義字符:
以反斜線()開(kāi)頭,也是放在一對(duì)單引號(hào)內(nèi),適用于控制字符(如回車符,換行符)
3.常用的轉(zhuǎn)義字符:
1) — 換行 8) a — 響鈴報(bào)警提示音
2) — 回車(不換行) 9) " — 一個(gè)雙引號(hào)
3) — 空字符 10) — 一個(gè)單引號(hào)
4) — 水平制表 11) — 一個(gè)反斜線
5) v — 垂直制表 12) ? — 問(wèn)號(hào)
6) — 退格 13) ddd —1到3位八進(jìn)制ASCII碼值所代表的字符
7) f — 走紙換頁(yè) 14) xhh —1到2位十六進(jìn)制ASCII碼值所代表的字符
4. ,是將光標(biāo)移到下一行起始位置, 是將光標(biāo)移到當(dāng)前行的起始位置
5. ,是水平制表符,相當(dāng)于按下Tab鍵,每次按下Tab鍵并不是從當(dāng)前光標(biāo)位置向后移動(dòng)一個(gè)Tab寬度,而是移到下一個(gè)制表位,實(shí)際移動(dòng)的寬度視當(dāng)前光標(biāo)位置距相鄰的下一個(gè)制表位的距離而定
6.制表位,屏幕上的一行被分為若干個(gè)域,相鄰域之間的交接點(diǎn)稱為制表位,每個(gè)域的寬度就是一個(gè)Tab寬度,多數(shù)習(xí)慣上為4
7.當(dāng)轉(zhuǎn)義序列出現(xiàn)在字符串中時(shí),是按單個(gè)字符計(jì)數(shù)的
8.一個(gè)整形數(shù)在內(nèi)存中是以二進(jìn)制形式存儲(chǔ)的,而一個(gè)字符在內(nèi)存中也是以其對(duì)應(yīng)的ASCII碼的二進(jìn)制形式存儲(chǔ)的,但char型數(shù)據(jù)在內(nèi)存中只占一個(gè)字節(jié),而int型數(shù)據(jù)在16位系統(tǒng)中占2個(gè)字節(jié),32位系統(tǒng)占4個(gè)字節(jié)。
9.在ASCII碼取值范圍內(nèi),char型數(shù)據(jù)可以和int型數(shù)據(jù)進(jìn)行混合運(yùn)算,char型數(shù)據(jù)也能以int型輸出,直接輸出其對(duì)應(yīng)的ASCII碼的十進(jìn)制值
10.字符的輸入/輸出:
1) get)和put)是C標(biāo)準(zhǔn)函數(shù)庫(kù)中專門(mén)用于字符輸入/輸出的函數(shù),功能是只能輸入/輸出一個(gè)字符
2) 例:從鍵盤(pán)輸入一個(gè)大寫(xiě)英文字母,將其轉(zhuǎn)換為小寫(xiě)字母顯示在屏幕上
#include
void main()
{
char ch;
ch=get);//鍵盤(pán)輸入一個(gè)字符,再按回車表示輸入結(jié)束,字符存入變量ch,注意:get)沒(méi)有參數(shù),直接返回讀入的字符
ch=ch+32;
putch);//第二次按回車,將顯示轉(zhuǎn)換后的結(jié)果
put );//注意:put)內(nèi)一定要有參數(shù),參數(shù)就是待輸出的字符,可以是可打印字符,也可是轉(zhuǎn)義字符
}
11.數(shù)據(jù)的格式化屏幕輸出:
1) 函數(shù)printf()的一般格式:printf(格式控制字符串);或者printf(格式控制字符串,輸出值參數(shù)表);
2) 格式控制字符串包括:格式轉(zhuǎn)換說(shuō)明符,需要原樣輸出的普通字符
3) 函數(shù)printf()的格式轉(zhuǎn)換說(shuō)明符:
%d — 輸出帶符號(hào)十進(jìn)制整數(shù),整數(shù)符號(hào)省略
%u — 輸出無(wú)符號(hào)十進(jìn)制整數(shù)
%o — 輸出無(wú)符號(hào)八進(jìn)制整數(shù),不輸出前導(dǎo)符0
%x — 輸出無(wú)符號(hào)十六進(jìn)制整數(shù)(小寫(xiě)),不輸出前導(dǎo)符0x
%X — 輸出無(wú)符號(hào)十六進(jìn)制整數(shù)(大寫(xiě)),不輸出前導(dǎo)符0x
%c — 輸出一個(gè)字符
%s — 輸出字符串
%f — 以十進(jìn)制小數(shù)形式輸出實(shí)數(shù),包含單,雙精度,隱含6位小數(shù),但并非全是有效數(shù)字,單精度有效7位,雙精度16位
%e — 以指數(shù)形式輸出實(shí)數(shù)(小寫(xiě)e表示指數(shù)部分),小數(shù)點(diǎn)前有且僅有一位非0數(shù)字
%E — 以指數(shù)形式輸出實(shí)數(shù)(大寫(xiě)E表示指數(shù)部分)
%g — 自動(dòng)選取f或e格式中寬度較小的一種使用,不輸出無(wú)意義的0
%% — 輸出%
4) 輸出值參數(shù)表:需要輸出的數(shù)據(jù)項(xiàng)的列表,可以是變量或表達(dá)式,逗號(hào)隔開(kāi),類型與格式轉(zhuǎn)換說(shuō)明符相匹配
5) 每個(gè)格式轉(zhuǎn)換說(shuō)明符與輸出值參數(shù)表中的輸出值參數(shù)一一對(duì)應(yīng),沒(méi)有輸出值參數(shù),格式控制字符串就不需要格式轉(zhuǎn)換說(shuō)明符
6) 例:從鍵盤(pán)輸入一個(gè)大寫(xiě)英文字母,將其轉(zhuǎn)換為小寫(xiě)字母和其十進(jìn)制ASCII碼值顯示在屏幕上
#include
void main()
{
char ch;
printf("Please enter a key:");
ch=get);
ch=ch+32;
printf("%c,%d ",ch,ch);//printf("%c",ch)<<=>>putch),printf(" ")<<=>>put ) }
7) 函數(shù)printf()中的格式修飾符:在%和格式符中間插入格式修飾符,用于輸出格式的微調(diào),如:指定輸出域?qū)?、精度、左?duì)齊等
英文字母l — 修飾格式符d,o,x,u時(shí),用于輸出long型數(shù)據(jù)
英文字母L — 修飾格式符f,e,g時(shí),用于輸出long double型數(shù)據(jù)
英文字母h — 修飾格式符d,o,x時(shí),用于輸出short型數(shù)據(jù)
輸出域?qū)抦 — m為整數(shù),輸出時(shí)占m列,若m>0,當(dāng)數(shù)據(jù)寬度小于m時(shí),域內(nèi)右靠齊,左補(bǔ)空格,當(dāng)數(shù)據(jù)寬度大于m時(shí),修飾符失效,按實(shí)際寬度輸出,若m有前導(dǎo)符0,左邊多余位補(bǔ)0;若m<0,輸出數(shù)據(jù)在域內(nèi)左靠齊
顯示精度 .n — n為大于等于0的整數(shù),精度修飾符位于最小域?qū)捫揎椃螅蓤A點(diǎn)和整數(shù)構(gòu)成,對(duì)于浮點(diǎn)數(shù),用于指定輸出的浮點(diǎn)數(shù)小數(shù)位數(shù);對(duì)于字符串,用于指定從字符串左側(cè)開(kāi)始截取的子串字符個(gè)數(shù)
8) 使用const常量定義pi,編程從鍵盤(pán)輸入圓的周長(zhǎng)和面積,使其輸出數(shù)據(jù)保留兩位小數(shù)
#include
void main()
{
const double pi=3.14159;
double r,circum,area;
printf("Please enter r:");
scanf("%lf",&r);
circum=2*pi*r;
area=pi*r*r;
printf("輸出沒(méi)有寬度和精度的值:");
printf("circum=%f,area=%f ",circum,area);
printf("輸出沒(méi)有寬度和精度的值:");
printf("circum=%7.2f,area=%7.2f ",circum,area);//域?qū)挒?,占7個(gè)字符寬度,小數(shù)點(diǎn)也算一個(gè)字符,精度為2,小數(shù)點(diǎn)后保留2位
}
12.數(shù)據(jù)的格式化鍵盤(pán)輸入:
1) 函數(shù)scanf()的一般格式:scanf(格式控制字符串,參數(shù)地址表);
2) 格式控制字符串:包括格式轉(zhuǎn)換說(shuō)明符,分隔符
3) 格式轉(zhuǎn)換說(shuō)明符以%開(kāi)始,以格式字符結(jié)束,用于指定各參數(shù)的輸入格式
4) 函數(shù)scanf()的格式轉(zhuǎn)換說(shuō)明符:
%d — 輸入十進(jìn)制整數(shù)
%o — 輸入八進(jìn)制整數(shù)
%x — 輸入十六進(jìn)制整數(shù)
%c — 輸入一個(gè)字符,空白字符(包括空格、回車、制表符)也作為有效字符輸入 %s — 輸入字符串,遇到第一個(gè)空白字符(包括空格、回車、制表符)時(shí)結(jié)束 %f或%e — 輸入實(shí)數(shù),以小數(shù)或指數(shù)形式輸入均可
%% — 輸入一個(gè)%
5) 參數(shù)地址表:由若干變量的地址組成的列表,用逗號(hào)分隔
6) 函數(shù)scanf()中的格式修飾符:在%和格式符中間插入格式修飾符
英文字母l — 加在格式符d,o,x,u之前,用于輸入long型數(shù)據(jù);加在f,e之前,用于輸入double型數(shù)據(jù)
英文字母L — 加在格式符f,e之前,用于輸入long double型數(shù)據(jù)
英文字母h — 加在格式符d,o,x時(shí),用于輸入short型數(shù)據(jù)
輸出域?qū)抦 — m為正整數(shù),指定輸入數(shù)據(jù)的寬度,系統(tǒng)自動(dòng)按此寬度截取所需數(shù)據(jù)
顯示精度 .n — n為0或正整數(shù),scanf()沒(méi)有精度格式修飾符,輸入時(shí)不能規(guī)定精度 忽略輸入修飾符* — 表示對(duì)應(yīng)的輸入項(xiàng)在讀入后不賦給相應(yīng)的變量
7) 函數(shù)scanf()輸入數(shù)值型數(shù)據(jù)時(shí),被認(rèn)為輸入結(jié)束的幾種情況:遇空格符、回車符、制表符;達(dá)到輸出域?qū)?遇非法字符輸入
8) 如果函數(shù)scanf()的格式控制字符串中存在除格式轉(zhuǎn)換說(shuō)明符以外的其他字符,必須將這些字符原樣輸入
#include
void main()
{
int a,b;
scanf("%d %d",&a,&b); //以空格作為分隔符,等價(jià)于scanf("%d%d",&a,&b),等價(jià)于scanf("%d %d",&a,&b),
printf("a=%d,b=%d ",a,b);//實(shí)際輸入時(shí),空格、回車符、制表符都可作為分隔符,即輸入:12空格34 12回車34 12制表符34均可,
}
#include
void main()
{
int a,b;
scanf("%d,%d",&a,&b);//輸入時(shí)必須以逗號(hào)作為分隔符,即只能輸入:12,34
printf("a=%d,b=%d ",a,b);
}
#include
void main()
{
int a,b;
scanf("a=%d,b=%d",&a,&b);//輸入時(shí)必須將"a="和"b="原樣輸入,即只能輸入:a=12,b=34 printf("a=%d,b=%d ",a,b);
C語(yǔ)言程序架構(gòu)
1.多模塊初始化注冊(cè)架構(gòu)
一個(gè)大型軟件由多個(gè)模塊構(gòu)成,在初始化過(guò)程中,依次調(diào)用這些模塊的初始化函數(shù),這些初始化函數(shù)將這些模塊內(nèi)部提供的可供調(diào)用接口集中注冊(cè)到一個(gè)大的數(shù)據(jù)結(jié)構(gòu)中。然后main函數(shù)才開(kāi)始處理接收到的參數(shù),根據(jù)收到參數(shù)的不同,去調(diào)用大數(shù)據(jù)結(jié)構(gòu)中不同的接口函數(shù)。
適用場(chǎng)景:適用于構(gòu)造交互式程序,初始化時(shí),所有模塊都注冊(cè)好,開(kāi)始接受用戶輸入時(shí),根據(jù)輸入?yún)?shù)調(diào)用不同的函數(shù)接口。
2.查表架構(gòu)
1). 在實(shí)現(xiàn)read,write,trim命令按照一定比率下發(fā)到設(shè)備的程序中,通過(guò)構(gòu)造一個(gè)長(zhǎng)度為100的數(shù)組,其中25個(gè)置為0代表read的比例,25個(gè)置為1代表write的比例,50個(gè)置為2代表trim的比例,通過(guò)生成大量的0~99的隨機(jī)數(shù),達(dá)到read,write,trim命令為25:25:50的比例。
2).一個(gè)下發(fā)隊(duì)列,可以接受read,write,erase命令,而該隊(duì)列的規(guī)則是最多同時(shí)處理4個(gè)read,2個(gè)write和1個(gè)erase,在想知道該下發(fā)隊(duì)列還能接收什么命令時(shí),通過(guò)查表實(shí)現(xiàn),例如,下發(fā)隊(duì)列中當(dāng)前有1個(gè)write命令,則查表可以,它還可以接收1個(gè)write或2個(gè)read,不能接收erase。
適用場(chǎng)景:控制邏輯比較復(fù)雜的情況,適宜適用查表的方法來(lái)避免復(fù)雜的邏輯,以空間換時(shí)間。
3.交叉遍歷架構(gòu)
見(jiàn)前文:從m個(gè)不定長(zhǎng)數(shù)組中 各取一個(gè)元素的組合生成算法
適用場(chǎng)景:適合交叉遍歷測(cè)試程序的編寫(xiě)。
C語(yǔ)言基礎(chǔ)循環(huán)結(jié)構(gòu)
1.1 for循環(huán)結(jié)構(gòu)
1.for循環(huán)語(yǔ)句的一般表達(dá)式是:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句
2.C語(yǔ)言語(yǔ)法規(guī)定:循環(huán)體語(yǔ)句只能包含一條語(yǔ)句,若需多條語(yǔ)句,應(yīng)使用復(fù)合語(yǔ)句。
1.2 while和do while循環(huán)結(jié)構(gòu)
1.while語(yǔ)句用來(lái)實(shí)現(xiàn)″當(dāng)型″循環(huán)結(jié)構(gòu),它的.一般形式如下:
while(表達(dá)式)語(yǔ)句
當(dāng)表達(dá)式為非0值時(shí)執(zhí)行while語(yǔ)句中內(nèi)嵌的語(yǔ)句;當(dāng)表達(dá)式的值為0時(shí),直接跳過(guò)while語(yǔ)句后面的語(yǔ)句,執(zhí)行下一條語(yǔ)句。
2.while語(yǔ)句執(zhí)行的特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語(yǔ)句。
3.do while用來(lái)實(shí)現(xiàn)″直到型″循環(huán)結(jié)構(gòu),它的一般形式為:
do語(yǔ)句
while(表達(dá)式);
這個(gè)語(yǔ)句執(zhí)行時(shí),先執(zhí)行一次指定的內(nèi)嵌的語(yǔ)句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非0時(shí),返回重新執(zhí)行該語(yǔ)句,如此反復(fù),直到表達(dá)式的值為等于0為止,此時(shí)循環(huán)結(jié)束。
4.do while語(yǔ)句執(zhí)行的特點(diǎn)是:先執(zhí)行語(yǔ)句,后判斷表達(dá)式。
1.3 continue語(yǔ)句和break語(yǔ)句
1.break語(yǔ)句有兩個(gè)用途:①在switch語(yǔ)句中用來(lái)使流程跳出switch結(jié)構(gòu),繼續(xù)執(zhí)行switch語(yǔ)句后面的語(yǔ)句;②用在循環(huán)體內(nèi),迫使所在循環(huán)立即終止,即跳出所在循環(huán)體,繼續(xù)執(zhí)行循環(huán)體后面的第一條語(yǔ)句。
2.continue語(yǔ)句結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中尚未執(zhí)行的語(yǔ)句。在while和do while語(yǔ)句中,continue語(yǔ)句將使控制直接轉(zhuǎn)向條件測(cè)試部分,從而決定是否繼續(xù)轉(zhuǎn)向循環(huán)。在for循環(huán)中,遇到continue語(yǔ)句后,首先計(jì)算for語(yǔ)句表達(dá)式3的值,然后再執(zhí)行條件測(cè)試(表達(dá)式2),最后根據(jù)測(cè)試結(jié)果來(lái)決定是否繼續(xù)轉(zhuǎn)向for循環(huán)。
1.4 循環(huán)的嵌套
1.一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就是多層循環(huán)。
2.三種循環(huán)(while循環(huán)、do while循環(huán)和for循環(huán))可以互相嵌套。
- IT基礎(chǔ)常識(shí)有哪些_IT基礎(chǔ)架構(gòu)的類型
- IT基礎(chǔ)架構(gòu)知識(shí)有哪些_IT基礎(chǔ)知識(shí)
- java語(yǔ)言編程基礎(chǔ)知識(shí)有哪些_Java語(yǔ)言基礎(chǔ)
- Java語(yǔ)法基本知識(shí)有哪些_java語(yǔ)法基本編程
- java基本知識(shí)有哪些_Java語(yǔ)言的特點(diǎn)
- URI和URL的區(qū)別有哪些_URI的格式
- 大數(shù)據(jù)的概念及趨勢(shì)_大數(shù)據(jù)的特點(diǎn)
- c語(yǔ)言的應(yīng)用及注意事項(xiàng)_C語(yǔ)言編譯器gcc命令
- C語(yǔ)言的用法及特點(diǎn)_C語(yǔ)言怎樣輸出菱形
- it入門(mén)基礎(chǔ)常識(shí)有哪些_IT英文縮寫(xiě)
- IT技術(shù)知識(shí)有哪些_IT互聯(lián)網(wǎng)基礎(chǔ)知識(shí)術(shù)語(yǔ)
- 電腦鍵盤(pán)功能基礎(chǔ)知識(shí)有哪些_鍵盤(pán)按鍵的入