版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1基礎(chǔ)知識(shí)部分
1.1基本概念
1.C源程序(.c或.cpp)經(jīng)過編譯后生成二進(jìn)制目標(biāo)文件(.obj),再與各種庫函數(shù)連接成一個(gè)可執(zhí)行文件
(.exe)o
2.一個(gè)源程序不論由多少個(gè)源文件組成,都有且僅有一個(gè)main函數(shù),即主函數(shù)。任何一個(gè)C程序都是從
main函數(shù)開始執(zhí)行,在main函數(shù)結(jié)束。一個(gè)C源程序可以由?個(gè)或多個(gè)源文件組成。每個(gè)源文件可由一
個(gè)或多個(gè)函數(shù)組成。函數(shù)是C程序的基本組成單位。
3.程序中使用的變量名、函數(shù)名、標(biāo)號(hào)等統(tǒng)稱為標(biāo)識(shí)符。
(1)C規(guī)定,標(biāo)識(shí)符只能以字母或下劃線開頭,由字母、數(shù)字和下劃線組成。
(2)在標(biāo)識(shí)符中,大小寫是有區(qū)別的。
(3)用戶定義的標(biāo)識(shí)符不應(yīng)與關(guān)鍵字(32個(gè))(課本P238)相同。
4.C語言的注釋:在"/*"和"*/"之間的即為注釋。程序編譯時(shí),不對(duì)注釋作任何處理,不影響程序的運(yùn)行。
注釋符也可以用"〃",但是只能對(duì)當(dāng)前行進(jìn)行注釋。
5.每一個(gè)說明,每一個(gè)語句都必須以分號(hào)結(jié)尾。但預(yù)處理命令(如:ftindude<stdio.h>)、函數(shù)頭(voidmain())
和花括號(hào)"}”之后不能加分號(hào)。
6.結(jié)構(gòu)化程序的三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。
模塊化的程序設(shè)計(jì)方法:自項(xiàng)向下、逐步細(xì)化把程序分成若干相對(duì)獨(dú)立、功能單?的模塊。
例題:
(1)以下敘述中錯(cuò)誤的是()2011.3
A)C語言的可執(zhí)行程序是由一系列機(jī)器指令構(gòu)成的
B)用C語言編寫的源程序不能直接在計(jì)算機(jī)上運(yùn)行
C)通過編譯得到的二進(jìn)制目標(biāo)程序需要連接才可以運(yùn)行
D)在沒有安裝C語言集成開發(fā)環(huán)境的機(jī)器上不能運(yùn)行C源程序生成的.exe文件
(2)以下敘述中錯(cuò)誤的是(兀2011.9
A)C語言編寫的函數(shù)源程序,其文件名后綴可以是.C
B)C語言編寫的函數(shù)都可以作為一個(gè)獨(dú)立的源程序文件
OC語言編寫的每個(gè)函數(shù)都可以進(jìn)行獨(dú)立的編譯并執(zhí)行
D)一個(gè)C語言程序只能有一個(gè)主函數(shù)
(3)以下C語言用戶標(biāo)識(shí)符中,不合法的是()2011.3
A)_lB)AaBcC)a_bD)a-----b
(4)以下選項(xiàng)中關(guān)于程序模塊化的敘述錯(cuò)誤的是()。2011.9
A)把程序分成若干相對(duì)獨(dú)立的模塊,可便于編碼和調(diào)試
B)把程序分成若干相對(duì)獨(dú)立、功能單一的模塊,可便于重復(fù)使用這些模塊
c)可采用自底向上、逐步細(xì)化的設(shè)計(jì)方法把若干獨(dú)立模塊組裝成所要求的程序
D)可采用自項(xiàng)向下、逐步細(xì)化的設(shè)計(jì)方法把若干獨(dú)立模塊組裝成所要求的程序
1.2常量和變量
1.2.1常量
1.數(shù)字常量
①八進(jìn)制整數(shù)以。為開頭,如0121表示八進(jìn)制數(shù)121:十六進(jìn)制整數(shù)以O(shè)x開頭。
②實(shí)型常量有兩種表示形式:小數(shù)形式和指數(shù)形式。指數(shù)形式。由數(shù)字和字母e(E)組成,可帶正負(fù)
號(hào),其中,e是指數(shù)的標(biāo)志,要求e之前必須有數(shù)字,e之后必須是整數(shù),這種表示方式也稱為科學(xué)計(jì)數(shù)
法。如12e3或12E3表示12xl03,
2.字符常量
C語言的字符常量是用單引號(hào)括起來的一個(gè)字符。如曾、,D,、$、‘\n,、’\012\,\xOa,等均為字符常量。
每個(gè)字符在內(nèi)存中占用一個(gè)字節(jié),用于存儲(chǔ)它的ASCII碼值。常用轉(zhuǎn)義字符表(課本P93)
3.字符串常量
字符串常量就是用?對(duì)雙引號(hào)括起來的字符序列,如:"china"。
C語言規(guī)定以XT作為字符串的結(jié)束符,它占用存儲(chǔ)空間,但不計(jì)入字符串的有效長(zhǎng)度(即有效字符的
個(gè)數(shù))。字符串由有效字符和字符串結(jié)束符'\0'組成。
4.符號(hào)常量
C語言還可以通過宏定義來表示常量,格式如下:
#define宏名宏定義字符串
如:#defineN10
例題:
(1)以下選項(xiàng)中不能用作C程序合法常量的是()2011.3
A)1,234B)"123"0123D)'\x7G'
(2)以下選項(xiàng)中可用作C程序合法實(shí)數(shù)的是()2011.3
A).leOB)3.0e0.2C)E9D)9.12E
(3)以下選項(xiàng)中關(guān)于c語言常量的敘述錯(cuò)誤的是()。2011.9
A)所謂常量,是指在程序運(yùn)行過程中,其值不能被改變的量
B)常量分為整型常量、實(shí)型常量、字符常量和字符串常量
c)常量可分為數(shù)值型常量和非數(shù)值型常量
D)經(jīng)常被使用的變量可以定義成常量
1.2.2變量
1.變量必須遵守"先定義,后使用;先賦值,后運(yùn)算”的原則。
2.基本數(shù)據(jù)類型
1.1整型數(shù)據(jù)
數(shù)據(jù)長(zhǎng)度
類型取值范圍
(比特)
-2147483648-----2147483647
[signed]int有符號(hào)整型32一231?23】-1
0?4294967295
unsigned[int]無符號(hào)整型32
0?232—I
-32768?32767
[signed]short[int]有符號(hào)短整型16—2匕?2J
。?65535
unsignedshort[int]無符號(hào)短整型16
0?2J
-2147483648-----2147483647
[signed]long[int]有符號(hào)長(zhǎng)整型32
—23"-1
1.2實(shí)型數(shù)據(jù)類型
類型數(shù)據(jù)長(zhǎng)度(比特)有效數(shù)字?jǐn)?shù)值范圍
float326?7-3.4x10-38?34x1()38
double6415?16-1.7x10308~1.7X10308
longdouble12818?19-1.2x104M2~1.2x104932
1.3字符型數(shù)據(jù)類型
類型數(shù)據(jù)長(zhǎng)度(比特)注意
與字符常量一樣,字符變量也可以像整數(shù)一樣進(jìn)行運(yùn)算,其利用
字符的ASCII碼進(jìn)行運(yùn)算。如:
char8charch='D';
ch=ch+32;或ch=ch」A'+,a,;/*大寫母轉(zhuǎn)換為小寫字母*/
printf("%cASCII:%d\n",ch,ch);/*以字符和整數(shù)方式輸出*/
3數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換規(guī)則(課本P95)
例題:
(1)若有定義語句:inta=10;doubleb=3.14;,則表達(dá)式'A'+a+b值的類型是()。2011.9
A)charB)intC)doubleD)float
⑵以下程序運(yùn)行后的輸出結(jié)果是([6[3)。2011.3
^include<stdio.h>
main()
{inta;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("%d'n",a);
)
3.局部變量和全局變量
(1)在C語言中,把定義在函數(shù)內(nèi)部或復(fù)合語句內(nèi)部的變量稱為局部變量。局部變量的作用域(即有
效范圍)是從定義的位置開始直到函數(shù)或復(fù)合語句結(jié)束為止。
(2)在C程序中,允許在函數(shù)外部定義變量。定義在函數(shù)外部而不屬于任何函數(shù)的變量,稱為全局變
量(或者全程變量,或者外部變量)。全局變量的作用域(即有效范圍)是從定義的位置開始直到程序文
件的結(jié)束為止。
4.變量的存儲(chǔ)類別
C程序的變量主要存儲(chǔ)在內(nèi)存中,少量的變量也可以存儲(chǔ)在CPU的寄存器中。我們可以使用以下存儲(chǔ)
類別進(jìn)行說明:
(1)auto(自動(dòng)的):"auto"可以省略,自動(dòng)變量只有在使用時(shí),即在定義該變量的函數(shù)被調(diào)用時(shí),系
統(tǒng)才會(huì)在動(dòng)態(tài)存儲(chǔ)區(qū)為其分配存儲(chǔ)空間,開始它的生存期,函數(shù)調(diào)用結(jié)束就自動(dòng)釋放這些存儲(chǔ)空間,相應(yīng)
的自動(dòng)變量也將不復(fù)存在,結(jié)束生存期。
在使用自動(dòng)變量時(shí),需要先賦初值或賦值后再使用,未賦初值的自動(dòng)變量,其值是不確定的隨機(jī)數(shù)。
(2)static(靜態(tài)的):
①靜態(tài)局部變量在函數(shù)或復(fù)合語句內(nèi)部定義,靜態(tài)局部變量的作用域是函數(shù)或復(fù)合語句內(nèi)部,生存期
是整個(gè)程序。
靜態(tài)局部變量是在編譯時(shí)賦初值(即只賦初值一次)的,在程序執(zhí)行期間,再次調(diào)用函數(shù)時(shí)就不會(huì)再
重新賦初值,而只是保留上次函數(shù)調(diào)用結(jié)束時(shí)的值。如果在定義靜態(tài)局部變量時(shí)不賦初值,編譯時(shí)系統(tǒng)會(huì)
自動(dòng)賦初值0(對(duì)數(shù)值型變量)或10'(空字符,對(duì)字符變量)。
②靜態(tài)全局變量,靜態(tài)全局變量的作用域不能被擴(kuò)展,只能在定義它的文件中使用。
③如果?個(gè)函數(shù)只能夠在定義它的文件中被調(diào)用,則稱它為內(nèi)部函數(shù)(也稱為靜態(tài)函數(shù))。定義內(nèi)部
函數(shù)只需在函數(shù)定義的前面加static關(guān)鍵字。
(3)register(寄存器的)
(4)extern(外部的):
①全局變量只能在某個(gè)模塊中定義一次,如果其他模塊要使用該全局變量,必須在引用之前用關(guān)鍵字
extern將該變量聲明為外部變量,用于說明該變量是一個(gè)一經(jīng)在其他模塊中定義的全局變量。
②在定義函數(shù)時(shí),如果冠以關(guān)鍵字extern,則表示此函數(shù)是外部函數(shù)。在定義函數(shù)時(shí)省去了extern關(guān)
鍵字時(shí),則隱含為外部函數(shù)。
例題:
(1)有以下程序
-include<stdio.h>
intfun()
{staticintx=l;
x*=2;
returnx:
)
main()
{inti,s=l;
for(i=l;i<=3;i++)s*=fun();
printf(〃%d\n〃,s);
)
程序運(yùn)行后的輸出結(jié)果是()2。"3
A)0B)10C)30D)64
(2)有以下程序
ttinclude<stdio.h>
intf(intm)
{staticintn=0;
n+=m:
returnn;
)
main()
{intn=0;
printf("%d〃,f(++n));
printf("%d\n”,f(n++));
)
程序運(yùn)行后的輸出結(jié)果是()o2011.9
A)1,2B)l,1C)2,3D)3,3
1.3輸入輸出函數(shù)
LC語言提供的標(biāo)準(zhǔn)輸入輸出函數(shù)(如:printf函數(shù)、scanf函數(shù)等)包含在相應(yīng)的頭文件中。程序中若需調(diào)用這
類函數(shù),必須在程序最開頭引用該頭文件,如寫為:#include<stdio.h>
2.printf函數(shù)和scanf函數(shù)
(1)printf函數(shù)的一般格式:printf("格式控制字符串”,輸出參數(shù)列表);
其作用:原樣輸出雙引號(hào)中的內(nèi)容,其中格式控制符如%d、%c、%f等則依次以其后的輸出參數(shù)代替,
若有轉(zhuǎn)義字符則按轉(zhuǎn)義字符實(shí)際含義輸出。
⑵scanf函數(shù)一般格式:scanf("格式控制字符串”,地址列表);
其作用:原樣輸入雙引號(hào)中的內(nèi)容,其中格式控制符如%d、%c、%£等則依次以需輸入的具體數(shù)據(jù)代替。
注意:輸入多個(gè)數(shù)據(jù)時(shí)可以使用一個(gè)或多個(gè)空格間隔,此外,也可以使用回車鍵或Tab鍵分隔。
常用格式控制說明
數(shù)據(jù)類
格式功能
型
%d以十進(jìn)制的方式輸入/輸出一個(gè)整數(shù)
%u以十進(jìn)制的方式輸入/輸出一個(gè)無符號(hào)整數(shù)
%o以八進(jìn)制的方式輸入/輸出一個(gè)整數(shù)
整型:%x以十六進(jìn)制的方式輸入/輸出一個(gè)整數(shù)
int
以十進(jìn)制的方式輸入/輸出一個(gè)無符號(hào)長(zhǎng)整數(shù)
short%lu
long%ld以十進(jìn)制的方式輸入/輸出一個(gè)有符號(hào)長(zhǎng)整數(shù),即long型(其中1是long的首字母)
unsigned
輸出數(shù)據(jù)占m列,若數(shù)據(jù)的實(shí)際寬度小于m,則左端補(bǔ)空格(即右對(duì)齊,若數(shù)據(jù)的
%md實(shí)際寬度大于m,則按實(shí)際寬度輸出
如:printf("張三成績(jī):%6d%6d\n",math,en);
輸出數(shù)據(jù)占m歹ij,若數(shù)據(jù)的實(shí)際寬度小于m,則右端補(bǔ)空格(即左對(duì)齊),若數(shù)據(jù)
%—md
的實(shí)際寬度大于m,則按實(shí)際寬度輸出
以小數(shù)形式輸入/輸出實(shí)數(shù)(單、雙精度型皆可float,double型),默認(rèn)輸出小數(shù)點(diǎn)后
%f
的6位數(shù)
%lf以小數(shù)形式輸入/輸出雙精度型實(shí)數(shù)
%e以指數(shù)形式輸出實(shí)數(shù)
實(shí)型:
float%g選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0
double輸出數(shù)據(jù)占m歹U,其中有n位小數(shù)。如果實(shí)際數(shù)據(jù)長(zhǎng)度超過m位,則按實(shí)際輸出,
%m.nf如果實(shí)際數(shù)據(jù)長(zhǎng)度小于m位,則左端補(bǔ)空格(即輸出結(jié)果右對(duì)齊),注意:輸入時(shí)不能
指定精度。
輸出數(shù)據(jù)占m歹1J,其中有n位小數(shù)。如果實(shí)際數(shù)據(jù)長(zhǎng)度超過m位,則按實(shí)際輸出,
%-m.nf
如果實(shí)際數(shù)據(jù)長(zhǎng)度小于m位,則右端補(bǔ)空格(即輸出結(jié)果左對(duì)齊)
字符型:
%c輸出字符型數(shù)據(jù),即char型
char
%s輸入/輸出字符串
例題:
(1)有以下程序段
charname[20];
intnum;
scanf(//name=%snum=%d”,name;&num);
當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Li1inum=1001〈回車》后,name的值為()2011.3
A)LiliB)name=LiliC)Lilinum=D)name=Lilinum=1001
(2)若有定義:inta,b;,通過語句scanf("%d;%d",&a,&b);,能把整數(shù)3賦給變量a,5賦給變量b
的輸入數(shù)據(jù)是()。2011.9
A)35B)3,5C)3;5D)35
⑶以下不能輸出字符A的語句是(注:字符A的ASCII碼值為65,字符a的ASCH碼值為97)%〃9
A)printf("%c\n",'a'-32);B)printf("%d\n",'A');
c)printf("%c\n",65);D)printf(〃%c\n〃,'B'T);
⑷若程序中已給整型變量a和b賦值10和20,請(qǐng)寫出按以下格式輸出a、b值的語句【6]。2011.9
****a=10,b=20****(printf("****a=%d,b=%d****",a,b);)
⑸有以下程序(說明:字符0的ASCII碼值為48)
^include<stdio.h>
mainO
{charcl,c2;
scanf(〃/d〃,&cl);
c2=cl+9;
printf(,,%c%c\n,/,cl,c2);
)
若程序運(yùn)行時(shí)從鍵盤輸入48〈回車),則輸出結(jié)果為([8】09)。2011.3
3.getchar函數(shù)和putchar函數(shù)
調(diào)用getchar函數(shù)或scanf函數(shù)輸入字符,調(diào)用putchar函數(shù)或printf函數(shù)輸出字符,如需調(diào)用這4個(gè)
函數(shù),均須在程序首使用文件包含命令:#include<stdio.h>
(1)putchar函數(shù)的作用是輸出一個(gè)字符,getchar函數(shù)的功能是從鍵盤輸入?個(gè)字符。
例:
①如果c是已經(jīng)定義的字符變量或整型變量,這兩個(gè)函數(shù)的調(diào)用格式如下:
putchar(c);/*以字符的方式輸出變量c的值。*/
c=getchar();/*從輸入設(shè)備輸入字符并賦給變量c。*/
②連續(xù)處理多個(gè)字符:
charch;
while((ch=getchar())!='\n'){}
③對(duì)字符串處理:
inti=0;
charstr[80];/*定義字符數(shù)組存放字符串*/
printf(“請(qǐng)輸入一個(gè)字符串:\n");
while((str[i]=getchar())!='\n')/*輸入字符串*/
i++;
str[i]='\O';
例題:
(1)有以下程序段
^include<stdio.h>
main()
{,,,
while(getchar()!=,\n);
)
以下敘述中正確的是()2011.3
A)此while語句將無限循環(huán)
B)getchar()不可以出現(xiàn)在while語句的條件表達(dá)式中
C)當(dāng)執(zhí)行此while語句時(shí),只有按回車鍵程序才能繼續(xù)執(zhí)行
D)當(dāng)執(zhí)行此while語句時(shí),按任意鍵程序就能繼續(xù)執(zhí)行
4.gets函數(shù)和puts函數(shù)
(1)gets函數(shù):函數(shù)原型為char*gets(char*),其功能是從標(biāo)準(zhǔn)輸入設(shè)備中輸入一個(gè)字符串,并存入?yún)?/p>
數(shù)指針?biāo)赶虻膬?nèi)存單元中。函數(shù)的返回值為指針,即返回輸入字符串的首字符地址。遇回車符結(jié)束輸入,
并自動(dòng)把輸入的字符串和字符串結(jié)束標(biāo)志存入?yún)?shù)指針?biāo)赶虻膬?nèi)存單元中。
例如:char*p,string[100];
p=string;
gets(p);/*或者用gets(string)*/
(2)puts函數(shù):函數(shù)原型為intputs(char*str),其功能是把str指向的字符串輸出到標(biāo)準(zhǔn)輸出設(shè)備中,
將‘\0’轉(zhuǎn)換為回車符。如:對(duì)上例采用gets函數(shù)輸入的字符串,可用以下兩種方式輸出:
puts(p);或puts(string);
例題:
⑴有以下程序
ttinclude<stdio.h>
main()
{chara[30],b[30];
scanf(〃%s〃,a);
gets(b);
printf(,,%s\n%s\n〃,a,b);
)
程序運(yùn)行時(shí)若輸入:
howareyou?Iamfine〈回車〉
則輸出結(jié)果是()宓〃.3
A)howareyou?B)how
Iamfineareyou?Iamfine
C)howareyou?IamfineD)howareyou?
1.4運(yùn)算符和表達(dá)式
c語言提供的運(yùn)算符有以下幾種:
(1)下標(biāo)運(yùn)算符:口
(2)成員運(yùn)算符:.一〉
(3)強(qiáng)制類型轉(zhuǎn)換的運(yùn)算符:(類型名)
(4)長(zhǎng)度運(yùn)算符:sizeof()
(5)指針運(yùn)算符:*&
(6)算術(shù)運(yùn)算符:+—*/%++---
(7)關(guān)系運(yùn)算符:><==>=<=!=
(8)位運(yùn)算符:<<?~|八&
(9)邏輯運(yùn)算符:!&&||
(10)條件運(yùn)算符:?:
(11)賦值運(yùn)算符:=及復(fù)合賦值運(yùn)算符
(12)逗號(hào)運(yùn)算符:,
1.其他運(yùn)算
特殊運(yùn)算符
優(yōu)先級(jí)與運(yùn)
運(yùn)算符運(yùn)算對(duì)象個(gè)數(shù)功能
算方向
()括號(hào)運(yùn)算符1級(jí)改變運(yùn)算順序
[]下標(biāo)運(yùn)算符1級(jí)數(shù)組下標(biāo)
—>指向結(jié)構(gòu)體成員運(yùn)算符
1級(jí)結(jié)構(gòu)體的成員
結(jié)構(gòu)體成員運(yùn)算符
12級(jí)
*間接訪問運(yùn)算指針變量所指向的地址的內(nèi)容
(單月運(yùn)算符)自右向左
12級(jí)
&取地址運(yùn)算取出變量在內(nèi)存中的存儲(chǔ)地址
(單日運(yùn)算符)自右向左
12級(jí)
(類型)強(qiáng)制類型轉(zhuǎn)換(單目運(yùn)算符)
(單目運(yùn)算符)自右向左
12級(jí)
sizeof長(zhǎng)度運(yùn)算符(單目運(yùn)算符)
(單目運(yùn)算符)白右向左
2.算術(shù)運(yùn)算符列表
優(yōu)先級(jí)與運(yùn)算
運(yùn)算符含義示例運(yùn)算對(duì)象個(gè)數(shù)注意
方向
++k:先自加,再運(yùn)算
k++:先運(yùn)算,再自加
K++12級(jí)運(yùn)算對(duì)象可以是整型變量,也
++自增
++k(單目運(yùn)算符)自右向左可以是實(shí)型變量,但不能是常量或
表達(dá)式,如3++,(x+y)++都是不合
法的表達(dá)式。
k-12級(jí)
-自減類似于++
-k(單目運(yùn)算符)自右向左
23級(jí)
*乘法運(yùn)算2.5*5如為單目運(yùn)算符,則為指針運(yùn)算符
(雙目運(yùn)算符)自左向右
如果除法的兩個(gè)運(yùn)算對(duì)象均為整
6/323級(jí)
/除法運(yùn)算數(shù),則運(yùn)算結(jié)果也為整數(shù)。如表達(dá)
6.6/2(雙目運(yùn)算符)自左向右
式9/5的值是k
求余運(yùn)算%的運(yùn)算對(duì)象要求必須為
求余運(yùn)算也23級(jí)
%6%4結(jié)果為2整型數(shù)據(jù),它不能用于實(shí)型數(shù)據(jù)的
稱為模運(yùn)算(雙目運(yùn)算符)自左向右
運(yùn)算。
+加法運(yùn)算3+224級(jí)如為單目運(yùn)算符,則為正號(hào)或負(fù)號(hào)
一減法運(yùn)算3-2(雙目運(yùn)算符)自左向右運(yùn)算符
應(yīng)用舉例:
(1)輸入一個(gè)整數(shù),將這個(gè)整數(shù)的各位逆置后輸出。
源程序:
#include<stdio.h>
voidmain()
{intnumber,digit,num;
printf("Pleaseenterainteger:");
scanf("%d",&number);
num=0;/*num用于存儲(chǔ)將number逆序的結(jié)果*/
/*從低位開始取出number的相應(yīng)位的數(shù)字,并逐一轉(zhuǎn)換為num的相應(yīng)位的數(shù)字*/
do
{digit=number%10;/*取個(gè)位數(shù)*/
num=num*10+digit;
number=number/10;/*丟掉個(gè)位數(shù)*/
}while(number!=0);
printf("%d\n",num);
}
例題:
(1)以下程序運(yùn)行后的輸出結(jié)果是([7】1)。2011.9
ftinclude<stdio.h>
main()
{inta=37;
a%=9;printf(〃%d\n〃,a);
)
(2)有以下程序
ttinclude<stdio.h>
main()
{intx=011;
printf(,,%d\n\++x);
)
程序運(yùn)行后的輸出結(jié)果是()20〃3
A)12B)llC)10D)9
(3)若有定義語句:intx=12,y=8,z;,在其后執(zhí)行語句z=0.9+x/y;,則Z的值為()。2011.9
A)l,9B)1C)2D)2.4
3.關(guān)系運(yùn)算符
關(guān)系運(yùn)算符
關(guān)系運(yùn)算符作用舉例運(yùn)算結(jié)果
>大于6>31
<小于6<30
>=大于或等于5>=60
<=小于或等于5<=91
==等于2==21
!=不等于2!=20
在C語言中,關(guān)系運(yùn)算符產(chǎn)生的結(jié)果用數(shù)字〃1〃表示邏輯值真,數(shù)字”0〃表示邏輯值假。
4.位運(yùn)算符
位運(yùn)算符
運(yùn)算符含義運(yùn)算對(duì)象個(gè)數(shù)注意
1
?取反位運(yùn)算的運(yùn)算對(duì)
(單FI運(yùn)算符)
2象必須是整型或字符
?左移
(雙目運(yùn)算符)型數(shù)據(jù),其運(yùn)算規(guī)則
2
右移
?(雙目運(yùn)算符)是:先將兩個(gè)運(yùn)算對(duì)象
2
&按位與轉(zhuǎn)化為二進(jìn)制,然后按
(雙目運(yùn)算符)
位運(yùn)算。
2
1按位或
(雙目運(yùn)算符)★注意:在進(jìn)行位運(yùn)算
2時(shí),所有的數(shù)據(jù)都是以
A按位異或
(雙目運(yùn)算符)補(bǔ)碼的形式進(jìn)行運(yùn)算。
例題:
(1)有以下程序
#include<stdio.h>
main()
{unsignedchara=8,c;
c=a?3;
printf(〃%d\n",c);
}程序運(yùn)行后的輸出結(jié)果是()20〃.3
A)32B)16C)1D)0
(2)有以下程序
#include<stdio.h>
main()
{inta=2,b;
b=a<<2:printr("%d\n〃,b);
}程序運(yùn)行后的輸出結(jié)果是()o201L9
A)2B)4C)6D)8
5.邏輯運(yùn)算符
邏輯運(yùn)算符
邏輯運(yùn)算符作用優(yōu)先級(jí)運(yùn)算對(duì)象個(gè)數(shù)舉例運(yùn)算結(jié)果
1)60
IM運(yùn)算
高(單目運(yùn)算符)
!01
6&&00
2
&&與運(yùn)算
(雙目運(yùn)算符)6&&-21
0&&30
6||01
2
II或運(yùn)算6||-21
f-(雙目運(yùn)算符)
0||00
例如:
(1)letter是英文字符:letter>='A'&&letter<='Z'11letter>='a'&&letter<='z'
(2)如變量a、b已經(jīng)定義且a=2,b=5。
①a=a-2&&b=b+3
計(jì)算該表達(dá)式后,a的值是0,b的值還是5。
②a=a-l11b=b+3
計(jì)算該表達(dá)式后,a的值是1,b的值還是5。
(3)若語句if(!a)中條件恒為真,那么a的值應(yīng)為0。
例題:
(1)若有定義語句:intkl=10,k2=20;,執(zhí)行表達(dá)式(kl=kl>k2)&&(k2=k2>kl)后,kl和k2的值分別為()。
2011.9
A)0和1B)0和20C)10和1D)10和20
(2)若a是數(shù)值類型,則邏輯表達(dá)式(a=l)II(a!=1)的值是()2010.3
A)1B)0C)2D)不知道a的值,不能確定
6.條件運(yùn)算符
條件運(yùn)算是C語言中唯?的一個(gè)三目運(yùn)算符,其一般形式為:
表達(dá)式1?表達(dá)式2:表達(dá)式3;
(1)條件語句:
if(a>b)max=a;
elsemax=b;
可用條件表達(dá)式寫為:max=(a>b)?a:b;
(2)條件運(yùn)算符的結(jié)合方向是自右至左。例如:a>b?a:c>d?c:d應(yīng)理解為:a>b?a:(c>d?c:d)
例題:
(1)有如下嵌套的if語句
if(a<b)
if(a<c)k=a;
elsek=c;
else
if(b<c)k=b;
elsek=c;
以下選項(xiàng)中與上述if語句等價(jià)的語句是()2010.3
A)k=(a<c)?a:b;k=(b<c)?b:c;
B)k=(a<b)?((b<c)?a:b):((b>c)?b:c);
C)k=(a<b)?((a<c)?a:c):((b<c)?b:c);
D)k=(a<b)?a:b;k=(a<c)?a:c;
7.賦值運(yùn)算符
(1)在C語言中,"="稱為賦值運(yùn)算符,其功能是將"="右邊表達(dá)式的值賦給左邊的變量。賦值運(yùn)算符的運(yùn)算方
向是從右到左的。
復(fù)合賦值運(yùn)算符
運(yùn)算符名稱示例注意
+=加賦值a+=b等價(jià)于a=a+b
一=減賦值a-=b等價(jià)于a=a-b
*二乘賦值a*=b等價(jià)于a=a*b(1)如果復(fù)合賦值運(yùn)算符的右側(cè)
是一個(gè)表達(dá)式,則在運(yùn)算時(shí)將
/=除賦值a/=b等價(jià)于a=a/b
表達(dá)式看作一個(gè)整體,相當(dāng)于
%=求余賦值a%=b等價(jià)于a=a%b有括號(hào)。
例如:a*=b+3等價(jià)于a=a*(b+3)
&=按位與賦值a&=b等價(jià)于a=a&b
(2)復(fù)合賦值運(yùn)算符的兩個(gè)組
1=按位或賦值al=b等價(jià)于a=alb合之間不能有空格。
?=按位左移賦值a?=b等價(jià)于a=a?b
?=按位右移賦值a?=b等價(jià)于a=a?b
例題:
(1)若有定義語句:inta=3,b=2,c=l;,以下選項(xiàng)中錯(cuò)誤的賦值表達(dá)式是(')2011.3
A)a=(b=4)=3;B)a=b=c+l;C)a=(b=4)+c;D)a=l+(b=c=4);
8.逗號(hào)運(yùn)算符
逗號(hào)表達(dá)式的一般形式為:
表達(dá)式1,表達(dá)式2,表達(dá)式3,表達(dá)式n
逗號(hào)表達(dá)式的結(jié)合方向是自左向右的,逗號(hào)表達(dá)式的值是所有表達(dá)式中最右邊的表達(dá)式的值。攸I如,
表達(dá)式"3+5,3*5〃的值是15。在所有的運(yùn)算符中,逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低。
1.5宏定義
C語言提供的標(biāo)準(zhǔn)輸入輸出函數(shù)(如:printf函數(shù)、scanf函數(shù)等)包含在相應(yīng)的頭文件中,程序中若需調(diào)用
這類函數(shù),必須在程序最開頭引用該頭文件,如寫為:#include<stdio.h>
1.文件包含的一般格式為:
include"需包含的文件名"或者include〈需包含的文件名〉
如:
include<stdio.h>或者#include"math.h"
常用標(biāo)準(zhǔn)頭文件
頭文件名作用
stdio.h輸入輸出函數(shù)中使用的有關(guān)說明和定義
math.h與數(shù)學(xué)處理函數(shù)有關(guān)的說明與定義
ctype.h字符處理
string.h字符串函數(shù)的有關(guān)說明與定義
stddef.h定義某些常用內(nèi)容
stdlib.h雜項(xiàng)說明
time.h支持系統(tǒng)時(shí)間函數(shù)
2.宏定義分為兩種:不帶參數(shù)的宏定義和帶參數(shù)的宏定義。
(1)不帶參數(shù)的宏定義(符號(hào)常量)
定義的格式:#define宏名宏定義字符串
宏定義必須寫在函數(shù)之外,其作用域?yàn)閺暮甓x命令起到源程序結(jié)束。如要終止其作用域可使用#undef
命令。
(2)帶參數(shù)的宏定義
定義的格式:#define宏名(形參表)宏定義字符串
例題:
(1)有以下程序
^include
^defineS(x)4*(x)*x+l
main()
{intk=5,j=2;
printf("%d\n”,S(k+j));
)
程序運(yùn)行后的輸出結(jié)果是()2011.3
A)197B)143C)33D)28
2分支結(jié)構(gòu)
1.if分支結(jié)構(gòu)一般分為二分支結(jié)構(gòu)和多分支結(jié)構(gòu)。
二分支結(jié)構(gòu)主要有以下幾種形式,分別如下:
(1)第一種形式
if(條件)
語句1;
else
語句2;
(2)第二種形式
if(條件)
語句;
(3)第三種形式
else-if語句的一般形式為:
if(條件1)
語句1;
elseif(條件2)
語句2;
elseif(條件n)
語句n;
else
語句n+1;
(4)第四種形式
if語句的嵌套
其一般形式可表示如下:
if(表達(dá)式)
if語句;
或者為
if(表達(dá)式)
if語句;
else
if語句;
注意:
(1)例如以下程序段:
main()
{intx=l,y=3,z=0;
if(!z)z++;
if(x)z-;
if(y)z-=l;
printf("%d\n",z);
)
執(zhí)行后輸出的結(jié)果是-1。
(2)C語言規(guī)定:從最內(nèi)層開始,else總是與它前面離得最近的不帶else的if配對(duì)。
例如以下程序段:
main()
{inta=l,b=2,c=3,d=4,m=6;
if(a>b)
if(c>d)m=3;
注意:第一個(gè)else與第二個(gè)if進(jìn)行
elsem=4;
配對(duì),第二個(gè)else和第一個(gè)if進(jìn)行配對(duì)。
elsem=5;
printf("%d",m);
}
執(zhí)行后輸出的結(jié)果5。
2.switch語句:每個(gè)語句段中都使用break語句
switch(表達(dá)式){
case常量表達(dá)式1:語句段1;break;
注意:如省略break,則從符合條件表達(dá)式
case常量表達(dá)式2:語句段2;break;
的case之后的語句開始執(zhí)行,一直到整個(gè)
switch語句的結(jié)束。
case常量表達(dá)式n:語句段n;break;
default:語句段n+1;break;
)
例如執(zhí)行以下程序:
main()
{intm=5;
switch(m/2)
{casel:m++;
case2:m+=3;
case5:m+=6;break;
default:m—=7;
)
printf(〃%d\n〃,m);
)
執(zhí)行后輸出結(jié)果是14o
3.如已定變量a、b和3其中a、b已賦值,比較交換的三種方式:
方法1:方法2:方法3:
lf(a>b){if(a>b){if(a>b){
temp=a;a=a+b;a=aAb;
a=b;b=a-b;b=bAa;
b=temp;a=a-b;a=aAb;
)})
例題:
(1)if語句的基本形式是:if(表達(dá)式)語句,以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 46875-2025進(jìn)入二氧化碳長(zhǎng)輸管道介質(zhì)質(zhì)量要求
- 試述取得時(shí)效制度
- 2026紅河縣公安局公開招聘警務(wù)輔助人員(24人)參考考試題庫附答案解析
- 2026山東事業(yè)單位統(tǒng)考省文物考古研究院招聘初級(jí)綜合類崗位2人備考考試試題附答案解析
- 2026聯(lián)勤保障部隊(duì)第九八〇醫(yī)院(白求恩國(guó)際和平醫(yī)院)公開招聘30人(第一季)備考考試試題附答案解析
- 2026江蘇連云港市灌南縣公安局警務(wù)輔助人員招聘65人備考考試題庫附答案解析
- 2026國(guó)家稅務(wù)總局廣西壯族自治區(qū)稅務(wù)系統(tǒng)公開招聘事業(yè)單位工作人員20人備考考試題庫附答案解析
- 落實(shí)生豬生產(chǎn)管理制度
- 如何在生產(chǎn)現(xiàn)場(chǎng)推行5s管理制度
- 藥品生產(chǎn)企業(yè)安全制度
- 2026年遼寧省盤錦市高職單招語文真題及參考答案
- 近五年貴州中考物理真題及答案2025
- 2026年南通科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試備考試題含答案解析
- 浙江省2026年1月普通高等學(xué)校招生全國(guó)統(tǒng)一考試英語試題(含答案含聽力原文含音頻)
- JTG-D40-2002公路水泥混凝土路面設(shè)計(jì)規(guī)范-PDF解密
- 《雅思閱讀精講》
- 產(chǎn)前檢查的操作評(píng)分標(biāo)準(zhǔn)
- 50年同學(xué)聚會(huì)邀請(qǐng)函(十二篇)
- 臨時(shí)用水施工方案
- LOTO上鎖掛牌安全培訓(xùn)課件
- 江西省房屋建筑與裝飾工程消耗量定額及統(tǒng)一基價(jià)表
評(píng)論
0/150
提交評(píng)論