全國計(jì)算機(jī)等級考試二級c語言培訓(xùn)_第1頁
全國計(jì)算機(jī)等級考試二級c語言培訓(xùn)_第2頁
全國計(jì)算機(jī)等級考試二級c語言培訓(xùn)_第3頁
全國計(jì)算機(jī)等級考試二級c語言培訓(xùn)_第4頁
全國計(jì)算機(jī)等級考試二級c語言培訓(xùn)_第5頁
已閱讀5頁,還剩255頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

全國計(jì)算機(jī)等級考試二級c語言培訓(xùn)目錄第1章程序設(shè)計(jì)基本概念第2章C程序設(shè)計(jì)的初步知識第3章順序結(jié)構(gòu)第4章選擇結(jié)構(gòu)第5章循環(huán)結(jié)構(gòu)第6章字符型數(shù)據(jù)第7章函數(shù)第8章地址和指針第9章數(shù)組第10章字符串第11章對函數(shù)的進(jìn)一步討論第12章C語言中用戶標(biāo)識符的作用域和存儲類第13章編譯預(yù)處理和動態(tài)存儲分配第14章結(jié)構(gòu)體、共用體和用戶定義類型第15章位運(yùn)算第16章文件第17章上機(jī)指導(dǎo)1.1程序和程序設(shè)計(jì)C語言源程序C語言編譯程序二進(jìn)制機(jī)器指令(目標(biāo)程序).C.OBJ高級語言機(jī)器語言C語言連接程序可執(zhí)行文件.EXE考點(diǎn)算法的基本特征①有窮性、②確定性、③可行性④有零個(gè)或多個(gè)輸入⑤有一個(gè)或多個(gè)輸出結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)考點(diǎn)總結(jié):由以上3種基本結(jié)構(gòu)組成的算法可以完成任何復(fù)雜的問題.考點(diǎn)總結(jié):用C程序?qū)崿F(xiàn)的算法可以沒有輸入,但必須要有輸出.習(xí)題1.1在環(huán)境中用RUN命令運(yùn)行一個(gè)C程序時(shí),這時(shí)所運(yùn)行的程序的后綴是_________。1.2C語言源程序文件名的后綴是_________;經(jīng)過編譯后,生成文件的后綴是_________;經(jīng)過連接后,生成文件的后綴是_________。1.3結(jié)構(gòu)化程序由_________、_________、_________三種基本結(jié)構(gòu)組成。.exe.c.obj.exe順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)第2章C程序設(shè)計(jì)的初步知識2.1簡單C語言程序的構(gòu)成和格式2.2標(biāo)識符、常量和變量2.3整型數(shù)據(jù)2.4實(shí)型數(shù)據(jù)2.5算術(shù)表達(dá)式2.6賦值表達(dá)式2.7自加、自減運(yùn)算符和逗號運(yùn)算符2.1簡單C語言程序的構(gòu)成和格式本節(jié)將通過一個(gè)簡單的程序例子,介紹C程序的一些基本構(gòu)成和格式,使大家對C語言程序有一個(gè)初步的了解。例

已知矩形的兩條邊長(用a表示寬,b表示長),求矩形的面積(area)。#include<stdio.h>main(){doublea,b,area;a=1.2;b=3.6;area=a*b;printf(“a=%f,b=%f,area=%f\n”,a,b,area);}注意:1.C程序由函數(shù)組成,一個(gè)程序必須有一個(gè)且只能有一個(gè)主函數(shù)(main),C程序總是從主函數(shù)開始執(zhí)行,并且也是從它結(jié)束的。2.函數(shù)體必須放在一對花括號“{}”內(nèi),在函數(shù)體中,通常有定義(說明)語句和執(zhí)行語句,定義語句應(yīng)出現(xiàn)在執(zhí)行語句之前,每條語句后面的分號不可少。多條語句可以寫在同一行上,并且一條語句也可以寫在多行上。3.C程序中的注釋必須放在"/*"和"*/"之間,"/"和"*"之間不允許有空格。"/*"和"*/"之間不允許再插入"/*"或"*/"。注釋可以出現(xiàn)在程序中任意位置。/*包含頭文件*//*主函數(shù),程序的入口*//*聲明部分,定義了3實(shí)型個(gè)變量*//*給變量a賦值*//*給變量b賦值*//*將a*b的結(jié)果賦值給變量area*//*分別輸出矩形的兩條邊長和面積*/abarea函數(shù)體2.2標(biāo)識符、常量和變量2.2.1標(biāo)識符在C語言中,有許多東西都需要命名,如變量名、函數(shù)名、數(shù)組名等,在命名的時(shí)候都必須遵守一定的規(guī)則,按此規(guī)則命名的符號稱為標(biāo)識符。在C語言中,合法的標(biāo)識符由字母、數(shù)字和下劃線組成。遵守以下規(guī)則命名:必須以字母(大小寫皆可)或下劃線開頭。隨后可跟若干個(gè)(包括0個(gè))字母、數(shù)字、下劃線。標(biāo)識符的長度各個(gè)系統(tǒng)不同,最好不要超過8個(gè)字符。如:areaPI_inia_arrays1234P101p(合法)456Pcade-yw.wa&b(不合法)注意C語言區(qū)分大小寫,如page、Page是兩個(gè)不同的標(biāo)識符。2.2標(biāo)識符、常量和變量2.2.1標(biāo)識符C語言的標(biāo)識符可以分為以下三類:a)關(guān)鍵字b)預(yù)定義標(biāo)識符c)用戶標(biāo)識符關(guān)鍵字:

C語言規(guī)定了一批標(biāo)識符,它們在程序中都代表著固定的含義,不能另作它用。例如,用來說明變量類型的標(biāo)識符int、float、double以及if語句中的if、else等都已有專門的用途,它們不能再用作變量名或函數(shù)名。注意,所有的關(guān)鍵字都必須小寫。C語言中的關(guān)鍵字請參考附錄4。預(yù)定義標(biāo)識符:這些標(biāo)識符在C語言中也都有特定的含義,如C語言提供的庫函數(shù)的名字(如include)和預(yù)編譯處理命令(如define)等。

用戶標(biāo)識符:由用戶根據(jù)需要定義的標(biāo)識符稱為用戶標(biāo)識符。一般用來給變量、函數(shù)、數(shù)組或文件等命名。如例中的a,b,area三個(gè)變量2.2標(biāo)識符、常量和變量2.2.2常量在程序運(yùn)行過程中,其值不能被改變的量,稱為常量。

