molecule=QT*950*3.0e-23
龍州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
后面少了個(gè)分號(hào),每條語(yǔ)句都必須要用分好結(jié)尾。
stdlib不是個(gè)函數(shù).
stdlib.h是頭文件,該文件包含了的C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)的定義
stdlib.h里面定義了五種類型、一些宏和通用工具函數(shù)。 類型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函數(shù)如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。 具體的內(nèi)容你自己可以打開(kāi)編譯器的include目錄里面的stdlib.h頭文件看看。
函數(shù)的作用就相當(dāng)于一臺(tái)機(jī)器,這種機(jī)器的作用各不相同。不同的函數(shù)能完成不同的特定的功能。就像你放玉米進(jìn)去,它出來(lái)的是爆米花一樣。它就對(duì)玉米進(jìn)行處理了。而c語(yǔ)言的函數(shù)就是你放入數(shù)據(jù),它就會(huì)對(duì)數(shù)據(jù)進(jìn)行處理。
數(shù)組的作用就是存儲(chǔ)數(shù)據(jù)的作用。是存儲(chǔ)數(shù)據(jù)的類型的一種。計(jì)算機(jī)處理的就是數(shù)據(jù)。存儲(chǔ)數(shù)據(jù),你說(shuō)重要不?就像電腦沒(méi)有內(nèi)存,它怎么運(yùn)行啊?
上面是通俗的介紹,補(bǔ)充幾點(diǎn):
1:函數(shù)是很重要的,沒(méi)有函數(shù)c語(yǔ)言程序無(wú)法運(yùn)行,包括大多數(shù)語(yǔ)言都是這樣,因?yàn)楸仨氁幸粋€(gè)主函數(shù)(main)。
2:函數(shù)可以把不同功能的代碼獨(dú)立到一個(gè)地方,減少耦合性,提高代碼可重用性,增強(qiáng)程序的安全性。
3:不同類型的函數(shù)有不同的功能,按照不同分類有不同的叫法。比如庫(kù)函數(shù)是系統(tǒng)自帶的“庫(kù)”,回調(diào)函數(shù)用于處理操作系統(tǒng)的問(wèn)題,API函數(shù)叫做應(yīng)用程序接口函數(shù)。
加油,越學(xué)越明白。
C語(yǔ)言基礎(chǔ)(01-引言及預(yù)備知識(shí)): C語(yǔ)言是一門功能強(qiáng)大的編程語(yǔ)言,它也是C++語(yǔ)言的基礎(chǔ)。C語(yǔ)言屬于中級(jí)語(yǔ)言。這里所說(shuō)的中級(jí)是相對(duì)于計(jì)算機(jī)的底層硬件而言的。匯編語(yǔ)言是最低級(jí)的語(yǔ)言,它可以直接與硬件打交道。高級(jí)語(yǔ)言有Pascal、Basic、Fortran等等。高級(jí)語(yǔ)言的一條語(yǔ)句對(duì)應(yīng)低級(jí)語(yǔ)言的很多條語(yǔ)句,任何高級(jí)語(yǔ)言編寫的程序都要經(jīng)過(guò)編譯程序的編譯、連接才能成為可以運(yùn)行的程序。編譯連接的過(guò)程也就是把高級(jí)語(yǔ)言翻譯成機(jī)器語(yǔ)言(二進(jìn)制機(jī)器碼)的過(guò)程,而匯編語(yǔ)言是基本上與機(jī)器語(yǔ)言一 一對(duì)應(yīng)的一種語(yǔ)言。這個(gè)翻譯過(guò)程是由編譯程序自動(dòng)完成的。把C語(yǔ)言定為中級(jí)語(yǔ)言是有它的道理的,因?yàn)镃語(yǔ)言既有匯編語(yǔ)言的存取底層硬件的能力,又具有高級(jí)語(yǔ)言的許多特點(diǎn)。熟練掌握了C語(yǔ)言,學(xué)習(xí)其它的各種編程語(yǔ)言應(yīng)該是很輕松的了。
C語(yǔ)言的書寫格式:
1) 一個(gè)C語(yǔ)言編寫的源程序,必定有一個(gè)主程序(稱為main()函數(shù),在C語(yǔ)言中子程序稱為“函數(shù)”(當(dāng)然,不要理解成為數(shù)學(xué)里面的“函數(shù)”)。但是決不能有一個(gè)以上的main函數(shù)(即只能有一個(gè))。
2) 函數(shù)語(yǔ)句塊用‘{’括號(hào)開(kāi)始, 以‘}’反括號(hào)結(jié)束。這樣的花括號(hào)必須成對(duì)出現(xiàn)。
3) 表達(dá)式寫在小括號(hào)里面,以‘(’括號(hào)開(kāi)始,以‘)’反括號(hào)結(jié)束。
4) 函數(shù)不能嵌套,即函數(shù)里面不能再套函數(shù)。(每一個(gè)函數(shù)是完成一個(gè)特定功能的函數(shù)模塊)
C語(yǔ)言的組成:
C語(yǔ)言是由許多函數(shù)組成的。其中只有一個(gè)主函數(shù)(main()函數(shù))。C程序執(zhí)行時(shí)總是從main函數(shù)的‘{’處開(kāi)始,至main函數(shù)的反大括號(hào)'}'處結(jié)束。當(dāng)然還有其它一些規(guī)則,這將在以后的學(xué)習(xí)中去熟悉它。
C語(yǔ)言的書寫規(guī)則:
C語(yǔ)言在書寫時(shí)有它自身的特點(diǎn):書寫格式比較自由,在一行里可以寫多條語(yǔ)句,一個(gè)語(yǔ)句也可以分寫在多行上。雖然如此,在書寫源程序時(shí)還是要注意哪些可以自由書寫,而哪些必須要按照書寫規(guī)則來(lái)書寫。
幾條規(guī)則寫在下面:
1) 一行內(nèi)可以寫幾個(gè)語(yǔ)句,建議一行不超過(guò)兩條語(yǔ)句;
2) 一條語(yǔ)句可以寫在多行上;
3) C語(yǔ)句不需要寫行標(biāo)號(hào);
4) 每條語(yǔ)句及數(shù)據(jù)定義的后面要寫上分號(hào)以表示該語(yǔ)句結(jié)束;
5) C語(yǔ)言中注釋用 /* */來(lái)表示;
6) 建議書寫時(shí)采用縮進(jìn)格式;
7) 花括號(hào)、小括號(hào)都是成對(duì)出現(xiàn)的。
一個(gè)最簡(jiǎn)單的C程序的編寫:
/* 程序代碼*/ /* 注釋部分*/
main() /*main是主函數(shù)名。緊跟在main后面的括號(hào)是放參數(shù)的。
括號(hào)里面為空說(shuō)明main函數(shù)不需要參數(shù)*/
{ /*正寫的大花括號(hào)表示main函數(shù)從這里開(kāi)始*/
} /*反寫的大花括號(hào)表示main函數(shù)到這里結(jié)束*/
說(shuō)明:由于是一個(gè)演示程序,在函數(shù)體內(nèi)并沒(méi)有任何可以執(zhí)行的語(yǔ)句,也就是這個(gè)程序什么事也不做。
這個(gè)程序就是這么簡(jiǎn)單: 寫在一行上就是 main() { }
你在TC的編輯環(huán)境下把這段代碼輸入進(jìn)去,按F9鍵編譯連接,按CTRL_F5運(yùn)行,一定很正常。但是什么結(jié)果也不會(huì)有,因?yàn)樵趍ain函數(shù)里面什么代碼也沒(méi)有。
下面再舉一個(gè)可以向屏幕上輸出一條信息的例子:
main()
{
printf("這就是C語(yǔ)言編寫的程序!"); /*這一條語(yǔ)句的作用是向屏幕輸出一條信息
”這就是C語(yǔ)言編寫的程序!"*/
}
在這個(gè)程序中,main函數(shù)只有一條語(yǔ)句:printf("這就是C語(yǔ)言編寫的程序!");這個(gè)語(yǔ)句的作用是向屏幕輸出一個(gè)字符串。有關(guān)這個(gè)語(yǔ)句的知識(shí)以后再講。現(xiàn)在要注意的是一個(gè)C語(yǔ)言程序的框架是怎樣組成的。
C語(yǔ)言程序的幾種文件格式:
1、 源程序---在TC集成環(huán)境中輸入的程序文本稱為源程序。源程序是一種文本文件。它是我們看得見(jiàn)并認(rèn)識(shí)的一種文件。其擴(kuò)展名為.C。例如你把文件保存為TEST,那么在磁盤上應(yīng)看得到TEST.C這個(gè)文件。這樣的文件可以用記事本打開(kāi)。
2、二進(jìn)制文件---寫完了源程序后接著要做的是編譯這個(gè)文件。在TC集成環(huán)境里是按ALT_F9鍵,編譯后生成了一個(gè)二進(jìn)制文件,這個(gè)二進(jìn)制文件名為TEST.OBJ,也就是擴(kuò)展名為OBJ的目標(biāo)文件。
3、運(yùn)行文件---最后一步是make(或Link),在TC集成環(huán)境里是按F9鍵Make之后生成了一個(gè)可以在DOS下運(yùn)行的文件,其擴(kuò)展名為EXE。如TEST.EXE。這個(gè)EXE文件是由第2步中的OBJ文件生成的。OBJ文件雖然是二進(jìn)制文件,而電腦又是可以運(yùn)行二進(jìn)制文件的,為什么還要把OBJ文件Link為EXE文件才能運(yùn)行?這里的知識(shí)就比較多了,這里不能多講。但是要明白一點(diǎn),在DOS下僅僅有了一個(gè)二進(jìn)制文件還不能運(yùn)行,因?yàn)椴僮飨到y(tǒng)要把這些二進(jìn)制文件加以規(guī)劃,把相應(yīng)的數(shù)據(jù)、程序代碼放到應(yīng)該放的內(nèi)存位置,這樣的經(jīng)過(guò)嚴(yán)密規(guī)劃和組織好了的二進(jìn)制文件才能運(yùn)行。而這些只有在生成的EXE文件里面才做完了這些工作。
---------------------------------------
作業(yè)題:
1、下列程序中格式錯(cuò)在( )處。
A. main() B. int a,b,z;
C. a=2:b=3; D. z=a+b;
分析:A,B,D 沒(méi)有錯(cuò)誤。 C 中在a=2后面應(yīng)該是分號(hào)而不應(yīng)是":"號(hào)
答: C
2、C語(yǔ)言允許將一條語(yǔ)句寫在兩行上,下列語(yǔ)句不正確的是
A. int a,
B;
B. int a
,b;
C. int
a,b
D. int a,b
;
分析:C語(yǔ)言規(guī)定可以在語(yǔ)句中的任何一個(gè)分隔符或空格處換行。上面4個(gè)選項(xiàng)中D.有問(wèn)題因?yàn)樵贒.中第一行的最后沒(méi)有分隔符,而第二行只有一個(gè)分號(hào),可以看做一個(gè)語(yǔ)句。所以D中的錯(cuò)誤為:第一行是一個(gè)獨(dú)立的語(yǔ)句,但是少了一個(gè)分號(hào)。
答: D
3. C語(yǔ)言的一行寫不下時(shí),可以
A. 用逗號(hào)換行 B. 用分號(hào)換行
C. 在任意一空格處換行 D. 用回車符換行
分析:C語(yǔ)言可以在任何一個(gè)分隔符或空格處換行,所以此題的正確答案是 C
答: C
4. 下列程序段中,哪一個(gè)是錯(cuò)誤的注釋方法?
A. #in/*包含*/cludestdio.h
void main()
{
}
B. #includestdio.h
void main/* */(/*主函數(shù)*/)
{
}
C. #includestdio.h
void main()
{ int x/*初始化*/=10;
/*打印*/printf("%d",x);
}
D. #includestdio.h
void main()
{
int x=10;
printf("%d",x);
/*打印x的值*”*=10*/
}
分析:根據(jù)C語(yǔ)言的規(guī)定:注釋不能插在標(biāo)識(shí)符的中間,在其它有分隔符的地方都可以插入注釋,上面四個(gè)程序段中只有A是將注釋插入在標(biāo)識(shí)符的中間了。所以A是錯(cuò)誤的。
答: A
5. C語(yǔ)言程序是由( )組成的?
答:C程序是由函數(shù)組成的。
6. C程序運(yùn)行時(shí),運(yùn)行的是什么文件?
數(shù)據(jù)的類型:
在程序中要處理大量的數(shù)據(jù),把這些數(shù)據(jù)按其特點(diǎn)分為幾種基本的數(shù)據(jù)類型,它們分別是:
1 、整型 2 、字符型 3 、實(shí)型
還有其它的一些擴(kuò)展的數(shù)據(jù)類型,但是開(kāi)始學(xué)習(xí)時(shí)要先熟悉這三種基本數(shù)據(jù)類型。
在 C 語(yǔ)言中這幾種數(shù)據(jù)類型用符號(hào)表示如下:
整型數(shù)據(jù)類型 int /* 一般指可以運(yùn)算的數(shù),如自然數(shù)就是整型數(shù)據(jù)類型 */
字符數(shù)據(jù)類型 char /* 一般指文字,如英文字母;字符類型的 '1''2''3''4' 等 */
實(shí)型 float /* 也稱作浮點(diǎn)型,記住 float 類型的數(shù)都是有小數(shù)位的,如 425.23*/
常量和變量:
常量――程序運(yùn)行過(guò)程中其值不變的量,如一個(gè)整數(shù) 134, 一個(gè)字符 ‘a(chǎn)'
變量――程序運(yùn)行過(guò)程中其值可以變化的量,如 int a; char b; 那么 a 和 b 都是變量。
符號(hào)常量 ――用一個(gè)“符號(hào)”來(lái)表示的一個(gè)“常量”稱為“符號(hào)常量”。
符號(hào)常量有什么好處 ――在給符號(hào)常量命名的時(shí)候,按習(xí)慣取的名字與實(shí)際上的含義相符,可以“見(jiàn)名識(shí)意”;另外在需要修改常量的值的時(shí)候,只需要修改符號(hào)常量的定義部分即可,非常方便。
符號(hào)常量的定義方法 ―― #define 符號(hào) 常量
例: #define NUMBER 30 /* 定義了一個(gè)符號(hào)常量,在這里是用符號(hào) NUMBER 表示整數(shù) 30 ,以后在程序里就可以
用符號(hào) NUMBER 代替整數(shù) 30 進(jìn)行運(yùn)算 */
main()
{
int a=20; /* 把常量 20 賦給整型變量 a*/
int c; /* 定義了整型變量 c*/
c=NUMBER+a; /* 變量 c 的值此時(shí)為 50 ,符號(hào)常量 NUMBER 參與了運(yùn)算 */
}
變量的定義方法 ――在變量的名字前面加上一個(gè)變量的數(shù)據(jù)類型,以說(shuō)明已定義的變量可以用來(lái)存放什么樣類型的數(shù)據(jù)。
例: int a; /* 定義了一個(gè)整型變量,以后這個(gè)變量只能存放整型類型的數(shù) */
char b; /* 定義了一個(gè)字符型變量,以后這個(gè)變量只能存放符字符型數(shù)據(jù) */
怎樣把常量值賦給已定義了的變量 ――用一個(gè) = 號(hào)賦值。
例: int a; /* 定義一個(gè)整型孌量 a*/
char b; /* 定義了一個(gè)字符型變量 b*/
a=20; /* 用 = 號(hào)完成賦值,賦值后變量 a 的值此時(shí)為 20*/
b='d' /* 把常量字符 'd' 賦給變量 b ,此時(shí)變量 b 的值是字符 'd'*/
變量賦值時(shí)一種更靈活的方法 ――可以在一行上給多個(gè)相同數(shù)據(jù)類型的變量賦值,變量之間用逗號(hào)分隔。
例: int a,b,c,d; /* 定義了 4 個(gè)整型變量 */
char e,f,g; /* 定義了 3 個(gè)字符型變量 */
深入理解變量 ―― 1 ) 1 個(gè)變量必須有一個(gè)變量名。 2 )變量必須有其指定的數(shù)據(jù)類型
3 )變量一旦被定義,它就在內(nèi)存中占有一個(gè)位置,這個(gè)位置稱做該 變量的地址 。
4 )每一個(gè)變量都有其對(duì)應(yīng)的值。
l 一定要牢記變量的這 4 個(gè)特性。
變量使用時(shí)的注意事項(xiàng) ―― 1 )變量在使用之前一定要先定義,使用一個(gè)沒(méi)有定義的變量是錯(cuò)誤的。
2 )變量必須在一個(gè)函數(shù)的開(kāi)始部分定義。(這個(gè)限制在 C++ 中不存在)
例題:寫一個(gè) 2 個(gè)整數(shù)相加的程序。
/* 解題思路:求 2 個(gè)整數(shù)相加,必定要先定義 2 個(gè)變量來(lái)存放這 2 個(gè)數(shù),另外還需要 1 個(gè)變量用來(lái)存放
相加的和,所以共需要定義 3 個(gè)整型變量 */
/* 注意每次在寫 C 程序的時(shí)候一定要注意書寫格式 */
main()
{
int a,b,c;
a=20,b=30; /* 在這里指定變量的值,因?yàn)檫€沒(méi)有講輸入輸出函數(shù),只能這樣了。 */
c=a+b;
}
想一想,這樣簡(jiǎn)單的一個(gè)題,需要知道的知識(shí)面卻不少。 用到了上面所講的哪些知識(shí)?
C語(yǔ)言中的庫(kù)函數(shù)――我們編寫C語(yǔ)言程序時(shí)要寫許多代碼,這些代碼是用基本程序語(yǔ)句如運(yùn)算符、表達(dá)式、幾種語(yǔ)句結(jié)構(gòu)來(lái)組成。這些語(yǔ)句組成了多個(gè)不同的函數(shù),由多個(gè)函數(shù)組成一個(gè)完整的程序。實(shí)際上如果程序中的語(yǔ)句都要由自己來(lái)寫的話,那么工作量是很大的了。并且有一些完成基本任務(wù)的函數(shù)如輸入輸出函數(shù)是經(jīng)常需要使用的。這樣的一些常用的完成基本任務(wù)的函數(shù)有許多已經(jīng)由提供編譯程序的公司為我們寫好了。這些已經(jīng)寫好的函數(shù)放在TC或者BC編譯器的文件中。所謂“庫(kù)函數(shù)”,就是存放“函數(shù)”的“倉(cāng)庫(kù)”。在TC中,函數(shù)的“倉(cāng)庫(kù)”在哪里呢?在TC的.\LIB目錄中。編寫程序的時(shí)候,如果我們需要使用某個(gè)庫(kù)函數(shù),就要在這個(gè)程序開(kāi)頭指明這庫(kù)函數(shù)存放在哪里,以便讓編譯程序到這個(gè)地方去找。這個(gè)指明庫(kù)函數(shù)路徑的語(yǔ)句稱為“包含”語(yǔ)句,寫做#include。完整的寫法是:
#include stdio.h
#include 是包含的意思,stdio.h 是指明要使用的庫(kù)函數(shù)在 stdio.h這個(gè)文件里面有說(shuō)明。尖括號(hào)是必須要寫的。而實(shí)際上,編譯程序在stdio.h之個(gè)文件里根據(jù)庫(kù)函數(shù)名可以在.\LIB目錄下的LIB文件里找到相關(guān)的代碼,寫進(jìn)程序里面去。使用不同的庫(kù)函數(shù)時(shí)要用不同的包含,關(guān)于怎樣使用#include,可以查看庫(kù)函數(shù)的幫助。
有了眾多的庫(kù)函數(shù),給編寫程序帶來(lái)了很大的方便。就象做房子要用磚和瓦一樣。如果沒(méi)有磚和瓦,做房子自己要挖土燒磚,可想而知,那樣做房子的難度有多大。寫程序也是這樣,有了庫(kù)函數(shù),在需要完成某些任務(wù)時(shí),找到相應(yīng)的庫(kù)函數(shù)調(diào)用一下就可以了,不需要自己一點(diǎn)一點(diǎn)的寫代碼。在學(xué)習(xí)編程的同時(shí)要多多了解一些庫(kù)函數(shù)的特點(diǎn)及用法,對(duì)編寫程序是有很大的好處的。
(在Windows下編寫程序,需要了解的“庫(kù)函數(shù)”就更多了,可以說(shuō)不了解庫(kù)函數(shù)就不會(huì)編程。VC中用的是MFC,Win32中用的是API,它們都是函數(shù)庫(kù))
先了解二個(gè)庫(kù)函數(shù)――1、scanf函數(shù) /*格式化控制臺(tái)輸入函數(shù)*/
函數(shù)原型:int scanf(control_string....); /*看上去很復(fù)雜。沒(méi)關(guān)系,以后自然會(huì)明白的*/
使用例:
void main()
{
int a,b,c; /*定義了三個(gè)整型變量*/
scanf("%d%d",a,b); /*從鍵盤輸入二個(gè)整數(shù)到孌量a和b中*/
c=a+b; /*把變量a與b相加的和送給變量c*/
}
下面仔細(xì)講一下scanf函數(shù)各參數(shù)的用法:
可以看到在小括號(hào)里有二個(gè)%d,后面有二個(gè)變量a和b。二個(gè)%d的寫法為"%d%d",注意凡是這樣的符號(hào)都要寫在雙引號(hào)里面,而變量則寫在雙引號(hào)的外面并用逗號(hào)分隔。這個(gè)%d我們稱為格式化說(shuō)明符,第一個(gè)%d用于說(shuō)明第一個(gè)變量a,第二個(gè)%d用于說(shuō)明第二個(gè)變量b,這樣的順序是一一對(duì)應(yīng)的。%d格式符說(shuō)明了后面輸入的變量值是整型數(shù)。
另外注意的是二個(gè)%d是靠在一起的 %d%d,凡是這樣的寫法,在輸入數(shù)時(shí),對(duì)于二個(gè)數(shù)之間的分隔是用“空隔鍵”來(lái)實(shí)現(xiàn)的。如輸入30和50這二個(gè)數(shù)形式為 30 50 如果二個(gè)%d寫成%d,%d中間有一個(gè)逗號(hào),那么在輸入數(shù)據(jù)時(shí)也一定要在輸入的數(shù)之間加上逗號(hào),如 30,50。
再來(lái)看一下變量的寫法,可以看到在每一個(gè)變量名的前面都有一個(gè)號(hào),這個(gè)號(hào)是取變量地址的意思,那么a寫在一起就是變量a的地址,b寫在一起就是變量b的地址。
上面的scanf函數(shù)的作用就是把從鍵盤上輸入的二個(gè)整數(shù)分別送到變量a和變量b的地址里面去。這個(gè)號(hào)是非常重要,不要寫漏了。
scanf函數(shù)的格式說(shuō)明符(格式說(shuō)明符說(shuō)明了下一步將讀的是什么類型的數(shù)據(jù))
格式碼 含義
%c 讀一單字符
%d 讀一整數(shù)
%i 讀一個(gè)浮點(diǎn)數(shù)
%e 讀一個(gè)浮點(diǎn)數(shù)
%f 讀一個(gè)浮點(diǎn)數(shù)
%g 讀一個(gè)浮點(diǎn)數(shù)
%o 讀一個(gè)八進(jìn)制數(shù)
%s 讀一字符串
%x 讀一十六進(jìn)制數(shù)
%p 讀一指針
%n 讀一個(gè)指針收一個(gè)等于到目前為止輸入的字符數(shù)止的整數(shù)
%u 讀一無(wú)符號(hào)整數(shù)
%[] 掃描一字符集
例:從鍵盤輸入二個(gè)字符,一個(gè)大寫,一個(gè)小寫,然后把這個(gè)小寫字符轉(zhuǎn)換成大寫,大寫字符轉(zhuǎn)換成小寫。
#includestdio.h /*因?yàn)樵诔绦蚶镉玫搅藥?kù)函數(shù)scanf,所以要使用包含#includestdio.h*/
void main()
{
char ch,chh; /*定義了二個(gè)字符型變量*/
scanf("%c%c",ch,chh); /*從鍵盤輸入二個(gè)字符,一個(gè)大寫,另一個(gè)小寫*/
ch=ch+32; /*大寫轉(zhuǎn)成小寫*/
chh=chh-32; /*小寫轉(zhuǎn)成大寫*/
}
2、printf函數(shù) /*格式化輸出函數(shù)*/
函數(shù)原型:int printf(const char *control_string....);
說(shuō)明:printf把變量的值或常量字符串輸出到控制臺(tái)(一般是顯示屏)
使用例:
#includestdio.h
void main()
{
int a,b,c;
scanf("%d%d",a,b);
c=a+b;
printf("輸出二個(gè)整數(shù)相加的和"); /*輸出字符串常量,這里沒(méi)有用到格式化說(shuō)明符*/
printf("%d",c); /*把變量c的值用整型格式輸出,這里%d是整型格式說(shuō)明符*/
}
如果有幾個(gè)變量的值要輸出,用這樣的形式:printf("%d %d %d",a,b,c);
從這個(gè)printf輸出的格式中看出,每一個(gè)格式符對(duì)應(yīng)一個(gè)變量,其對(duì)應(yīng)順序也是一一對(duì)應(yīng)的,第一個(gè)%d對(duì)應(yīng)第一個(gè)變量a,以此類推。注意在printf函數(shù)中,變量前面就不要加符號(hào)了。
注意printf函數(shù)中幾個(gè)%d之間留了一些空格,這里的用法與scanf相比有一點(diǎn)不同。在printf函數(shù)中格式符之間留多少空隔,輸出的時(shí)候每一個(gè)輸出的值之間就有多少空隔。如printf("%d %d %d",a,b,c);輸出則為:20 30 50 (這里的數(shù)是假設(shè)的)。如果寫為printf("%d,%d,%d",a,b,c);則輸出形式為 20,30,50
printf函數(shù)的格式符:
格式碼 格式
%c 單個(gè)字符
%d 十進(jìn)制數(shù)
%i 十進(jìn)制數(shù)
%e 科學(xué)法表示
%E 科學(xué)法表示
%f 十進(jìn)制浮點(diǎn)數(shù)
%g 用%e或%f中較短的的一個(gè)(如果是%e,用小寫e)
%G 用%e或%f中較短的的一個(gè)(如果是%E,用大寫E)
%o 以八進(jìn)制形式輸出
%s 字符串
%u 無(wú)符號(hào)十進(jìn)制數(shù)
%x 十六進(jìn)制數(shù)(小寫)
%X 十六進(jìn)制數(shù)(大寫)
%p 顯示一個(gè)指針
%n 相關(guān)變量是整型指針,它所指處存放至今要寫入字符的總數(shù)
%% 打印一個(gè)%號(hào)
printf函數(shù)使用例:
1)char ss="abcdefghijk"; printf("%s",ss); /*輸出一個(gè)字符串,屏幕上顯示"abcdefghijk"*/
2)unsigned int a=65535; printf("%u",a); /*以十六進(jìn)制形式輸出一個(gè)無(wú)符號(hào)數(shù),顯示為ffff*/
3)int a=123,b=456,c=687; printf("%d\t%d\n%d",a,b,c);
輸出形式為:
123 456 /*'\t'是一個(gè)制表符,所以要移動(dòng)一個(gè)制表位這么多空格數(shù)*/
687 /*'\n'是換行轉(zhuǎn)義符,在前面字符常量里講過(guò)。所以要換一行再輸出687*/
C語(yǔ)言基礎(chǔ)(05-運(yùn)算符和表達(dá)式):運(yùn)算符(也叫操作符)--運(yùn)算符是一個(gè)表示特定的數(shù)學(xué)或邏輯操作的符號(hào)。如'+'號(hào),表示了一個(gè)相加運(yùn)算;''號(hào)表示了一個(gè)邏輯‘與’的運(yùn)算。由運(yùn)算符把需要進(jìn)行運(yùn)算的各個(gè)量(常量或變量)連接起來(lái)組成一個(gè)表達(dá)式。
下面要講的是標(biāo)準(zhǔn)的運(yùn)算符,在C++中還有另外的一些運(yùn)算符。運(yùn)算符 進(jìn)行的運(yùn)算 所屬類別 備注
[ ] 間隔符 標(biāo)點(diǎn)符號(hào)
( ) 間隔符 標(biāo)點(diǎn)符號(hào)
· 直接分量選擇 雙目操作符
- 間接分量選擇 雙目操作符
++ 前增量、后增量 單目操作符
-- 前減量、后減量 單目操作符
+ 加 雙目操作符、單目操作符
- 減 雙目操作符、單目操作符
* 1)乘 2)間接引用 雙目操作符、單目操作符
/ 除 雙目操作符
% 求余 雙目操作符
1)位‘與’2)取地址 雙目操作符、單目操作符
! 邏輯‘非’ 單目操作符
邏輯‘與’ 雙目操作符
|| 邏輯‘或’ 雙目操作符
左移位 雙目操作符
右移位 雙目操作符
小于 雙目操作符
大于 雙目操作符
== 等于 雙目操作符
!= 不等于 雙目操作符
^ 位‘異或’ 雙目操作符
+= 和賦值 雙目操作符
-= 差賦值 雙目操作符
*= 乘賦值 雙目操作符
/= 商賦值 雙目操作符
= 左移賦值 雙目操作符
= 右移賦值 雙目操作符
= 按位‘與’賦值 雙目操作符
^= 按位異或賦值 雙目操作符
|= 按位或賦值 雙目操作符
%= 模賦值 雙目操作符
= 賦值 雙目操作符
?: 按條件取值 雙目操作符
, 間隔符 標(biāo)點(diǎn)符號(hào)
# 預(yù)處理符號(hào) 標(biāo)點(diǎn)符號(hào)
## 預(yù)處理符號(hào) 標(biāo)點(diǎn)符號(hào)
sizeof 求字節(jié)數(shù)
~ 按位求反
| 位‘或’
: 間隔符
; 間隔符
... 間隔符
要把表中的運(yùn)算符仔細(xì)的分類是不容易的,因?yàn)橥粋€(gè)運(yùn)算符,在不同的地方其含義是不同的。如*運(yùn)算符,當(dāng)作為乘運(yùn)算時(shí)是雙目操作符(所謂雙目操作符,即運(yùn)算時(shí)需要二個(gè)操作數(shù)),如3*6,那么3與6總共是二個(gè)操作數(shù)。當(dāng)作為取值運(yùn)算時(shí)就是單目操作符(所謂單目操作符是只需要一個(gè)操作數(shù))如對(duì)一個(gè)數(shù)求反:!a,這里只有一個(gè)操作數(shù)a。
要記住運(yùn)算符的二個(gè)特點(diǎn),一個(gè)是運(yùn)算符的操作對(duì)象,另一個(gè)就是運(yùn)算符的優(yōu)先級(jí)別。其中運(yùn)算符的優(yōu)先級(jí)別是最不容易搞清楚和最容易出錯(cuò)的地方。
在講運(yùn)算符之前講一下“表達(dá)式”的概念:所謂表達(dá)式,就是用運(yùn)算符把各個(gè)操作數(shù)連接成符合C語(yǔ)法規(guī)則的進(jìn)行運(yùn)算的式子。這里說(shuō)的“符合C語(yǔ)法的規(guī)則”也很重要。如 a+b+5就是一個(gè)用算術(shù)運(yùn)算符連接起來(lái)的表達(dá)式。
1、算術(shù)運(yùn)算符:+、-、*、/、%
1)+、-、*、/ 分別是相加、相減、相乘、相除
2)% 求二個(gè)數(shù)運(yùn)算的模。所謂求模就是求二個(gè)數(shù)相除后的余數(shù)。例:25/3的余數(shù)是1,可以說(shuō)25%3的模是1。要注意的是求模運(yùn)算時(shí)二個(gè)操作數(shù)必須是整數(shù)。如果求25.3/3.1這樣是不能運(yùn)算的。
下面寫一個(gè)例子:
#includestdio.h /*程序中要用到輸入輸出庫(kù)函數(shù),所以包含了stdio.h*/
void main()
{
int a=10,b=20,c=30; /*定義了3個(gè)整型變量,并同時(shí)進(jìn)行了初始化賦值*/
a=a*b+c; /*a*b+c組成了一個(gè)算術(shù)表達(dá)式,運(yùn)算后的結(jié)果為230并把值*/
/*賦給變量a*/
printf("%d",a); /*以整型格式輸出變量a的值。這里輸出230*/
a=a%b; /*進(jìn)行求模運(yùn)算。因?yàn)闆](méi)有余數(shù),最后的模為0*/
printf("%d",a); /*輸出變量a的值。這里輸出0*/
}
下面是一個(gè)要考慮運(yùn)算符優(yōu)先級(jí)的例子:
#includestdio.h
void main()
{
int a=10,b=20,c=30;
a=c-a*b; /*這里就要考慮運(yùn)算符優(yōu)先級(jí),*運(yùn)算符的優(yōu)先級(jí)比-運(yùn)算符*/
/*的高,所以先進(jìn)行乘運(yùn)算。這里最后結(jié)果為-170*/
}
由上面這個(gè)例子看到,在一個(gè)有多個(gè)運(yùn)算符連接起來(lái)的表達(dá)式中需要考慮運(yùn)算符的優(yōu)先級(jí),這個(gè)例子很簡(jiǎn)單。關(guān)于運(yùn)算符優(yōu)先級(jí)的概念其實(shí)在小學(xué)生的算術(shù)運(yùn)算中就有這樣的概念了,只不過(guò)這里的運(yùn)算符多了一些,要考慮的情況也就復(fù)雜了。
如果這個(gè)式子改寫一下,寫成:a=(c-a)*b;在運(yùn)算時(shí)就以括號(hào)中的運(yùn)算優(yōu)先。
幾個(gè)簡(jiǎn)化的運(yùn)算表達(dá)式:
在C語(yǔ)言的程序中,經(jīng)??吹竭@樣的運(yùn)算,如:i++;或者k--;這是運(yùn)算符號(hào)的簡(jiǎn)化寫法。
1、加1運(yùn)算的簡(jiǎn)寫
當(dāng)一個(gè)變量進(jìn)行加1運(yùn)算時(shí),如a=a+1;這是變量自身加1,簡(jiǎn)寫為a++;
2、減1運(yùn)算的簡(jiǎn)寫
當(dāng)一個(gè)變量進(jìn)行減1運(yùn)算時(shí),如a=a-1;這是變量自身減1,簡(jiǎn)寫為a--;
3、加1個(gè)常量運(yùn)算的簡(jiǎn)寫
當(dāng)一個(gè)變量與一個(gè)常量相加時(shí),如a=a+5;這是變量自身加5,簡(jiǎn)寫為a+=5;
4、減一個(gè)常量運(yùn)算的簡(jiǎn)寫
當(dāng)一個(gè)變量與一個(gè)常量相減時(shí),如a=a-5;這是變量自身減5,簡(jiǎn)寫為a-=5;
5、乘一個(gè)常量運(yùn)算的簡(jiǎn)寫
當(dāng)一個(gè)變量與一個(gè)常量相乘時(shí),如a=a*5,這是變量自身乘5,簡(jiǎn)寫為a*=5;
6、除一個(gè)常量運(yùn)算的簡(jiǎn)寫
當(dāng)一個(gè)變量與一個(gè)常量相除時(shí),如a=a/5;這是變量自身除5,簡(jiǎn)寫為a/=5;
運(yùn)算符的結(jié)合性(或稱作關(guān)聯(lián)性)
在一個(gè)復(fù)雜的表達(dá)式中,常常有許多運(yùn)算符和變量,這時(shí)就要判斷優(yōu)先級(jí)和結(jié)合性這二個(gè)因素。
例:-5+7; 這樣的一個(gè)表達(dá)式用結(jié)合性來(lái)判斷,因?yàn)檫\(yùn)算符'-'和'+'相對(duì)于運(yùn)算的數(shù)來(lái)說(shuō)是‘左’結(jié)合的,所以就有'-5'和'+7'所以運(yùn)算的結(jié)果為 2。
通過(guò)這個(gè)例子要知道什么是“左結(jié)合性”和“右結(jié)合性”
左結(jié)合性--變量(或常量)與左邊的運(yùn)算符結(jié)合
右結(jié)合性--變量(或常量)與右邊的運(yùn)算符結(jié)合
運(yùn)算符的優(yōu)先級(jí)和結(jié)合性表
優(yōu)先級(jí) 運(yùn)算符(高 ------→低) 結(jié)合率 運(yùn)算符類型
高 ( ) [ ] - . 從左至右 雙目運(yùn)算符
! ~ ++ -- (類型) sizeof + - * 從右至左 單目運(yùn)算符
* / % 從左至右 雙目運(yùn)算符
+ - 從左至右 雙目運(yùn)算符
從左至右 雙目運(yùn)算符
= = 從左至右 雙目運(yùn)算符
== != 從左至右 雙目運(yùn)算符
從左至右 雙目運(yùn)算符
^ 從左至右 雙目運(yùn)算符
| 從左至右 雙目運(yùn)算符
從左至右 雙目運(yùn)算符
|| 從左至右 雙目運(yùn)算符
?: 從右至左 三目運(yùn)算符
低 = += -= *= /= %= = ^= |= = = 從左至右 雙目運(yùn)算符
高 -------------→ 低
從表中可以看出一個(gè)規(guī)律,凡是單目運(yùn)算符都是“右結(jié)合”的,凡是雙目運(yùn)算符都是“左結(jié)合”的。其中有一個(gè)?:運(yùn)算符是三目運(yùn)算符是右結(jié)合的,記住了這個(gè)規(guī)律,運(yùn)算符的結(jié)合性也就掌握了。
如果代碼行中的運(yùn)算符比較多,用括號(hào)確定表達(dá)式的操作順序,避免使用默認(rèn)的優(yōu)先級(jí)。
由于將表熟記是比較困難的,為了防止產(chǎn)生歧義并提高可讀性,應(yīng)當(dāng)用括號(hào)確定表達(dá)式的操作順序。例如:
d = (high 8) | low /*用括號(hào)把需要先運(yùn)算的括起來(lái)*/
if ((a | b) (a c)) /*用括號(hào)把需要先運(yùn)算的括起來(lái)*/
例:
下列程序輸出的結(jié)果是
#includestdio.h
void main()
{
int a=2;
a%=4-1;
printf("%d",a);
a+=a*=a-=a*=3;
printf("\n%d",a);
}
A. 2,0 B. 1,0
C. -1,12 D. 2,12
分析:由于%=運(yùn)算符的優(yōu)先級(jí)別低于-運(yùn)算,a%=4-1即是a%=3,等價(jià)于a=a%3即a=2%3=2,所以選項(xiàng)B和C是錯(cuò)誤的。表達(dá)式a+=a*=a-=a*=3,計(jì)算時(shí)注意賦值類表達(dá)式的值和變量的值隨時(shí)被更新,計(jì)算表達(dá)式的值,開(kāi)始時(shí)a=2,表達(dá)式賦值是從左至右進(jìn)行的,表達(dá)a*=3使得a=6,此表達(dá)式的值也為6,于是表達(dá)式a-=a*=3相當(dāng)于a-=6=6-6=0,a的值為0,后面的計(jì)算就不用做了,所以a的值最終為0。
答:A
下列語(yǔ)句中錯(cuò)誤的是
A.x=sizeof int;
B.x=sizeof 3.14
C.printf("%d",a=a+1,b--,c+1);
D.printf("%d",++x,x++);
分析:此題的選項(xiàng)A的作用是測(cè)試int類型所占內(nèi)存的字節(jié)數(shù),因?yàn)轭愋头美ㄌ?hào)括起來(lái),這時(shí)缺少括號(hào)是錯(cuò)誤的。
選項(xiàng)B是正確的。
選項(xiàng)C從表面上看似乎復(fù)雜一些,但其中的a=a+1,b--,c+1是一個(gè)逗號(hào)表達(dá)式,C語(yǔ)言允許使用這種表達(dá)式所以D也是正確的。
答案:A
下面的語(yǔ)句中,符合C語(yǔ)言語(yǔ)法的賦值語(yǔ)句是
A.a=7+b+c=a+7; B.a=7+b++=a+7;
C.a=7+b,b++,a+7; D.a=7+b;c=a+7;
分析:一般情況下,表達(dá)式不能放在賦值號(hào)的左邊,所
網(wǎng)站欄目:在c語(yǔ)言中弱函數(shù),c語(yǔ)言弱定義
文章起源:http://aaarwkj.com/article34/dsieese.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站制作、全網(wǎng)營(yíng)銷推廣、網(wǎng)頁(yè)設(shè)計(jì)公司、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)