常量整型常量:實(shí)型常量(符點(diǎn)型)字符常量:字符串常量:單精度型:雙精度型:由上述可見,常量的類型從字面形式上就可以區(qū)分開來,我們稱此常量為字面常量。12、-1、0‘A’、‘d’”NCRE”、“Beijing”、、、2.2標(biāo)識符、常量和變量2.2.3符號常量在C語言中,可以用一個(gè)符號名來代表一個(gè)常量,稱為符號常量。但是這個(gè)符號名必須在程序中用(#define)進(jìn)行特別的“指定"。例

計(jì)算圓面積和周長,此程序中將如何教大家使用符號常量。#include“stdio.h”main(){doubler,s,l;r=5.0;s=PI*r*r;l=2*PI*r;printf(“s=%f,l=%f\n”,s,l);}/*包含頭文件*//*定義符號常量,符號常量名為PI,用PI來代表3.14159*//*主函數(shù),程序的入口*//*聲明部分,定義了3實(shí)型個(gè)變量*//*給變量r賦值*//*計(jì)算圓的面積*//*計(jì)算圓的周長*//*分別圓的面積和周長*/注意習(xí)慣上,符號常量名用大寫,變量名用小寫,以示區(qū)別函數(shù)體rsl2.2標(biāo)識符、常量和變量2.2.4變量1.所謂變量是指在程序運(yùn)行過程中可以改變的量。如下程序:#include<stdio.h>main(){doublea,b;a=1.5;b=2.5;printf(“%f%f\n”,a,b);a=a+1;b=b+1;printf(“%f%f\n”,a,b);}ab2.在程序中,聲明變量就是在計(jì)算機(jī)內(nèi)存中申請了某個(gè)內(nèi)存單元。對變量進(jìn)行賦值,實(shí)質(zhì)上就是把數(shù)據(jù)存入該變量所代表的存儲單元中。語言規(guī)定,程序中所有變量都必須先定義后使用。如程序例、例。內(nèi)存空間ab2.3整型數(shù)據(jù)2.3.1整型常量在C語言中,按整型常量的表示形式可以有三種形式。整型常量由0~9十個(gè)數(shù)字組成,如32767、-32768、0等。由0~7八個(gè)數(shù)字組成,如010、011、016等。注意,最高位必須用0作引導(dǎo)符,與十進(jìn)制和十六進(jìn)制區(qū)分。如:018,為不合法的八進(jìn)制常量。由0~9十個(gè)數(shù)字和a~f(A~F)六個(gè)字母組成,如0x10、0Xde、0xf注意,最高位必須用0x(0X)作引導(dǎo)符,與十進(jìn)制和八進(jìn)制區(qū)分。如:oxff、0X12H,都為不合法的十六進(jìn)制常量。在C語言中,按整型常量的表示范圍可以分為四種。在C語言中,八進(jìn)制數(shù)和十六進(jìn)制數(shù)只能是正整數(shù)。注意如:-077、-0X11、等,(不合法)短整型基本整型長整型無符號整型三種進(jìn)制之間的轉(zhuǎn)換十六進(jìn)制常量:八進(jìn)制常量:十進(jìn)制常量:2.3整型數(shù)據(jù)2.2.2整型變量整型變量是用來存放整型常量的工具??梢园颜妥兞砍橄鬄橐粋€(gè)盒子。由于整型常量有短整型、基本整型、長整型和無符號整型四種類型,既然整型變量是用來存放整型數(shù)據(jù)的,那整型變量也要分為四種對應(yīng)類型的整型變量,以方便存放不同類型的整型常量。在此我們只介紹基本整型變量。也叫整型變量。在C語言中,整型變量我們需要用一個(gè)符號來表示它,即整型變量名。例如:intk;

/*定義k為整型變量,k為變量名*/關(guān)鍵字int是用來說明變量k的類型為整型。又如:inti,j,k;

/*定義i、j、k為整型變量*/inti;intj;intk;相同注意在同一行上使用關(guān)鍵字定義多個(gè)變量時(shí),變量之間用逗號隔開。所有定義語句后必須以一個(gè)“;”號結(jié)束,表示它是一條語句。2.3整型數(shù)據(jù)2.2.2整型變量在前面已經(jīng)講過,聲明變量就是在計(jì)算機(jī)內(nèi)存中申請某個(gè)內(nèi)存單元。在環(huán)境中,用關(guān)鍵字int聲明變量時(shí),計(jì)算機(jī)將會為每個(gè)變量開辟4字節(jié)(32個(gè)二進(jìn)制位)的內(nèi)存單元。例如,當(dāng)前的某段內(nèi)存空間如右圖所示。有如下程序段。內(nèi)存空間地址2000200120022003200420052006200720112010200920082012inti;intj;i=100;j=200;C語言規(guī)定,可以在定義變量的同時(shí)給變量賦初值,該過程稱為變量的初始化。例如:#include<stdio.h>main(){inti=1,j=0,k=2;::}ij100200/*在聲明變量的同時(shí),為三個(gè)變量賦值*/2.3整型數(shù)據(jù)2.3.3整型數(shù)據(jù)的分類不同的計(jì)算機(jī)系統(tǒng)對整型數(shù)所占用的字節(jié)數(shù)和數(shù)值范圍有不同規(guī)定,下表列出了在中定義的整型數(shù)所占用的字節(jié)數(shù)和數(shù)值范圍。

類型名稱通常使用簡寫字節(jié)數(shù)數(shù)值范圍[signed]intint4-2147483648~2147483647[signed]short[int]short2-32768~32767[signed]long[int]long4-2147483648~2147483647unsigned[int]unsigned40~4294967295unsignedshort[int]unsignedshort20~65535unsignedlong[int]unsignedlong40~4294967295由于整型數(shù)據(jù)在C語言中分為上述幾類,比如123。它是屬于哪一類型的?int123L、345l、0L、123456L123U、345u、0U、123456U123LU、345lu、0LU、123456LUlongunsignedunsignedlong2.3整型數(shù)據(jù)2.3.4整數(shù)在內(nèi)存中的存儲形式計(jì)算機(jī)中,內(nèi)存儲器的最小的存儲單位稱為“位(bit)”,每一位中只能存放0或1,因此稱為二進(jìn)制位。8個(gè)二進(jìn)制位組成一個(gè)“字節(jié)”,并給每一個(gè)字節(jié)分配一個(gè)地址。數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式進(jìn)行存放的。一、正整數(shù)正整數(shù)在內(nèi)存中是以“原碼”形式存放的。如果定義了一個(gè)short類型變量i:shorti;i=5;/*聲明i為短整型變量*//*給i賦以整數(shù)5*/十進(jìn)制數(shù)5的二進(jìn)制形式為101,在中,由于短整型變量在內(nèi)存中占2個(gè)字節(jié),i0000000000000101i符號位:0代表正整數(shù),1代表負(fù)整數(shù)二、負(fù)整數(shù)負(fù)整數(shù)在內(nèi)存中是以“補(bǔ)碼”形式存放的。52.4實(shí)型數(shù)據(jù)2.4.1實(shí)型常量在C語言中,實(shí)型常量的表示形式有兩種。實(shí)型常量由數(shù)字和小數(shù)點(diǎn)組成,如、.123、123.、指數(shù)形式:如:x101

0-1注意E(e)前后必須有數(shù)字,并且后面的必須為整型數(shù)。.3e33.0e33.e3(合法)3ee355e0.3(不合法)小數(shù)形式:2.4實(shí)型數(shù)據(jù)2.4.2實(shí)型變量分類類型名稱字節(jié)數(shù)數(shù)值范圍有效數(shù)字位單精度型float4-1038~10387位雙精度行double8-10308~1030815~16位單精度型變量定義的形式如下:floata,b,c;雙精度型變量定義的形式如下:doublex,y,z;實(shí)數(shù)在內(nèi)存中是以“指數(shù)”形式存放的。也可以在定義實(shí)型變量的同時(shí),對變量進(jìn)行初始化。例如:#include<stdio.h>main(){floata=1.5,b=.5,c=0.0;

doublex=1.5,y=.5,z=0.0;:}/*在聲明變量的同時(shí),為三個(gè)變量賦值*//*在聲明變量的同時(shí),為三個(gè)變量賦值*/2.5算術(shù)表達(dá)式2.5.1基本的算術(shù)運(yùn)算符+(加法運(yùn)算符,或正值運(yùn)算符)如:1+2、-(減法運(yùn)算符,或負(fù)值運(yùn)算符)如:3-4、-54*(乘法運(yùn)算符)如:、3*4、2*x/(除法運(yùn)算符)如:5/3、(a+b)/(x+y)單目運(yùn)算符雙目運(yùn)算符兩個(gè)整數(shù)相除,其值仍然為整數(shù)。如:5/3值為1、1/2值為0。兩個(gè)實(shí)數(shù)相除,其值仍然為實(shí)數(shù)。如:值為。除數(shù)、被除數(shù)只要有一個(gè)為實(shí)數(shù)時(shí),系統(tǒng)將自動進(jìn)行類型轉(zhuǎn)換,轉(zhuǎn)換為double型。如:、

最后結(jié)果的類型為double型。%(求余運(yùn)算符)注意:%運(yùn)算符的兩側(cè)必須為整型數(shù)據(jù)。如:7%4的結(jié)果為3。-7%4、7%-4、-7%-4的結(jié)果為多少?-33-3結(jié)果的符號和被除數(shù)相同2.5算術(shù)表達(dá)式2.5.2運(yùn)算符的優(yōu)先級、結(jié)合性和算術(shù)表達(dá)式一、優(yōu)先級()+-*/%+-單目雙目同級同級同級高低二、結(jié)合性單目運(yùn)算符的結(jié)合性是從右往左的,即表達(dá)式從右往左進(jìn)行計(jì)算,稱為右結(jié)合。其余運(yùn)算符的結(jié)合性是從左往右的。即表達(dá)式從左往右進(jìn)行計(jì)算,稱為左結(jié)合。例如:(5+1)/25+1/25*-25*(-2)三、算術(shù)表達(dá)式用算術(shù)運(yùn)算符和一對圓括號將運(yùn)算量(或稱操作數(shù))連接起來的、符合C語法的表達(dá)式稱為算術(shù)表達(dá)式。算術(shù)表達(dá)式中,運(yùn)算對象可以是常量、變量和函數(shù)等。例如:2+sqrt(c)*b。5-1032.5算術(shù)表達(dá)式2.5.3強(qiáng)制類型轉(zhuǎn)換表達(dá)式表達(dá)式的形式如下:(類型名)(表達(dá)式)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符作用:可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成想要的類型。例如:(double)(10%3)3注意int3.234(錯(cuò)誤)(double)10%3(錯(cuò)誤)例:閱讀如下程序,關(guān)于強(qiáng)制類型轉(zhuǎn)換。#include<stdio.h>main(){doublea;intb;a=3.6;b=(int)a;printf(“a=%f,b=%d\n”,a,b);}a=3.600000,b=3ab32.6賦值表達(dá)式2.6.1賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符:=賦值表達(dá)式:由賦值運(yùn)算符組成的表達(dá)式稱為賦值表達(dá)式,它的形式如下:

變量名=表達(dá)式

賦值號的左邊必須是一個(gè)代表某一存儲單元的變量名。賦值運(yùn)算的功能是先求出右邊表達(dá)式的值,然后把此值賦給左邊的變量。例如,若a和b都被定義成int類型變量

a=10;

/*把常量10賦給變量a*/

b=a;

/*把a(bǔ)中的值賦給變量b,a中的值不變*/注意1.賦值運(yùn)算符的優(yōu)先級別只高于逗號運(yùn)算符,比其它任何運(yùn)算符的優(yōu)先級都低,且具有自右向左的結(jié)合性。例如:a=2+7/32.賦值運(yùn)算符的左側(cè)只能是變量不能是常量或表達(dá)式。如a+b=c是不合法的賦值表達(dá)式。3.賦值號右邊的表達(dá)式也可以是一個(gè)賦值表達(dá)式,如a=b=7+1。4.作為一個(gè)表達(dá)式,它自己也應(yīng)該有一個(gè)值,C語言規(guī)定最左邊變量中所得到的新值就是賦值表達(dá)式的值。2.6賦值表達(dá)式2.6.2復(fù)合賦值表達(dá)式在賦值運(yùn)算符”=”之前加上其它運(yùn)算符可以構(gòu)成復(fù)合賦值運(yùn)算符。+=-=*=/=%=<<=>>=&=^=|=

等價(jià)于

n=n+1

等價(jià)于

a=a+3

等價(jià)于

n=n*(m+3)注意:有括號例2.3已有變量a,初始值為9,計(jì)算表達(dá)式a+=a-=a+a的值。a表達(dá)式如:n+=1a+=3n*=m+3a+=a-=a+a918a+=a-=18a=a-18-9-9a+=-9a=a+-9a=a+(-9)-18-18a+=a-=a+a的值是:-182.6賦值表達(dá)式2.6.3賦值運(yùn)算中的類型轉(zhuǎn)換在賦值運(yùn)算中,只有在賦值號右側(cè)表達(dá)式的類型與左側(cè)變量類型完全一致時(shí),賦值操作才能進(jìn)行。如:inta;doubleb;a=10;b=3.5;如果賦值運(yùn)算符兩側(cè)的數(shù)據(jù)類型不一致,在賦值前,系統(tǒng)將自動先把右側(cè)表達(dá)式求得的數(shù)值,按賦值號左邊變量的類型進(jìn)行轉(zhuǎn)換,也可以用強(qiáng)制類型轉(zhuǎn)換的方式,人為地進(jìn)行轉(zhuǎn)換后賦給賦值號左邊的變量。a10b如:inta;doubleb;a=20.5;b=15;a20b3.在C語言的表達(dá)式中(不包括賦值表達(dá)式),如果運(yùn)算符兩邊的數(shù)據(jù)類型不相同,將進(jìn)行類型之間的轉(zhuǎn)換。轉(zhuǎn)換規(guī)則如下:doublelongunsignedintfloatchar,short低高如:10+97+1.5-8765.1234*98double2.7自加、自減運(yùn)算符和逗號運(yùn)算符2.7.1自加運(yùn)算符“++”和自減運(yùn)算符“--”++(自加運(yùn)算符)--(自減運(yùn)算符)1.++、--運(yùn)算符是單目運(yùn)算符,運(yùn)算對象只能變量,不能是常量和表達(dá)式。2.++和--運(yùn)算符的結(jié)合方向是"自右至左"。i++、++ii--、--ii=i+1i=i-1例如:inti=5;i++;inti=5;++i;inti=5;i--;inti=5;--i;i:表達(dá)式:運(yùn)算規(guī)則運(yùn)算符在前,先計(jì)算,后賦值運(yùn)算符在后,先賦值,后計(jì)算例如:inti=3;

-i++;

inti=3;-(i++);i:表達(dá)式:思考:程序示例,自增自減運(yùn)算#include<stdio.h>main(){inti=0,j;j=i++;printf(“%d,%d\n”,i,j);i=0;

j=++i;printf(“%d,%d\n”,i,j);}上機(jī)練習(xí)656645444-32.7自加、自減運(yùn)算符和逗號運(yùn)算符2.7.2逗號運(yùn)算符和逗號表達(dá)式,(逗號運(yùn)算符)用逗號將表達(dá)式連接起來的式子稱為逗號表達(dá)式。逗號表達(dá)式的一般形式為:表達(dá)式1,表達(dá)式2,…,表達(dá)式n表達(dá)式之間用逗號進(jìn)行連接1.逗號運(yùn)算符的結(jié)合性為從左到右,因此逗號表達(dá)式將從左到右進(jìn)行運(yùn)算。如:i=3,i++,++i,i+5

i表達(dá)式33i表達(dá)式43i表達(dá)式55i表達(dá)式510逗號表達(dá)式的值為2.在所有運(yùn)算符中,逗號運(yùn)算符的優(yōu)先級別最低。習(xí)題一、選擇題2.1以下選項(xiàng)中正確的整型常量是A12.B-20C1,000D4562.2以下選項(xiàng)中正確的實(shí)型常量是2D.8712.3以下選項(xiàng)中不正確的實(shí)型常量是A2.607E-1B0.8103e2C-77.77D456e-22.4以下選項(xiàng)中不合法的用戶標(biāo)識符是Aabc.cBfileCMainDPRINTF2.5以下選項(xiàng)中不合法的用戶標(biāo)識符是

A_123BprintfCA$DDim2.6C語言中運(yùn)算對象必須是整型的運(yùn)算符是A%B/C!D**2.7可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是AvoidBas_b3CForD2cdefine_123-abcDOWORDIfcaseSIGBDBABCAB2.8若變量已正確定義并賦值,符合C語言語法的表達(dá)式是Aa=a+7;Ba=7+b+c,a++Cint(12.3%4)Da=a+7=c+b2.9以下中敘述中正確的是Aa是實(shí)型變量,C允許進(jìn)行賦值a=10,但不可以這樣說:實(shí)型變量中允許存放整型值B在賦值表達(dá)式中,賦值號左邊既可以是變量也可以是任意表達(dá)式C執(zhí)行表達(dá)式a=b后,在內(nèi)存中a和b存儲單元中的原有值都將被改變,a的值已由原值改變?yōu)閎的值,b的值由原值變?yōu)?D已有a=3,b=5,當(dāng)執(zhí)行了表達(dá)式a=b,b=a之后,使a中的值為5,b中的值為32.10以下中敘述中正確的是A在C程序中無論是整數(shù)還是實(shí)數(shù),只要在允許的范圍內(nèi)都能準(zhǔn)確無誤的表示BC程序由主函數(shù)組成CC程序由若干個(gè)函數(shù)組成DC程序中只允許包含一個(gè)函數(shù)中int類型變量所占字節(jié)數(shù)是A1B2C3D4習(xí)題BACD習(xí)題2.12合法的八進(jìn)制數(shù)是2.13不合法的十六進(jìn)制數(shù)是AoxffB0XabcC0x11D0x19二、填空題2.14若k為int型變量且賦值11.請寫出運(yùn)算k++后表達(dá)式的值____和變量k的值_____.2.15若x為double型變量,請寫出運(yùn)算x=3.2,++x后表達(dá)式的值_____和變量x的值______.2.16函數(shù)體由符號___開始,到符號___結(jié)束.函數(shù)體內(nèi)的前面是_____________部分,后面是___________部分.2.17C語言中的標(biāo)識符可分為和預(yù)定義標(biāo)識符三類.2.18在C語言程序中,用關(guān)鍵字____定義基本整型變量,用關(guān)鍵字_____定義單精度實(shí)型變量,用關(guān)鍵字_____定義雙精度實(shí)型變量.2.19把a(bǔ)1,a2定義成雙精度實(shí)型變量,并賦初值1的定義語句是________________.2.20C程序中定義的變量,代表內(nèi)存中的一個(gè)_________.1112{}定義和說明語句關(guān)鍵字用戶標(biāo)識符intfloatdoubledoublea1=1,a2=1;存儲單元AA習(xí)題2.21表達(dá)式3.5+1/2的計(jì)算結(jié)果是______.2.22對數(shù)學(xué)式axb,寫出三個(gè)等價(jià)的C語言表達(dá)式_______._______.________.c2.23表達(dá)式s=10應(yīng)當(dāng)讀做___________________________.三.改錯(cuò)題#includestdio.h;main();/*mainfunction*/floatr,s;/*/*risradius*/,/*sisareaofcircular*/*/r=5.0;s=3.14159*r*r;printf("%f\n",s)main/*mainfunction*/{floata,b,c,v;/*a,b,caresides,visvolumeofcube*/v=a*b*c;printf("%f\n",v)}(a*b)/ca*b/ca*(b/c)將10賦給變量s第3章順序結(jié)構(gòu)3.1賦值語句3.2數(shù)據(jù)輸出3.3數(shù)據(jù)輸入3.4復(fù)合語句和空語句3.5程序舉例3.1賦值語句在賦值表達(dá)式的尾部加上一個(gè)“;”號,就構(gòu)成了賦值語句,也稱表達(dá)式語句。例如:a=a+b(賦值表達(dá)式)a=a+b;(賦值語句)

3.2數(shù)據(jù)輸出3.2.1printf函數(shù)的一般調(diào)用形式首先,我們先來了解一些其它知識。一個(gè)程序,一般情況下都包含數(shù)據(jù)輸入、數(shù)據(jù)處理、數(shù)據(jù)輸出三個(gè)部分。輸出:把數(shù)據(jù)從計(jì)算機(jī)內(nèi)部送到計(jì)算機(jī)的外部設(shè)備上的操作稱為“輸出”。輸入:從計(jì)算機(jī)外部設(shè)備將數(shù)據(jù)送入計(jì)算機(jī)內(nèi)部的操作稱為“輸入”。顯示器鍵盤在C語言中,數(shù)據(jù)的輸入和輸出是通過調(diào)用輸入和輸出函數(shù)來實(shí)現(xiàn)的。在環(huán)境下,在調(diào)用輸入和輸出的庫函數(shù)之前要求在源程序中出現(xiàn)包含頭文件命令行:

#include<stdio.h>

或#include“stdio.h”1.printf函數(shù)的調(diào)用形式如下:printf(格式控制,輸出項(xiàng)表)

作用:按照指定的格式將輸出項(xiàng)中的值輸出到終端。要輸出的內(nèi)容(常量、變量、表達(dá)式等)雙引號括起來的字符串,按照該指定的格式進(jìn)行輸出3.2數(shù)據(jù)輸出3.2.1printf函數(shù)的一般調(diào)用形式例如:printf(“a=%d,b=%d”,a,b);函數(shù)名格式控制輸出項(xiàng)(實(shí)參)在printf函數(shù)調(diào)用的后面加一個(gè)分號就構(gòu)成輸出語句。例:對于printf函數(shù)的調(diào)用形式,請見下面的程序示例。#include<stdio.h>main(){inti=2518;doublea=3.1415;printf(“i=%d,a=%f,a*10=%e\n",i,a,a*10);}格式控制輸出項(xiàng)(實(shí)參)i=2518,a=3.141500,a*10=3.141500e+001“i=%d,a=%f,a*10=%e\n"原樣輸出%d%f%e%為引導(dǎo)符d、f、e為格式字符轉(zhuǎn)義字符3.2數(shù)據(jù)輸出3.2.1printf函數(shù)的一般調(diào)用形式printf也可以沒有輸出項(xiàng),函數(shù)的調(diào)用形式將為:

printf(格式控制)比如:printf(“OK!”);OK!3.2數(shù)據(jù)輸出3.2.2printf函數(shù)中常用的格式說明格式字符:

d

以十進(jìn)制整數(shù)進(jìn)行輸出

o

以八進(jìn)制數(shù)進(jìn)行輸出

x

以十六進(jìn)制數(shù)進(jìn)行輸出

f

以小數(shù)形式進(jìn)行輸出::使用時(shí),以%作為引導(dǎo)符格式字符必須使用小寫如:%d%o%x%f簡單的格式字符形式完整的格式字符形式%

+

-

0

n

l/h

格式字符n

指定輸出的寬度printf(“%6d\n”,k);n1指定輸出的寬度,n2指定輸出的小數(shù)位數(shù)printf(“%12.2f\n”,f);0

輸出的數(shù)據(jù)右對齊,前面補(bǔ)0printf(“%06d\n”,k);-

輸出的數(shù)據(jù)左對齊printf(“%-6d\n”,k);+

輸出的數(shù)據(jù)為正數(shù)時(shí),使前面帶有“+”符號printf(“%+-6d\n”,k);l

輸出整數(shù)時(shí),為長整型;輸出實(shí)數(shù)時(shí),為雙精度型printf(“%ld\n”,k);h

輸出整數(shù)時(shí),為短整型printf(“%hd\n”,k);有如下程序段intk;floatf;k=1234;jj1234jjjjjj0012341234jj+1234j123412343.2數(shù)據(jù)輸出3.2.2printf函數(shù)中常用的格式說明下面,將簡單的介紹一些輸出格式形式和輸出結(jié)果:printf(“%f\n”,f);printf(“%12f\n”,f);printf(“%.6f\n”,f);printf(“%12.0f\n”,f);printf(“%e\n”,f);printf(“%13e\n”,f);printf(“%13.8e\n”,f);printf(“%3.8e\n”,f);printf(“%.8e\n”,f);printf(“%13.9e\n”,f);printf(“%13.2e\n”,f);printf(“%g\n”,f);printf(“%10g\n”,f);printf(“%f%%\n”,12.5);jjjjjjjjj1231.234560e+0021.234560e+0021.23456000e+0021.23456000e+0021.23456000e+0021.234560000e+002jjjj1.23e+00212.500000%以指數(shù)形式輸出,輸出時(shí),先以小數(shù)位數(shù)為基準(zhǔn),再考慮輸出的寬度.以原數(shù)的最小寬度進(jìn)行輸出,指定寬度時(shí),按指定寬度進(jìn)行輸出3.2數(shù)據(jù)輸出3.2.3使用printf函數(shù)時(shí)的注意事項(xiàng)1.在使用輸出函數(shù)時(shí),輸出的數(shù)據(jù)要清晰,視覺感要好。例如:printf(“%d%d%f\n”,k,k,f);printf(“%d,%d,%f\n”,k,k,f);printf(“k=%d,k=%d,f=%f\n”,k,k,f);2.在格式控制串中,格式說明與輸出項(xiàng)從左到右在類型上要一一對應(yīng)匹配。如不匹配,將導(dǎo)致數(shù)據(jù)不能正確輸出,這時(shí),系統(tǒng)并不報(bào)錯(cuò)。最好例如:inta=10;floatb=12.5;printf(“a=%f,b=%d\n”,a,b);a=0.000000,b=1076428800inta=10;floatb=12.5;printf(“a=%d,b=%f\n”,a,b);編譯時(shí)能通過,則輸出時(shí)為不正確的數(shù)據(jù)輸出時(shí)類型一定要一一對應(yīng)1234,1234,123.4560003.2數(shù)據(jù)輸出3.2.3使用printf函數(shù)時(shí)的注意事項(xiàng)若格式說明中的個(gè)數(shù)少于輸出項(xiàng)的個(gè)數(shù)時(shí),則多余的輸出項(xiàng)不予輸出;若格式說明中的個(gè)數(shù)多于輸出項(xiàng)的個(gè)數(shù)時(shí),則將輸出一些毫無意義的數(shù)字。例如:inta=10,b=20,c=30;printf(“%d,%d\n”,a,b,c);10,20inta=10,b=20,c=30;printf(“%d%d%d%d\n”,a,b,c);10,20,30,23674604.在格式控制串中,除了合法的格式說明外,可以包含任意的合法字符,還可以包括轉(zhuǎn)義字符,這些字符在輸出時(shí)將"原樣照印"。例如:printf(“my\tname\tis\tchenhao\n”);mynameischenhao\t為轉(zhuǎn)義字符(制表符)代表八個(gè)空格字符5.如果需要輸出百分號%,則應(yīng)該在格式控制串中用兩個(gè)連續(xù)的百分號%%來表示。例如:printf(“%d%%”,100);100%6.printf函數(shù)的返回值通常是本次調(diào)用中輸出字符的個(gè)數(shù)。思考:printf(“my\tname\tis\tchenhao\n”);函數(shù)的返回值是多少?3.2數(shù)據(jù)輸出3.2.3使用printf函數(shù)時(shí)的注意事項(xiàng)7.思考:如:intk=8;

printf(“%d,%d\n”,k,++k);9,98.輸出時(shí),也可以用參數(shù)作為域?qū)?。如:intm=8,i=10;printf(“%*d”,m,i);jjjjjj10intm=8,n=10;floatf=123.456;printf(“%*.*f”,m,n,f);首先先對應(yīng)匹配,然后再輸出,輸出的過程,是按輸入項(xiàng)從右往左printf(“%8d”,i);printf(“%f”,f);3.3數(shù)據(jù)輸入3.3.1scanf函數(shù)的一般調(diào)用形式scanf(格式控制,輸入項(xiàng)表)1.scanf函數(shù)的調(diào)用形式如下:作用:把從終端設(shè)備(如,鍵盤)上輸入的數(shù)據(jù)傳送給對應(yīng)的輸入項(xiàng)(如變量地址)。雙引號括起來的字符串,按照該指定的格式進(jìn)行輸入把從鍵盤上輸入的數(shù)據(jù)送到該指定的輸入項(xiàng)中,輸入項(xiàng)中必須為變量的地址例如:intk;floata;doubley;scanf(“%d%f%lf”,&k,&a,&y);函數(shù)名輸入格式控制變量地址(實(shí)參)在scanf函數(shù)調(diào)用的后面加一個(gè)分號就構(gòu)成輸入語句?!镒兞康刂沸问剑?變量名

3.3數(shù)據(jù)輸入3.3.1scanf函數(shù)的一般調(diào)用形式例:對于scanf函數(shù)的調(diào)用形式,請見下面的程序示例。#include<stdio.h>main(){inta;floatb;scanf(“%d%f”,&a,&b);printf(“%d,%f\n",a,b);}scanf(“%d%f”,&a,&b);比如,想把23賦值給賦值給b,輸入形式為:程序執(zhí)行到此,停止執(zhí)行,等待用戶從鍵盤輸入數(shù)據(jù),等輸入數(shù)據(jù)后,待用戶安回車鍵<CR>后,繼續(xù)向后執(zhí)行。2312.345<CR>ab輸出結(jié)果為:233.3數(shù)據(jù)輸入3.3.2scanf函數(shù)中常用的格式說明scanf函數(shù)中的格式說明字符與輸出函數(shù)中的格式說明字符相同。在使用scanf函數(shù)進(jìn)行輸入時(shí),應(yīng)該注意以下幾點(diǎn):

1.在格式控制中,格式說明的類型與輸入項(xiàng)的類型,應(yīng)該一一對應(yīng)匹配。如果類型不匹配,系統(tǒng)并不給出出錯(cuò)信息,但不可能得到正確的數(shù)據(jù)。2.在輸入項(xiàng)表中,輸入項(xiàng)的個(gè)數(shù)要與格式符的個(gè)數(shù)相同,且排列順序要一一對應(yīng)。若格式符個(gè)數(shù)少于輸入項(xiàng),scanf函數(shù)按格式符的數(shù)目結(jié)束輸入,多余的輸入項(xiàng)沒有得到新的數(shù)據(jù);若格式符個(gè)數(shù)多于輸入項(xiàng),scanf函數(shù)則按輸入項(xiàng)的數(shù)目結(jié)束輸入,多余的格式符不起作用(作廢)。例如:inta,b,c;scanf(“%d%d”,&a,&b,&c);printf(“%d%d%d\n”,a,b,c);10,20,-858993460比如說,我們從鍵盤讀入:102030<CR>inta,b,c;scanf(“%d%d%d%d”,&a,&b,&c);printf(“%d%d%d\n”,a,b,c);10,20,30比如說,我們從鍵盤讀入:10203040<CR>3.3數(shù)據(jù)輸入3.3.2scanf函數(shù)中常用的格式說明在scanf函數(shù)中的格式字符前可以用一個(gè)整數(shù)指定輸入數(shù)據(jù)所占寬度。當(dāng)輸入函數(shù)的格式說明的類型與輸入項(xiàng)的類型一一對應(yīng)匹配時(shí)。程序在運(yùn)行的過程中,當(dāng)我們輸入的數(shù)據(jù)個(gè)數(shù)少于輸入項(xiàng)時(shí),運(yùn)行的程序?qū)⒁恢钡却斎耄钡綕M足要求時(shí)才繼續(xù)向下執(zhí)行;當(dāng)我們輸入的數(shù)據(jù)個(gè)數(shù)多于輸入項(xiàng)時(shí),多于的數(shù)據(jù)沒有作廢,依然在緩沖區(qū)中等待等待下一個(gè)輸入操作語句。5.scanf函數(shù)在調(diào)用結(jié)束后將返回一個(gè)函數(shù)值,其值等于得到輸入值的輸入項(xiàng)的個(gè)數(shù)。例如:inta;scanf(“%5d”,&a);該輸入函數(shù)正確的輸入形式為:88輸入寬度為5思考:scanf(“%d%d%d%d”,&a,&b,&c);函數(shù)的返回值是多少?3.3數(shù)據(jù)輸入3.3.3通過scanf函數(shù)從鍵盤輸入數(shù)據(jù)1.輸入數(shù)值數(shù)據(jù)例如:intk;floata;doubley;scanf(“%d%f%lf”,&k,&a,&y);若要給k賦值10,a賦值,y賦值,正確的輸入格式如下:1012.31234567.89<CR>1012.31234567.89<CR>10<CR>12.3<CR>1234567.89<CR>輸入的數(shù)據(jù)之間必須用間隔符隔開可以使用的間隔符有:空格、回車符、制表符錯(cuò)誤的輸入格式:1012.31234567.89<CR>3.3數(shù)據(jù)輸入3.3.3通過scanf函數(shù)從鍵盤輸入數(shù)據(jù)2.指定輸入數(shù)據(jù)所占的寬度例如:intk;floata;doubley;scanf(“%3d%5f%5lf”,&k,&a,&y);若從鍵盤上從第1列開始輸入:123456.789.123<CR>用printf(“k=%da=%fy=%f\n”,k,a,y);輸出的結(jié)果是:kya1233.3數(shù)據(jù)輸入3.3.3通過scanf函數(shù)從鍵盤輸入數(shù)據(jù)3.跳過某個(gè)輸入數(shù)據(jù)例如:intx,y,z;scanf(“%d%*d%d%d”,&x,&y,&z);printf(“%d%d%d\n”,x,y,z);若從鍵盤上輸入:12345678<CR>則輸出的結(jié)果是:1256783.3數(shù)據(jù)輸入3.3.3通過scanf函數(shù)從鍵盤輸入數(shù)據(jù)4.在格式控制字符串中插入其他字符又如:intx,y,z;scanf(“%d,%d,%d”,&x,&y,&z);這時(shí)從鍵盤上輸入時(shí),一定要向下形式進(jìn)行輸入:Pleaseinputx,y,z:123456<CR>在格式控制字符中出現(xiàn)了其他字符的語句如下:intx,y,z;scanf(“Pleaseinputx,y,z:%d%d%d”,&x,&y,&z);則正確的輸入形式:12,34,56<CR>12,34,56<CR>12,34,56<CR>錯(cuò)誤的輸入形式:123456<CR>12,34,56<CR>3.4復(fù)合語句和空語句3.4.1復(fù)合語句復(fù)合語句是用符號"{"和"}"括起來的語句組,也可稱為"語句塊",在語法上被視為一條語句。復(fù)合語句的語句形式如下:{語句1;語句2;…;語句n;}例如:{a++;b*=a;printf("b=%d\",b);}3.4復(fù)合語句和空語句3.4.2空語句空語句由一個(gè)分號構(gòu)成,但它是一個(gè)C語句,程序執(zhí)行空語句時(shí)不產(chǎn)生任何操作。如:main(){;}3.5程序舉例例

以下程序由終端輸入兩個(gè)整數(shù)給變量x和y;然后輸出x和y;在交換x和y中的值后,再輸出x和y。驗(yàn)證兩個(gè)變量中的數(shù)是否正確地進(jìn)行了交換。程序分析:輸入兩個(gè)整數(shù)分別給變量x和y。輸出兩個(gè)變量。交換兩個(gè)變量中的值。再輸出兩個(gè)變量。自然語言描述開始輸入x、y輸出x、y交換x和y中的值輸出x、y結(jié)束一般流程圖描述#include<stdio.h>main(){intx,y;printf(“Enterx&y:\n");scanf(“%d%d”,&x,&y);printf(“x=%dy=%d\n",x,y);

printf(“x=%dy=%d\n",x,y);}通過流程圖,編寫出程序xy123456zz=x;x=y;y=z;交換x和y中的值;z=x;x=y;y=z;intz;Enterx&y:123456<CR>x=123y=456x=456y=1233.5程序舉例例

輸入一個(gè)double類型的數(shù),使該數(shù)保留小數(shù)點(diǎn)后兩位,對第三位小數(shù)進(jìn)行四舍五入處理,然后輸出此數(shù),以便驗(yàn)證處理是否正確。程序分析:輸入一個(gè)double類型的數(shù)給變量x。使該數(shù)保留兩位小數(shù),要進(jìn)行四舍五入。輸出四舍五入后的值。開始輸入x對x進(jìn)行四舍五入輸出x結(jié)束12346#include<stdio.h>main(){doublex;

printf(“Enterx:\n”);/*輸出的時(shí)候進(jìn)行提示*/scanf("%lf",&x);

printf(“(1)x=%f\n”,x);/*輸出我們剛剛輸入的原始數(shù)據(jù)*/x=x*100;x=x+0.5;x=(int)x;x=x/100;printf("(2)x=%f\n",x);}Enterx:123.4567<CR>習(xí)題一.選擇題3.1若a,b,c,d都是int型變量且初值為0,以下選項(xiàng)中不正確的賦值語句是Aa=b=c=100;Bd++;Cc+b;Dd=(c=22)-(b++);3.2下列選項(xiàng)中不是C語句的是A{inti;i++;printf(“%d\n”i);}B;Ca=5,c=10D{;}3.3合法的C語言賦值語句是Aa=b=58Bk=int(a+b);Ca=58,b=58D--i;3.4有以下程序#include<stdio.h>main(){intx=10,y=3;printf("%d\n",y=x/y);}執(zhí)行后的輸出結(jié)果是A0B1C3D不確定的值3.5若變量已正確定義為int型,要給a,b,c輸入數(shù)據(jù),正確的輸入語句是Aread(a,b,c);Bscanf(“%d%d%d”,a,b,c);Cscanf(“%D%D%D”,&a,%b,%c);Dscanf(“%d%d%d”,&a,&b,&c);CCDCD習(xí)題3.6若變量已正確定義為float類型,要通過輸入語句:scanf(“%f%f%f”,&a,&b,&c);給a賦值11.0,b賦值22.0,c賦值33.0,不正確的輸入形式是A11B11.0,22.0,33.0C11.0D11222222.033.033333.7若變量a,b,t已正確定義,要將a和b中的數(shù)進(jìn)行交換,以下選項(xiàng)中不正確的語句組是Aa=a+b,b=a-b,a=a-b;Bt=a,a=b,b=t;Ca=t;t=b;b=aDt=b;b=a;a=t;3.8若有正確定義語句

doublex=5.16894;語句printf(“%f\n”,(int)(x*1000+0.5)/(double)1000);的輸出結(jié)果是A輸出格式說明與輸出項(xiàng)不匹配,輸出無定值3.9若有以下程序段:intc1=1,c2=2,c3;c3=c1/c2;printf(“%d\n”,c3);執(zhí)行后的輸出結(jié)果是A0B1/2C0.5D1BCDA習(xí)題3.10若有以下程序段inta=0,b=0,c=0;c=(a-=-5),(a=b,b+3);printf(“%d,%d,%d\n”,a,b,c);執(zhí)行后的輸出結(jié)果是A3,0,-10B0,0,5C-10,3,-10D3,0,3二.填空題3.11若有以下定義,請寫出以下程序段中輸出語句執(zhí)行后的輸出結(jié)果________.inti=-200,j=2500;printf("(1)%d,%d",i,j);printf("(2)i=%d,j=%d\n",i,j);printf("(3)i=%d\nj=%d\n",i,j);3.12變量i,j,k已定義為int類型并均有初值0,用以下語句進(jìn)行輸入時(shí):scanf("%d",&i);scanf("%d",&j);scanf("%d",&k);從鍵盤輸入:12.3<CR>則變量i,j,k的值分別是______._______._______.3.13復(fù)合語句在語法上被認(rèn)為是_________.空語句的形式是_________.B(1)-200,2500(2)i=-200,j=2500(3)i=-200j=25001200一條語句;習(xí)題3.14C語句的最后用________結(jié)束.3.15以下程序段要求通過scanf語句給變量賦值,然后輸出變量的值.寫出運(yùn)行時(shí)給k輸入100,給a輸入15.81,給x輸入時(shí)的三種可能的輸入形式________.___________.___________.intk;floata;doublex;scanf("%d%f%lf",&k,&a,&x);printf("k=%d,a=%f,x=%f\n",k,a,x);;10015.811.89234<CR>100<CR>15.811.89234<CR>100<CR>15.81<CR>1.89234<CR>習(xí)題3.16以下程序多處有錯(cuò)誤.若指定必須按下面的形式輸入數(shù)據(jù),并且必須按下面指定的形式輸出數(shù)據(jù),請對該程序做相應(yīng)的修改.main{doublea,b,c,s,v;printf(inputa,b,c:\n);scanf("%d%d%d",a,b,c);s=a*b;v=a*b*c;printf("%d%d%d",a,b,c);printf("s=%f\n",s,"v=%d\n",v);}當(dāng)程序執(zhí)行時(shí),屏幕的顯示和要求輸入形式如下:第4章選擇結(jié)構(gòu)4.1關(guān)系運(yùn)算和邏輯運(yùn)算4.2if語句和用if語句構(gòu)成的選擇結(jié)構(gòu)4.3條件表達(dá)式構(gòu)成的選擇結(jié)構(gòu)4.4switch語句以及用switch和break語句構(gòu)成的選擇結(jié)構(gòu)4.5語句標(biāo)號和goto語句4.1關(guān)系運(yùn)算和邏輯運(yùn)算4.1.1C語言的邏輯值關(guān)系表達(dá)式和邏輯表達(dá)式的運(yùn)算結(jié)果是一個(gè)邏輯值。邏輯值真假非004.1關(guān)系運(yùn)算和邏輯運(yùn)算4.1.2關(guān)系運(yùn)算符和關(guān)系表達(dá)式1.關(guān)系運(yùn)算:是對兩個(gè)量進(jìn)行“比較運(yùn)算”。2.關(guān)系運(yùn)算符:<<=>>===!=高低3.結(jié)合性:自左向右(左結(jié)合)4.和其他運(yùn)算符進(jìn)行混合運(yùn)算時(shí),其運(yùn)算符之間的優(yōu)先級為:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、賦值運(yùn)算符、逗號運(yùn)算符低高關(guān)系表達(dá)式:由關(guān)系運(yùn)算符組成的表達(dá)式,稱為關(guān)系表達(dá)式。關(guān)系運(yùn)算符兩邊的運(yùn)算對象可以是C語言中任意合法的表達(dá)式。例如:a>=b(a=3)>(b=4)a>c==c例如:a=10;b=6;c=15;真假假關(guān)系運(yùn)算的值為“邏輯值”真假101004.1關(guān)系運(yùn)算和邏輯運(yùn)算4.1.3邏輯運(yùn)算符和邏輯表達(dá)式1.邏輯運(yùn)算符:&&(邏輯與)||(邏輯或)!(邏輯非)雙目單目(在運(yùn)算對象的左邊)3.結(jié)合性:自左向右(左結(jié)合)4.它們的優(yōu)先級由高到低為:!(邏輯非)、&&(邏輯與)、||(邏輯或)。5.和其他運(yùn)算符進(jìn)行混合運(yùn)算時(shí),其運(yùn)算符之間的優(yōu)先級為:!(邏輯非)、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、&&(邏輯與)、||(邏輯或)、賦值運(yùn)算符、逗號運(yùn)算符高低邏輯表達(dá)式:由邏輯運(yùn)算符組成的表達(dá)式,稱為邏輯表達(dá)式。邏輯運(yùn)算的運(yùn)算對象可以是C語言中任意合法的表達(dá)式。例如:(a>b)&&(x>y)a!=b||b!=0!a!=b例如:a=10;b=16;x=5;y=8;011其邏輯運(yùn)算規(guī)則見書中表所示。思考:5>3&&2||!8<4-2的結(jié)果為?4.1關(guān)系運(yùn)算和邏輯運(yùn)算4.1.3邏輯運(yùn)算符和邏輯表達(dá)式注意在C語言中,x的值必須要在0和10之間,應(yīng)如何表示?0<=x<=10錯(cuò)誤的表示方式比如:x=20;上面的表達(dá)式也滿足條件。正確的表示方式為:x>=0&&x<=10或0<=x&&x<=106.C語言中,由&&或||構(gòu)成的邏輯表達(dá)式,在特定的情況下會產(chǎn)生“短路”現(xiàn)象。例如:a++&&b++若:a=0;b=0;若:a=1;b=1;例如:a++||b++若:a=1;b=1;若:a=0;b=0;0110ab10a2b2ab21a1b14.2if語句和用if語句構(gòu)成的選擇結(jié)構(gòu)4.2.1if語句C語言的if語言有兩種形式:if(表達(dá)式)語句if(表達(dá)式)語句1else

語句2單分支if語句不含else子句雙分支if語句含else子句關(guān)鍵字關(guān)鍵字(b)圖表達(dá)式語句1語句2滿足不滿足(a)圖表達(dá)式語句滿足不滿足例如:if(a<b){t=a;a=b;b=t;}例如:if(a!=0)printf(“a!=0\n”);elseprintf(“a==0\n”);4.2if語句和用if語句構(gòu)成的選擇結(jié)構(gòu)4.2.1if語句例4.1輸入兩個(gè)數(shù),分別放入x和y中,若兩數(shù)不相等,則輸出其中的最大數(shù);若兩數(shù)相等,則輸出字符串x==y和x的值。程序分析:輸入兩個(gè)整數(shù)分別賦給變量x和y。比較兩個(gè)數(shù)不相等相等x大于y(x>y)x小于y(x<y)x等于y(x==y)輸出x輸出y輸出x==y和x開始輸入x、y結(jié)束x>yx<yx==y滿足不滿足滿足滿足不滿足不滿足#include<stdio.h>main(){intx,y;printf("Enterx&y:\n");scanf("%d%d",&x,&y);if(x>y)printf("x=%d\n",x);if(x<y)printf("y=%d\n",y);if(x==y)printf("x==y%d\n",x);}printf("x,y:%d%d\n",x,y);輸出x輸出y輸出x==y和x4.2if語句和用if語句構(gòu)成的選擇結(jié)構(gòu)4.2.1if語句例4.2輸入三個(gè)整數(shù),分別放在變量a、b、c中,然后把輸入數(shù)據(jù)重新按由小到大的順序放在變量a、b、c中,最后輸出a、b、c中的值。程序分析:輸入三個(gè)整數(shù)分別放在變量a、b、c中。把三個(gè)整數(shù)由小到大進(jìn)行排序。

a<b<c③

輸出a、b、c。開始輸入a、b、c結(jié)束輸出a、b、c排序#include<stdio.h>main(){inta,b,c;

printf("inputa,b,c:");scanf("%d%d%d",&a,&b,&c);printf(“a=%d,b=%d,c=%d\n”,a,b,c);/*輸出原始數(shù)據(jù)*/

排序過程;

printf("%d,%d,%d\n",a,b,c);}abc302010a>ba>cb>c交換兩個(gè)變量中的值交換兩個(gè)變量中的值交換兩個(gè)變量中的值302020102030if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}#include<stdio.h>main(){inta,b,c,t;printf("inputa,b,c:");scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%d,%d,%d\n",a,b,c);}inputa,b,c:302010<CR>a=30,b=20,c=1010,20,304.2if語句和用if語句構(gòu)成的選擇結(jié)構(gòu)4.2.1if語句例4.3輸入兩個(gè)數(shù),分別賦給x和y,輸出其中的大數(shù)。程序分析:1.輸入兩個(gè)數(shù)分別賦給變量x和y。2.輸出其中的最大數(shù):兩數(shù)進(jìn)行比較判斷。如果x>y,則輸出x;

否則,輸出y。開始輸入x、y結(jié)束x>y輸出x輸出y不滿足滿足#include<stdio.h>main(){intx,y;printf("Enterx&y:");scanf("%d%d",&x,&y);printf("x,y:%d%d\n",x,y);if(x>y) printf("max=x=%d\n",x);else printf("max=y=%d\n",y);printf("**end**\n");}Enterx&y:53<CR>x,y:53max=x=5**end**4.2if語句和用if語句構(gòu)成的選擇結(jié)構(gòu)4.2.1if語句例4.4輸入一個(gè)數(shù),判別它是否能被3整除。若能被3整除,打印YES;不能被3整除,打印NO。程序分析:1.輸入一個(gè)數(shù)賦給一個(gè)變量,比如n。2.判斷它是否能被3整除??梢?,則輸出YES;

否則,輸出NO。n%3==0(若能整除,則余數(shù)肯定為0)開始輸入n結(jié)束n%3==0輸出YES輸出yNO不滿足滿足#include<stdio.h>main(){intn;printf("inputn:");scanf("%d",&n);if(n%3==0)/*判斷n能否被3整除*/ printf("YES\n");else printf("NO\n");}inputn:9<CR>YESinputn:5<CR>NO4.2if語句和用if語句構(gòu)成的選擇結(jié)構(gòu)4.2.1if語句注意if后面圓括號中的表達(dá)式,可以是任意合法的C語言表達(dá)式(如:邏輯表達(dá)式、關(guān)系表達(dá)式、算術(shù)表達(dá)式、賦值表達(dá)式等),也可以是任意類型的數(shù)據(jù)(如:整型、實(shí)型、字符型、指針型等)。無論是否有else子句,if子句中如果只有一條語句,則此語句后的分號不能省略。如:if(x!=0)printf(“%f”,x);elseprintf(“%f”,y);此處的分號不能省略此處的分號也不能省略4.2if語句和用if語句構(gòu)成的選擇結(jié)構(gòu)4.2.2嵌套的if語句第一種嵌套形式:if(表達(dá)式1)if(表達(dá)式2)語句1else語句2else

語句3圖1表達(dá)式1語句3不滿足表達(dá)式2語句1語句2滿足滿足不滿足4.2if語句和用if語句構(gòu)成的選擇結(jié)構(gòu)4.2.2嵌套的if語句第二種嵌套形式:if(表達(dá)式1){if(表達(dá)式2)語句1}else

語句2圖2表達(dá)式1語句2不滿足滿足表達(dá)式2語句1滿足不滿足注意在if子句中的一對花括號不可缺少。if(表達(dá)式1)if(表達(dá)式2)語句1else

語句2

應(yīng)當(dāng)注意if與else的配對關(guān)系。else總是與它

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論