版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章程序設(shè)計(jì)和C語言學(xué)習(xí)目標(biāo)本章主要介紹C語言程序設(shè)計(jì)的入門知識(shí),如算法、常量和變量、數(shù)據(jù)類型、各類表達(dá)式。這些知識(shí)點(diǎn)是后續(xù)章節(jié)中進(jìn)行程序設(shè)計(jì)的必備知識(shí)。第1章程序設(shè)計(jì)和C語言1.1C語言程序結(jié)構(gòu)和標(biāo)識(shí)符1.2算法1.3標(biāo)識(shí)符、常量和變量1.4數(shù)據(jù)類型1.5算術(shù)表達(dá)式1.6賦值運(yùn)算符1.7自加、自減運(yùn)算符和逗號(hào)運(yùn)算符1.1C語言程序結(jié)構(gòu)和標(biāo)識(shí)符1.1.1C語言程序和程序設(shè)計(jì)概述1.1.2最簡(jiǎn)單的C語言程序舉例1.1.3C語言程序的結(jié)構(gòu)1.1.4運(yùn)行C程序的步驟與方法
1.1.1C語言程序和程序設(shè)計(jì)概述計(jì)算機(jī)是一種具有內(nèi)部存儲(chǔ)能力、由程序自動(dòng)控制的電子設(shè)備。人們把這種可以連續(xù)執(zhí)行的一條條指令的集合稱為“程序”。1.1.1C語言程序和程序設(shè)計(jì)概述由高級(jí)語言編寫的程序稱為“源程序”,把由二進(jìn)制代碼表示的程序稱為“目標(biāo)程序”。為了把源程序轉(zhuǎn)換成機(jī)器能接受的目標(biāo)程序,軟件工作者編制了一系列軟件,通過這些軟件可以把用戶按規(guī)定語法寫出的語句一一翻譯成二進(jìn)制的機(jī)器指令。這種具有翻譯功能的軟件稱為“編譯程序”,每種高級(jí)語言都有與之對(duì)應(yīng)的編譯程序。1.1.1C語言程序和程序設(shè)計(jì)概述由C語言構(gòu)成的指令序列稱為C源程序;按C語言的語法編寫C程序的過程,稱為C語言的代碼編寫。1.1.1C語言程序和程序設(shè)計(jì)概述C源程序經(jīng)過C編譯程序編譯之后生成一個(gè)后綴為.obj的二進(jìn)制文件(稱為目標(biāo)文件)然后由稱為“連接程序”(Link)的軟件,把此.obj文件與C語言提供的各種庫(kù)函數(shù)連接起來生成一個(gè)后綴為.exe的可執(zhí)行文件。在操作系統(tǒng)環(huán)境下,只需點(diǎn)擊或輸入此文件的名字(而不必輸入后綴.exe),該可執(zhí)行文件就可運(yùn)行。1.1.1C語言程序和程序設(shè)計(jì)概述簡(jiǎn)單的程序設(shè)計(jì)一般包含以下幾個(gè)部分。1.確定數(shù)據(jù)結(jié)構(gòu)。根據(jù)任務(wù)書提出的要求、指定的輸入數(shù)據(jù)和輸出結(jié)果,確定存放數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。2.確定算法。針對(duì)存放數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)來確定解決問題、完成任務(wù)的步驟。有關(guān)算法的概念將在1.2節(jié)中介紹。1.1.1C語言程序和程序設(shè)計(jì)概述3.編碼。根據(jù)確定的數(shù)據(jù)結(jié)構(gòu)和算法,使用選定的計(jì)算機(jī)語言編寫程序代碼,輸入到計(jì)算機(jī)并保存在磁盤上,簡(jiǎn)稱編程。4.在計(jì)算機(jī)上調(diào)試程序。消除由于疏忽而引起的語法錯(cuò)誤或邏輯錯(cuò)誤;用各種可能的輸入數(shù)據(jù)對(duì)程序進(jìn)行測(cè)試,使之對(duì)各種合理的數(shù)據(jù)都能得到正確的結(jié)果,對(duì)不合理的數(shù)據(jù)能進(jìn)行適當(dāng)?shù)奶幚怼?.整理并寫出文檔資料。1.1.1C語言程序和程序設(shè)計(jì)概述例1.1以下敘述中正確的是(2009年9月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第11題)。A)程序設(shè)計(jì)的任務(wù)就是編寫程序代碼并上機(jī)調(diào)試B)程序設(shè)計(jì)的任務(wù)就是確定所用數(shù)據(jù)結(jié)構(gòu)C)程序設(shè)計(jì)的任務(wù)就是確定所用算法D)以上三種說法都不完整1.1.1C語言程序和程序設(shè)計(jì)概述例1.2計(jì)算機(jī)高級(jí)語言程序的運(yùn)行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述正確的是(2011年3月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第11題)。A)C語言程序僅可以編譯執(zhí)行B)C語言程序僅可以解釋執(zhí)行C)C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D)以上說法都不對(duì)1.1.1C語言程序和程序設(shè)計(jì)概述例1.3以下敘述中錯(cuò)誤的是(2011年3月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第12題)。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文件1.1.2最簡(jiǎn)單的C語言程序舉例例1.4要求在屏幕上輸出以下一行信息。
Welcometoourschool.解題思路:
在主函數(shù)中用printf函數(shù)原樣輸出以上文字。1.1.2最簡(jiǎn)單的C語言程序舉例函數(shù)的名字,表示主函數(shù)C程序必須有一個(gè)
main函數(shù)#include<stdio.h>intmain(){
printf(”Welcometoourschool.\n”);return0;}1.1.2最簡(jiǎn)單的C語言程序舉例#include<stdio.h>intmain(){
printf(”Welcometoourschool.\n”);return0;}
主函數(shù)類型1.1.2最簡(jiǎn)單的C語言程序舉例#include<stdio.h>intmain(){
printf(”Welcometoourschool.\n”);return0;}
函數(shù)體1.1.2最簡(jiǎn)單的C語言程序舉例輸出函數(shù)輸出語句#include<stdio.h>intmain(){
printf(”Welcometoourschool.\n”);return0;}
1.1.2最簡(jiǎn)單的C語言程序舉例#include<stdio.h>intmain(){
printf(”Welcometoourschool.\n”);return0;}
輸出語句1.1.2最簡(jiǎn)單的C語言程序舉例#include<stdio.h>intmain(){
printf(”Welcometoourschool.\n”);return0;}
當(dāng)main函數(shù)執(zhí)行結(jié)束前將整數(shù)0作為函數(shù)值1.1.2最簡(jiǎn)單的C語言程序舉例#include<stdio.h>intmain(){
printf(”Welcometoourschool.\n”);return0;}
用到函數(shù)庫(kù)中的輸入輸出函數(shù)時(shí)表示語句結(jié)束1.1.2最簡(jiǎn)單的C語言程序舉例C語言允許用兩種注釋方式://:?jiǎn)涡凶⑨尶蓡为?dú)占一行可出現(xiàn)在一行中其他內(nèi)容的右側(cè)/*……*/:塊式注釋可包含多行例1.5求兩個(gè)整數(shù)之和。解題思路:設(shè)置3個(gè)變量a和b用來存放兩個(gè)整數(shù)sum用來存放和數(shù)用賦值運(yùn)算符“=”把結(jié)果傳送給sum#include<stdio.h>intmain(){
int
a,b,sum;a=123;b=456;sum=a+b;
printf(”sumis%d\n”,sum);return0;}定義整型變量a,b,sum對(duì)變量a,b賦值將a與b的和賦給sum#include<stdio.h>intmain(){
int
a,b,sum;a=123;b=456;sum=a+b;
printf(”sumis%d\n”,sum);return0;}用sum的值替代希望輸出的字符例1.6從鍵盤輸入兩個(gè)整數(shù),并顯示這兩個(gè)整數(shù)之和。解題思路:包括主函數(shù)、被調(diào)用函數(shù)ADDxy
定義函數(shù)ADDxy
輸入兩個(gè)整數(shù)調(diào)用函數(shù)ADDxy將調(diào)用結(jié)果返回值賦給變量z
輸出兩個(gè)整數(shù)之和#include<stdio.h>int
ADDxy(int
a,intb) 定義函數(shù)ADDxy
{
intc;c=a+b;returnc; 返回c的值,return是關(guān)鍵字}intmain() 主函數(shù){
int
x,y,z; 聲明部分,定義變量
scanf(“%d%d”,&x,&y);z=ADDxy(x,y);調(diào)用ADDxy函數(shù),將得到返回值賦給變量z
printf(“sum=%d\n”,z); 輸出兩個(gè)整數(shù)之和
return0;}1.1.3C語言程序的結(jié)構(gòu)C語言程序的結(jié)構(gòu)特點(diǎn):1.一個(gè)程序由一個(gè)或多個(gè)源程序文件組成小程序往往只包括一個(gè)源程序文件例1.4,例1.5只有一個(gè)函數(shù)例1.6有兩個(gè)函數(shù)只包括一個(gè)源程序文件1.1.3C語言程序的結(jié)構(gòu)C語言程序的結(jié)構(gòu)特點(diǎn):一個(gè)源程序文件中可以包括三個(gè)部分:預(yù)處理指令全局聲明函數(shù)定義#include<stdio.h>等在函數(shù)之外進(jìn)行的數(shù)據(jù)聲明每個(gè)函數(shù)用來實(shí)現(xiàn)一定的功能1.1.3C語言程序的結(jié)構(gòu)C語言程序的結(jié)構(gòu)特點(diǎn):2.函數(shù)是C程序的主要組成部分一個(gè)C程序是由一個(gè)或多個(gè)函數(shù)組成的必須包含一個(gè)main函數(shù)(只能有一個(gè))每個(gè)函數(shù)都用來實(shí)現(xiàn)一個(gè)或幾個(gè)特定功能被調(diào)用的函數(shù)可以是庫(kù)函數(shù),也可以是自己編制設(shè)計(jì)的函數(shù)1.1.3C語言程序的結(jié)構(gòu)C語言程序的結(jié)構(gòu)特點(diǎn):3.一個(gè)函數(shù)包括兩個(gè)部分:函數(shù)首部intmax(intx,
inty)函數(shù)類型函數(shù)名參數(shù)類型參數(shù)名函數(shù)的第1行1.1.3C語言程序的結(jié)構(gòu)C語言程序的結(jié)構(gòu)特點(diǎn):3.一個(gè)函數(shù)包括兩個(gè)部分:函數(shù)首部intmax(intx,
inty)若函數(shù)無參,在括弧中寫void或空括弧intmain(void)或
intmain()1.1.3C語言程序的結(jié)構(gòu)C語言程序的結(jié)構(gòu)特點(diǎn):3.一個(gè)函數(shù)包括兩個(gè)部分:函數(shù)體聲明部分定義在本函數(shù)中所用到的變量對(duì)本函數(shù)所調(diào)用函數(shù)進(jìn)行聲明執(zhí)行部分:由若干個(gè)語句組成,指定在函數(shù)中所進(jìn)行的操作可以沒有聲明部分1.1.3C語言程序的結(jié)構(gòu)C語言程序的結(jié)構(gòu)特點(diǎn):3.一個(gè)函數(shù)包括兩個(gè)部分:函數(shù)體voiddump(){}可以是空函數(shù)1.1.3C語言程序的結(jié)構(gòu)C語言程序的結(jié)構(gòu)特點(diǎn):4.程序總是從main函數(shù)開始執(zhí)行5.C程序?qū)τ?jì)算機(jī)的操作由C語句完成C程序書寫格式是比較自由的一行內(nèi)可以寫幾個(gè)語句一個(gè)語句可以分寫在多行上為清晰起見,習(xí)慣上每行只寫一個(gè)語句1.1.3C語言程序的結(jié)構(gòu)C語言程序的結(jié)構(gòu)特點(diǎn):4.程序總是從main函數(shù)開始執(zhí)行5.C程序?qū)τ?jì)算機(jī)的操作由C語句完成6.數(shù)據(jù)聲明和語句最后必須有分號(hào)7.C語言本身不提供輸入輸出語句8.程序應(yīng)當(dāng)包含注釋,增加可讀性1.1.4運(yùn)行C程序的步驟與方法VisualC++6.0既可以對(duì)C++程序進(jìn)行編譯,也可以對(duì)C程序進(jìn)行編譯。VisualC++6.0是在Windows環(huán)境中運(yùn)行的,它有英文版和中文版,二者使用方法相同,只是中文版在界面上用中文代替了英文。本書介紹的是VisualC++6.0中文版,在VisualC++6.0中運(yùn)行C程序一般要經(jīng)過以下幾個(gè)步驟:1.1.4運(yùn)行C程序的步驟與方法1.雙擊桌面上VisualC++6.0圖標(biāo),就能進(jìn)入VisualC++6.0集成環(huán)境,屏幕上出現(xiàn)VisualC++6.0的主窗口,見圖1.1。圖1.1VisualC++6.0主窗口1.1.4運(yùn)行C程序的步驟與方法2.在VisualC++6.0主窗口的主菜單欄中選擇“文件”,然后選擇“新建”,見圖1.2,圖1.2新建源程序圖1.3“新建”對(duì)話框1.1.4運(yùn)行C程序的步驟與方法3.單擊“確定”按鈕后,回到VisualC++主窗口,可以看到光標(biāo)在程序編輯窗口閃爍,表示程序編輯窗口已激活,可以輸入和編輯源程序了。在此輸入例1.4程序,見圖1.4。圖1.4編輯源程序1.1.4運(yùn)行C程序的步驟與方法4.如果經(jīng)檢查無誤,在主菜單欄中選擇“文件”,并在其下拉菜單中選擇“保存”,見圖1.5。圖1.5保存源程序1.1.4運(yùn)行C程序的步驟與方法5.若需要對(duì)該源文件進(jìn)行編譯,單擊主菜單欄中的“組建”,在其下拉菜單中選擇“編譯[c1-1.c]”,見圖1.6。圖1.6編譯源程序1.1.4運(yùn)行C程序的步驟與方法6.單擊編譯命令后,屏幕上出現(xiàn)一個(gè)對(duì)話框,內(nèi)容是“此編譯命令要求一個(gè)有效的項(xiàng)目工作區(qū),你是否同意建立一個(gè)默認(rèn)的項(xiàng)目工作區(qū)”,見圖1.7。圖1.7“創(chuàng)建工作區(qū)”對(duì)話框1.1.4運(yùn)行C程序的步驟與方法7.在得到后綴為.obj的目標(biāo)程序后,還不能直接運(yùn)行,還要把程序和系統(tǒng)提供的資源(如函數(shù)庫(kù))建立連接,此時(shí)應(yīng)選擇“組建[c1-1.exe]”,見圖1.8。表示要求連接并建立一個(gè)可執(zhí)行文件c1-1.exe,該文件也存放在D:\cwork\Debug文件夾下。圖1.8組建程序1.1.4運(yùn)行C程序的步驟與方法8.在得到可執(zhí)行文件c1-1.exe后,就可以直接執(zhí)行c1-1.exe了。選擇“執(zhí)行[c1-1.exe]”,見圖1.9。也可以用Ctrl+F5一次完成程序的編譯、連接與執(zhí)行。程序執(zhí)行后,屏幕切換到輸出結(jié)果的窗口,顯示出運(yùn)行結(jié)果,見圖1.10。圖1.9執(zhí)行程序圖1.10程序運(yùn)行結(jié)果1.1.4運(yùn)行C程序的步驟與方法9.如果已完成對(duì)一個(gè)程序的操作,不再對(duì)它進(jìn)行其他處理,應(yīng)當(dāng)選擇“文件”,然后選擇“關(guān)閉工作區(qū)”,以結(jié)束對(duì)該程序的操作。1.2算法1.2.1簡(jiǎn)單算法舉例1.2.2用流程圖表示算法1.2.1簡(jiǎn)單算法舉例例2.1求1×2×3×4×5可以用最原始的方法進(jìn)行:步驟1:先求1*2,得到結(jié)果2。步驟2:將步驟1得到的乘積2再乘以3,得到結(jié)果6。步驟3:將6再乘以4,得24。步驟4:將24再乘以5,得120。這就是最后的結(jié)果。太繁瑣1.2.1簡(jiǎn)單算法舉例改進(jìn)的算法:設(shè)變量p為被乘數(shù)變量i為乘數(shù)用循環(huán)算法求結(jié)果1.2.1簡(jiǎn)單算法舉例例1.8先后輸入若干個(gè)整數(shù),要求打印出其中最大的數(shù),當(dāng)輸入的數(shù)小于0時(shí)結(jié)束。我們可以設(shè)置一個(gè)變量max,讓max始終存放當(dāng)前比較過的數(shù)中的最大值。然后輸入數(shù),與max比較,如果第二個(gè)數(shù)大于max,則用第二個(gè)數(shù)代替max中原來的值,如此先后輸入和比較,每次比較后都將較大值放在max中,直到輸入的數(shù)小于0時(shí)結(jié)束。最后max中的值就是所有輸入數(shù)中的最大值。例1.9判定鍵盤輸入的年份是否為閏年,并將結(jié)果輸出。閏年的條件:
(1)能被4整除,但不能被100整除的年份都是閏年,如2008、2012、2048年
(2)能被400整除的年份是閏年,如2000年不符合這兩個(gè)條件的年份不是閏年例如2009、2100年設(shè)year為被檢測(cè)的年份。算法表示如下:S1:2000yearS2:若year不能被4整除,則輸出year的值和“不是閏年”。然后轉(zhuǎn)到S6S3:若year能被4整除,不能被100整除,則輸出year的值和“是閏年”。然后轉(zhuǎn)到S6S4:若year能被400整除,則輸出year的值和“是閏年”,然后轉(zhuǎn)到S6S5:其他情況輸出year的值和“不是閏年”S6:year+1yearS7:當(dāng)year≤2500時(shí),轉(zhuǎn)S2,否則停止非閏年year被4整除,但不能被100整除閏年year被100整除,又能被400整除閏年其他非閏年year不能被4整除逐漸縮小判斷的范圍例1.10給出一個(gè)大于或等于3的正整數(shù),判斷它是不是素?cái)?shù)。。所謂素?cái)?shù)(prime),是指除了1和該數(shù)本身之外,不能被其他任何整數(shù)整除的數(shù)例如,13是素?cái)?shù),因?yàn)樗荒鼙?,3,4,…,12整除。判斷一個(gè)數(shù)n(n≥3)是否素?cái)?shù):將n作為被除數(shù),將2到(n-1)各個(gè)整數(shù)先后作為除數(shù),如果都不能被整除,則n為素?cái)?shù)S1:輸入n的值S2:i=2(i作為除數(shù))S3:n被i除,得余數(shù)rS4:如果r=0,表示n能被i整除,則輸出n“不是素?cái)?shù)”,算法結(jié)束;否則執(zhí)行S5S5:i+1iS6:如果i≤n-1,返回S3;否則輸出n“是素?cái)?shù)”,然后結(jié)束??筛臑閚/2一個(gè)有效算法應(yīng)該具有以下特點(diǎn):(1)
有窮性。一個(gè)算法應(yīng)包含有限的操作步驟,而不能是無限的。(2)
確定性。算法中的每一個(gè)步驟都應(yīng)當(dāng)是確定的,而不應(yīng)當(dāng)是含糊的、模棱兩可的。一個(gè)有效算法應(yīng)該具有以下特點(diǎn):(3)
有零個(gè)或多個(gè)輸入。所謂輸入是指在執(zhí)行算法時(shí)需要從外界取得必要的信息。(4)
有一個(gè)或多個(gè)輸出。算法的目的是為了求解,“解”就是輸出。沒有輸出的算法是沒有意義的。(5)
有效性。算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。1.2.2用流程圖表示算法
1.2.1節(jié)介紹的算法是用自然語言表示的用自然語言表示通俗易懂,但文字冗長(zhǎng),容易出現(xiàn)歧義性用自然語言描述包含分支和循環(huán)的算法,不很方便除了很簡(jiǎn)單的問題外,一般不用自然語言流程圖是描述算法的很好的工具,一般的流程圖由圖1.11中所示的幾種基本圖形組成。起止框輸入輸出框處理框判斷框流程線連接點(diǎn)注釋框圖1.11流程圖符號(hào)下面將結(jié)合結(jié)構(gòu)化程序設(shè)計(jì)中的三種基本結(jié)構(gòu)來介紹這兩種流程圖的基本結(jié)構(gòu)。順序結(jié)構(gòu)。在后面中將要介紹的如賦值語句、輸入、輸出語句都可構(gòu)成順序結(jié)構(gòu)。當(dāng)執(zhí)行由這些語句構(gòu)成的程序時(shí),將按這些語句在程序中的先后順序逐條執(zhí)行,沒有分支,沒有轉(zhuǎn)移。順序結(jié)構(gòu)可用圖1.12所示的流程圖表示,其中(a)是一般的流程圖,(b)是N-S流程圖。圖1.12順序結(jié)構(gòu)選擇結(jié)構(gòu)。在本書第3章中將要介紹的if語句、switch語句都可構(gòu)成選擇結(jié)構(gòu)。當(dāng)執(zhí)行到這些語句時(shí),將根據(jù)不同的條件去執(zhí)行不同分支中的語句。選擇結(jié)構(gòu)可由圖1.13所示的流程圖表示,其中(a)是一般的流程圖,(b)是N-S流程圖。圖1.13選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)。在本書第4章中將要介紹不同形式的循環(huán)結(jié)構(gòu)。它們將根據(jù)各自的條件,使同一組語句重復(fù)執(zhí)行多次或一次也不執(zhí)行。循環(huán)結(jié)構(gòu)的流程圖如圖1.14和圖1.15所示,每個(gè)圖中(a)是一般的流程圖,(b)是N-S流程圖。圖1.14當(dāng)型循環(huán)結(jié)構(gòu)圖1.15直到型循環(huán)結(jié)構(gòu)以上三種基本結(jié)構(gòu),有以下共同特點(diǎn):(1)只有一個(gè)入口(2)只有一個(gè)出口一個(gè)判斷框有兩個(gè)出口一個(gè)選擇結(jié)構(gòu)只有一個(gè)出口(3)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到。也就是說,對(duì)每一個(gè)框來說,都應(yīng)當(dāng)有一條從入口到出口的路徑通過它(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”例1.11將例1.7的算法分別用一般流程圖和N-S流程圖表示,如圖1.16所示。圖1.16.例1.7算法流程圖例1.12將例1.8的算法分別用一般流程圖和N-S流程圖表示,如圖1.17所示。圖1.17例1.8算法流程圖例1.13將例1.9中判定2000—2500年閏年的算法分別用一般流程圖和N-S流程圖表示,如圖1.18所示。圖1.18例1.9算法流程圖例1.14將例1.10中判斷素?cái)?shù)的算法用一般流程圖表示,如圖1.19(a)所示??梢钥闯?,圖1.19(a)不是由3種基本結(jié)構(gòu)組成的。圖中間的循環(huán)部分有兩個(gè)出口(一個(gè)從第1個(gè)判斷框右面出口,另一個(gè)在第2個(gè)判斷框下邊出口),不符合基本結(jié)構(gòu)的特點(diǎn)。由于不能分解為3種基本結(jié)構(gòu),就無法直接用N-S流程圖的3種基本結(jié)構(gòu)的符號(hào)來表示。因此,我們要對(duì)圖1.19(a)做出必要的修改。將第1個(gè)判斷框(“r是否為0”)的兩個(gè)出口合并在一點(diǎn),以解決兩個(gè)出口的問題。當(dāng)r是0時(shí)意味著n為非素?cái)?shù),但此時(shí)不馬上輸出n“不是素?cái)?shù)”的信息,而使標(biāo)志變量flag的值由0改為1(flag的初始值為0)。如果r不是0,則保持flag值為0,見圖1.19(b)。圖1.19(b)已變成由3種基本結(jié)構(gòu)組成的結(jié)構(gòu)圖??梢愿挠肗-S圖表示此算法,見圖1.19(c)。圖1.19例1.10算法流程圖1.3標(biāo)識(shí)符、常量和變量1.3.1標(biāo)識(shí)符1.3.2常量1.3.3變量1.3.1標(biāo)識(shí)符在C語言中,有許多符號(hào)的命名,如變量名、函數(shù)名、數(shù)組名等,都必須遵守一定的規(guī)則,按此規(guī)則命名的符號(hào)稱為標(biāo)識(shí)符。1.3.1標(biāo)識(shí)符C語言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線3種字符組成,且第1個(gè)字符必須為字母或下劃線。下面列出的是合法的標(biāo)識(shí)符:area、_ini、a_array、s1234以下都是非法的標(biāo)識(shí)符:456P、cade-y、w.w、a&b1.3.1標(biāo)識(shí)符C語言的標(biāo)識(shí)符可以分為以下三類。1.關(guān)鍵字2.預(yù)定義標(biāo)識(shí)符3.用戶標(biāo)識(shí)符1.3.1標(biāo)識(shí)符例1.15以下選項(xiàng)中合法的標(biāo)識(shí)符是(2009年3月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第11題)。A)1_1B)1-1C)_11D)1__分析:C語言標(biāo)識(shí)符只能由字母、數(shù)字和下劃線3種字符組成,第1個(gè)字符必須為字母或下劃線,因此選項(xiàng)A、B、D均錯(cuò)誤,選C。1.3.1標(biāo)識(shí)符例1.16以下選項(xiàng)中,能用作用戶標(biāo)識(shí)符的是(2009年9月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第12題)。A)void B)8_8 C)_0_ D)unsigned分析:用戶標(biāo)識(shí)符不能使用關(guān)鍵字,選項(xiàng)A、D錯(cuò)誤。選C。1.3.2常量常量:在程序運(yùn)行過程中,其值不能被改變的量整型常量:如12、0、-3;實(shí)型常量十進(jìn)制小數(shù)形式:如0.34-56.790.0指數(shù)形式:如12.34e3(代表12.34103)字符常量:如‘a(chǎn)’、‘b’字符串常量:”Beijing”、”abc”符號(hào)常量:用#define指令,用一個(gè)符號(hào)名來代表一個(gè)常量。
1.3.2常量例1.17計(jì)算圓面積。#include“stdio.h”#definePI3.14159//注意行末沒有分號(hào)main(){doubler,s; r=5.0; s=PI*r*r;
printf(“s=%f\n”,s);}運(yùn)行結(jié)果:s=78.5397501.3.3變量變量:在程序運(yùn)行期間,變量的值是可以改變的變量必須先定義,后使用定義變量時(shí)指定該變量的名字和類型變量名和變量值是兩個(gè)不同的概念變量名實(shí)際上是以一個(gè)名字代表的一個(gè)存儲(chǔ)地址從變量中取值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)1.4數(shù)據(jù)類型1.4.1整型數(shù)據(jù)1.4.2浮點(diǎn)型數(shù)據(jù)1.4.3字符型數(shù)據(jù)C語言允許使用的類型見圖1.20。圖1.20C語言的數(shù)據(jù)類型1.4.1整型數(shù)據(jù)
整型數(shù)據(jù)可以分為整型常量和整型變量。1.整型常量可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制等形式表示:(1)十進(jìn)制整型常量:十進(jìn)制整型常量沒有前綴。以下各數(shù)是合法的十進(jìn)制整型常量:237、-568、65535、1627;以下各數(shù)不是合法的十進(jìn)制整型常量:023(不能有前導(dǎo)0)、23D(含有非十進(jìn)制數(shù)碼)。1.4.1整型數(shù)據(jù)(2)八進(jìn)制整型常量:八進(jìn)制整型常量必須以0開頭,即以0作為八進(jìn)制數(shù)的前綴。數(shù)碼取值為0~7。八進(jìn)制數(shù)通常是無符號(hào)數(shù)以下各數(shù)是合法的八進(jìn)制數(shù):015(十進(jìn)制為13)、0101(十進(jìn)制為65)、0177777(十進(jìn)制為65535);以下各數(shù)不是合法的八進(jìn)制數(shù):256(無前綴0)、03A2(包含了非八進(jìn)制數(shù)碼)、-0127(出現(xiàn)了負(fù)號(hào))。1.4.1整型數(shù)據(jù)(3)十六進(jìn)制整型常量:十六進(jìn)制整型常量的前綴為0X或0x。其數(shù)碼取值為0~9,A~F或a~f。以下各數(shù)是合法的十六進(jìn)制整型常量:0X2A(十進(jìn)制為42)、0XA0(十進(jìn)制為160)、0XFFFF(十進(jìn)制為65535);以下各數(shù)不是合法的十六進(jìn)制整型常量:5A(無前綴0X)、0X3H(含有非十六進(jìn)制數(shù)碼)。2整型數(shù)據(jù)在內(nèi)存中的存放形式計(jì)算機(jī)中,內(nèi)存儲(chǔ)器的最小存儲(chǔ)單位為“位(bit)”。由于只能存放0或1,因此稱為二進(jìn)制位。大多數(shù)計(jì)算機(jī)把8個(gè)二進(jìn)制位組成一個(gè)“字節(jié)(byte)”,并給每個(gè)字節(jié)分配一個(gè)地址。若干字節(jié)組成一個(gè)“字(word)”,用一個(gè)“字”來存放一條機(jī)器指令或一個(gè)數(shù)據(jù)。一個(gè)字含多少個(gè)字節(jié)隨機(jī)器的不同而不同。如果一臺(tái)計(jì)算機(jī)以兩個(gè)字節(jié)(16個(gè)二進(jìn)制位)來存放一條機(jī)器指令,則稱此計(jì)算機(jī)的字長(zhǎng)為16位;如果以四個(gè)字節(jié)(32個(gè)二進(jìn)制位)來存放一條機(jī)器指令,則稱此計(jì)算機(jī)的字長(zhǎng)為32位。對(duì)于一個(gè)有符號(hào)(signed)整數(shù),若是正整數(shù),最高位放置0;若是負(fù)整數(shù),最高位放置1。(1)正整數(shù)當(dāng)用兩個(gè)字節(jié)存放一個(gè)short類型正整數(shù)時(shí),例如正整數(shù)5,其在內(nèi)存中的二進(jìn)制碼為:0000000000000101對(duì)于正整數(shù)的這種存儲(chǔ)形式稱為用“原碼”形式存放。因此用兩個(gè)字節(jié)存放short類型的最大正整數(shù)是:0111111111111111它的值為32767。為簡(jiǎn)單起見,若一個(gè)字節(jié)能夠正確表示一個(gè)整數(shù)時(shí),本書則用一個(gè)字節(jié)表示。(2)負(fù)整數(shù)負(fù)整數(shù)在內(nèi)存中是以“補(bǔ)碼”形式存放的。正數(shù)補(bǔ)碼即原碼;負(fù)數(shù)的補(bǔ)碼是將其對(duì)應(yīng)原碼的各位(除符號(hào)位外)按位求反,然后加1。例如求10000101(十進(jìn)制數(shù)-5)的補(bǔ)碼,步驟如下:求原碼的反碼。例如10000101的反碼為11111010。11111010加1得11111011,這就是-5在內(nèi)存中的二進(jìn)制碼。若用兩個(gè)字節(jié)表示,即為:
1111111111111011把內(nèi)存中以補(bǔ)碼形式存放的二進(jìn)制碼轉(zhuǎn)化成十進(jìn)制的負(fù)整數(shù),步驟如下:先對(duì)除符號(hào)位之外的各位取反。例如有補(bǔ)碼11111011,取反后為10000100。將所得二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。例如10000100的十進(jìn)制數(shù)為-4。對(duì)所求得的數(shù)再減1,即為-5。3整型變量變量定義的一般形式為:類型說明符變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符,...;例如:
int
a,b,c;(a,b,c為整型變量)C語言規(guī)定,可以在定義變量的同時(shí)給變量賦初值,也稱變量初始化。例如:main(){inti=1,k=2;/*定義i、k為整型變量,它們的初值分別為1和2*/}應(yīng)注意,在定義中不允許連續(xù)賦值,如a=b=c=5是不合法的。不同的編譯系統(tǒng)為int變量開辟的內(nèi)存單元大小不同。表1-1列出了在VisualC++6.0中定義的整型數(shù)所占用的字節(jié)數(shù)和數(shù)值范圍。表中方括號(hào)內(nèi)的單詞可以省略。類型名稱占用的字節(jié)數(shù)數(shù)值范圍[signed]int4-2147483648~2147483647[signed]short[int]2-32768~32767[signed]long[int]4-2147483648~2147483647unsigned[int]40~4294967295unsignedshort[int]20~65535unsignedlong[int]40~4294967295表1-1VisualC++6.0中定義的整型數(shù)所占用的字節(jié)數(shù)和數(shù)值范圍1.4.2浮點(diǎn)型數(shù)據(jù)1實(shí)型常量又稱實(shí)數(shù)或浮點(diǎn)數(shù)。有兩種表示形式:①十進(jìn)制小數(shù)形式,由數(shù)字和小數(shù)點(diǎn)組成。如:123.456、0.345、-16.7、0.0等。即小數(shù)形式表示的實(shí)型常量必須要有小數(shù)點(diǎn)。②指數(shù)形式,在數(shù)學(xué)中,一個(gè)數(shù)可以用冪的形式來表示,如2.3026可以表示為0.23026×、2.3026×、23.026×等形式。在C語言中,則以“e”或“E”后跟一個(gè)整數(shù)來表示以10為底的冪數(shù)。2.3026可以表示為0.23026E1、2.3026e0、23.026e-1。C語言的語法規(guī)定,字母e或E之前必須要有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。如e3、.5e2.1、.e3等都是非法的指數(shù)形式。1.4.2浮點(diǎn)型數(shù)據(jù)例1.18以下選項(xiàng)中,能用作數(shù)據(jù)常量的是(2009年9月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第13題)。A)o115 B)0118 C)1.5e1.5 D)115L分析:實(shí)型常量如果用指數(shù)形式表示,C語言規(guī)定,字母e(或E)前后必須要有數(shù)字,且e(或E)后面的指數(shù)必須為整數(shù)。因此選項(xiàng)C不合法。八進(jìn)制整數(shù)常量以數(shù)字0開始,A是以字母o開始所以也錯(cuò)誤,而且八進(jìn)制數(shù)的有效數(shù)字為0~7,不含8,所以選項(xiàng)B錯(cuò)誤。選D,其中L表示長(zhǎng)整型。1.4.2浮點(diǎn)型數(shù)據(jù)2實(shí)型變量(1)實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式實(shí)型數(shù)據(jù)一般占4個(gè)字節(jié)(32位)內(nèi)存空間。按指數(shù)形式存儲(chǔ)。實(shí)數(shù)3.14159在內(nèi)存中的存放形式如下:+.3141591數(shù)符小數(shù)部分指數(shù)小數(shù)部分占的位(bit)數(shù)愈多,數(shù)的有效數(shù)字愈多,精度愈高。指數(shù)部分占的位數(shù)愈多,則能表示的數(shù)值范圍愈大。1.4.2浮點(diǎn)型數(shù)據(jù)(2)實(shí)型變量的分類實(shí)型變量分為:?jiǎn)尉龋╢loat型)、雙精度(double型)兩種。分別用類型名float和double進(jìn)行定義。單精度型變量定義的形式如下:floata,b,c;雙精度型變量定義的形式如下:doublex,y,z;在VisualC++6.0中單精度型占4個(gè)字節(jié)(32位)內(nèi)存空間,其數(shù)值范圍為~,只能提供5~6位有效數(shù)字。雙精度型占8個(gè)字節(jié)(64位)內(nèi)存空間,其數(shù)值范圍為~,可提供15~16位有效數(shù)字,具體精確到多少位與機(jī)器有關(guān)。1.4.3字符型數(shù)據(jù)1。字符常量。有兩種表示形式:(1)普通字符,用單引號(hào)括起來的一個(gè)字符,如:’a’、’E’、’?’、’#’。不能寫成’ab’或’123’。(2)轉(zhuǎn)義字符,C語言還允許用一種特殊形式的字符常量,就是以字符\開頭的字符序列。例如,’\n’代表一個(gè)“換行”符,’\t’代表輸出的位置跳到下一個(gè)tab位置(制表位置),一個(gè)tab位置為8列。表1-2列出了C語言中的轉(zhuǎn)義字符。字符形式功能字符形式功能\n回車換行\(zhòng)\一個(gè)反斜杠字符(\)\t將當(dāng)前位置移到下一個(gè)tab位置\’一個(gè)單引號(hào)(‘)\v將當(dāng)前位置移到下一個(gè)垂直制表對(duì)齊點(diǎn)\’”一個(gè)雙引號(hào)(“)\r回車符\ddd三位八進(jìn)制數(shù)代表的一個(gè)ASCII字符\f換頁(yè)符\xhh二位十六進(jìn)制數(shù)代表的一個(gè)ASCII字符\b將當(dāng)前位置后退一個(gè)字符\0空值,其ASCII碼值為0表1-2C語言中的轉(zhuǎn)義字符2.字符串常量。它是一對(duì)雙引號(hào)(””)括起來的字符序列。字符的個(gè)數(shù)稱為其長(zhǎng)度,簡(jiǎn)稱為字符串。
長(zhǎng)度為n的字符串,在計(jì)算機(jī)存儲(chǔ)器中占n+1個(gè)字節(jié),分別存放字符的編碼,最后一個(gè)字節(jié)存放是NULL字符(或叫空字符,編碼為0,在C語言中也用‘\0’來表示,也就是說任何一個(gè)字符串最后一個(gè)存儲(chǔ)字節(jié)都是‘\0’)。例如“hellow”在計(jì)算機(jī)中表示形式為:圖1.21字符串存儲(chǔ)形式例1.19以下選項(xiàng)中能表示合法常量的是(2010年9月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第15題)。
A)整數(shù):1,200 B)實(shí)數(shù):1.5E2.0 C)字符斜杠:’\’ D)字符串”\007”分析:整數(shù)常量表示形式中不能有千位分隔符,A錯(cuò)誤。實(shí)數(shù)常量的指數(shù)形式字母e(或E)后面的指數(shù)必須為整數(shù),B錯(cuò)誤。字符斜杠應(yīng)用轉(zhuǎn)義字符的形式表示’\\’,C錯(cuò)誤。選D。例1.20以下選項(xiàng)中關(guān)于C語言常量的敘述錯(cuò)誤的是(2011年9月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第13題)。A)所謂常量,是指在程序運(yùn)行過程中,其值不能被改變的量B)常量分為整型常量、實(shí)型常量、字符常量和字符串常量C)常量可分為數(shù)值型常量和非數(shù)值型常量D)經(jīng)常被使用的變量可定義成常量分析:所謂常量是指在程序運(yùn)行過程中,其值不能改變的量。在C語言中,有整型常量、實(shí)型常量、字符常量和字符串常量等類型。整型常量和實(shí)型常量又稱為數(shù)值型常量,它們有正值和負(fù)值的區(qū)分。所謂變量是指在程序運(yùn)行過程中其值可以改變的量。C語言規(guī)定,程序中所有變量都必須先定義后使用。變量和常量有明顯的區(qū)分,D錯(cuò)誤。3.字符變量字符變量用來存儲(chǔ)字符常量,即單個(gè)字符。字符變量的類型說明符是char。字符變量類型定義的格式和書寫規(guī)則都與整型變量相同。例如:
chara,b;例1.21有以下定義語句,編譯時(shí)會(huì)出現(xiàn)編譯錯(cuò)誤的是(2009年9月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第22題)。A)chara=’a’; B)chara=’\n’;C)chara=’aa’; D)chara=’\x2d’;分析:本題中a為一個(gè)字符型變量,只能為其賦值一個(gè)字符常量。選項(xiàng)C中a賦值了一個(gè)字符串常量,所以會(huì)編譯錯(cuò)誤。B、D選項(xiàng)為轉(zhuǎn)義字符,所以不會(huì)出現(xiàn)編譯錯(cuò)誤。4.字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法每個(gè)字符變量被分配一個(gè)字節(jié)的內(nèi)存空間,因此只能存放一個(gè)字符。字符值是以ASCII碼的形式存放在變量的內(nèi)存單元之中的。如x的十進(jìn)制ASCII碼是120,y的十進(jìn)制ASCII碼是121。對(duì)字符變量a,b賦予'x'和'y'值:a='x';b='y';實(shí)際上是在a,b兩個(gè)單元內(nèi)存放120和121的二進(jìn)制代碼:a:01111000b:011110015.可對(duì)字符量進(jìn)行的運(yùn)算在C程序中,字符量可參與任何整數(shù)運(yùn)算。例如:‘B’-‘A’≡66-65≡1 ‘a(chǎn)’+1≡97+1≡98≡‘b’此處符合≡表示等價(jià)的意思。在以上表達(dá)式中的66、65、97、98都是十進(jìn)制數(shù),它們分別是字母B、A、a、b的ASCII代碼值。因此很容易利用算術(shù)運(yùn)算把大寫字母轉(zhuǎn)換成小寫字母或把小寫字母轉(zhuǎn)換成大寫字母,例如:‘A’+32≡65+32≡97≡‘a(chǎn)’ ‘b’-32≡98-32≡66≡‘B’也可以通過算術(shù)運(yùn)算把數(shù)字字符轉(zhuǎn)換為整數(shù)值或把一位整數(shù)轉(zhuǎn)換成數(shù)字字符,例如:‘9’-‘0’≡57-48≡9 ‘3’-‘0’≡51-48≡3‘9’+’0’≡9+48≡57≡‘9’ 4+‘0’≡4+48≡52≡‘4’在上述表達(dá)式中,57、48、51、52分別是用十進(jìn)制數(shù)表示的字符9、0、3、4的ASCII代碼值。1.5算術(shù)表達(dá)式1.5.1基本的算術(shù)運(yùn)算符1.5.2算術(shù)運(yùn)算符的優(yōu)先級(jí)、結(jié)合性和算術(shù)表達(dá)式1.5.3強(qiáng)制類型轉(zhuǎn)換1.5.1基本的算術(shù)運(yùn)算符在C語言中,基本的算術(shù)運(yùn)算符是:+、-、*、/、%,分別為加、減、乘、除、求余運(yùn)算符。這些運(yùn)算符需要兩個(gè)運(yùn)算對(duì)象,稱為雙目運(yùn)算符。除求余運(yùn)算符%外,運(yùn)算對(duì)象可以是整型,也可以是實(shí)型。1.5.1基本的算術(shù)運(yùn)算符例1.22除法運(yùn)算符的運(yùn)用。main(){printf("%d,%d\n",20/7,-20/7);printf("%f,%f\n",20.0/7,-20.0/7);}運(yùn)行結(jié)果:2,-22.857143,-2.857143分析:本例中,20/7,-20/7的結(jié)果均為整型,小數(shù)全部舍去。而20.0/7和-20.0/7由于有實(shí)數(shù)參與運(yùn)算,因此結(jié)果也為實(shí)型。1.5.1基本的算術(shù)運(yùn)算符例1.23求余運(yùn)算符的運(yùn)用。main(){printf("%d\n",100%3);}運(yùn)行結(jié)果:1分析:求余運(yùn)算符要求參與運(yùn)算的量均為整型,求余運(yùn)算的結(jié)果等于兩數(shù)相除后的余數(shù)。例1.24若有語句doublex=17;inty;,當(dāng)執(zhí)行y=(int)(x/5)%2;之后y的值為___。(2009年9月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題填空題第7題)分析:本題考察了運(yùn)算符以及常量類型的強(qiáng)制轉(zhuǎn)換,先計(jì)算x/5,因?yàn)閤為double類型,所以得到的結(jié)果為3.4,強(qiáng)制類型轉(zhuǎn)換為int類型,結(jié)果為3.再做除以2取余的運(yùn)算,結(jié)果為1。1.5.2
算術(shù)運(yùn)算符的優(yōu)先級(jí)、結(jié)合性和算術(shù)表達(dá)式表達(dá)式是由常量、變量、函數(shù)和運(yùn)算符組合起來的式子。一個(gè)表達(dá)式有一個(gè)值及其類型,它們等于計(jì)算表達(dá)式所得結(jié)果的值和類型。表達(dá)式求值按運(yùn)算符的優(yōu)先級(jí)和結(jié)合性規(guī)定的順序進(jìn)行。單個(gè)的常量、變量、函數(shù)可以看作是表達(dá)式的特例。1.算術(shù)表達(dá)式用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子。以下是算術(shù)表達(dá)式的例子:a+b(a*2)/c(x+r)*8-(a+b)/7++Isin(x)+sin(y)(++i)-(j++)+(k--)2.運(yùn)算符的優(yōu)先級(jí)C語言中,運(yùn)算符的運(yùn)算優(yōu)先級(jí)共分為15級(jí)。1級(jí)最高,15級(jí)最低。在表達(dá)式中,優(yōu)先級(jí)較高的先于優(yōu)先級(jí)較低的進(jìn)行運(yùn)算。而在一個(gè)運(yùn)算量?jī)蓚?cè)的運(yùn)算符優(yōu)先級(jí)相同時(shí),則按運(yùn)算符的結(jié)合性所規(guī)定的結(jié)合方向處理。3.運(yùn)算符的結(jié)合性C語言中各運(yùn)算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)運(yùn)算符的結(jié)合性是自左至右,即先左后右。如有表達(dá)式x-y+z則y應(yīng)先與“-”號(hào)結(jié)合,執(zhí)行x-y運(yùn)算,然后再執(zhí)行+z的運(yùn)算。這種自左至右的結(jié)合方向就稱為“左結(jié)合性”。而自右至左的結(jié)合方向稱為“右結(jié)合性”。最典型的右結(jié)合性運(yùn)算符是賦值運(yùn)算符。如x=y=z,由于“=”的右結(jié)合性,應(yīng)先執(zhí)行y=z再執(zhí)行x=(y=z)運(yùn)算。C語言運(yùn)算符中有不少為右結(jié)合性,應(yīng)注意區(qū)別,以避免理解錯(cuò)誤。運(yùn)算符的優(yōu)先級(jí)和結(jié)合性見附錄3。1.5.3強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換表達(dá)式的形式如下:
(類型說明符)(表達(dá)式)上述形式中,(類型名)稱為強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符可以將一個(gè)表達(dá)式的值轉(zhuǎn)換成指定的類型,這種轉(zhuǎn)換是根據(jù)人為要求進(jìn)行的。例如:
(float)a
把a(bǔ)轉(zhuǎn)換為單精度型
(int)(x+y)把x+y的結(jié)果轉(zhuǎn)換為整型在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問題:1.類型說明符和表達(dá)式都必須加括號(hào)(單個(gè)變量可以不加括號(hào)),如把(int)(x+y)寫成(int)x+y則成了把x轉(zhuǎn)換成int型之后再與y相加了。2.無論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對(duì)變量的數(shù)據(jù)長(zhǎng)度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時(shí)對(duì)該變量定義的類型。例1.25表達(dá)式:(int)((double)9/2)-(9)%2的值是(2009年9月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第14題)。A)0B)3C)4D)5分析:這是一道計(jì)算題,考察了算術(shù)運(yùn)算符的優(yōu)先級(jí)和強(qiáng)制類型轉(zhuǎn)換。運(yùn)算符“()”的優(yōu)先級(jí)最高,所以先算括號(hào)里的內(nèi)容“((double)9/2)”,這是強(qiáng)制類型轉(zhuǎn)換表達(dá)式的形式,首先將“9/2”轉(zhuǎn)換成double類型再轉(zhuǎn)換成int類型,這部分結(jié)果為4;“%”的優(yōu)先級(jí)高于“-”,所以先進(jìn)行求余,“(9)%2”結(jié)果為1,再進(jìn)行減法,也就是“4-1”,選B。1.6賦值運(yùn)算符1.6.1賦值運(yùn)算符和賦值表達(dá)式1.6.2復(fù)合賦值表達(dá)式1.6.3賦值運(yùn)算中的類型轉(zhuǎn)換1.6.1賦值運(yùn)算符和賦值表達(dá)式簡(jiǎn)單賦值運(yùn)算符記為“=”。由“=”連接的式子稱為賦值表達(dá)式。其一般形式為:變量=表達(dá)式例如:
x=a+bw=sin(a)+sin(b)y=i+++--j1.6.1賦值運(yùn)算符和賦值表達(dá)式凡是表達(dá)式可以出現(xiàn)的地方均可出現(xiàn)賦值表達(dá)式。例如:x=(a=5)+(b=8)是合法的。它的意義是把5賦予a,8賦予b,再把a(bǔ),b相加,和賦予x,故x應(yīng)等于13。1.6.2復(fù)合賦值表達(dá)式賦值符“=”之前加上其它二目運(yùn)算符可構(gòu)成復(fù)合賦值符。如+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。構(gòu)成復(fù)合賦值表達(dá)式的一般形式為:變量雙目運(yùn)算符=表達(dá)式它等效于變量=變量運(yùn)算符表達(dá)式1.6.2復(fù)合賦值表達(dá)式例1.26若有定義語句:intx=10;,則表達(dá)式x-=x+x的值為(2009年9月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第15題)。A)-20 B)-10 C)0 D)10分析:本題考查復(fù)合賦值表達(dá)式的運(yùn)算。先做x+x結(jié)果為20,再做x-20,結(jié)果為-10賦值給x。選B。1.6.2復(fù)合賦值表達(dá)式例1.27表達(dá)式a+=a-=a=9的值是(2010年9月全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第16題)。
A)9 B)_9 C)18 D)0
分析:本題中表達(dá)式的計(jì)算順序是a+=(a-=(a=9)),首先a=9,則a-=9即a=a-9=9-9=0;最后a+=0;即a=a+0=0+0=0;選D。1.6.3賦值運(yùn)算中的類型轉(zhuǎn)換如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,即把賦值號(hào)右邊的類型換成左邊的類型。具體規(guī)定如下:實(shí)型賦予整型,舍去小數(shù)部分。整型賦予實(shí)型,數(shù)值不變,但將以浮點(diǎn)形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。字符型賦予整型,由于字符型為一個(gè)字節(jié),而整型為二個(gè)字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高八位為0。整型賦予字符型,只把低八位賦予字符量。1.6.3賦值運(yùn)算中的類型轉(zhuǎn)換應(yīng)注意:(1)當(dāng)賦值號(hào)左邊的變量為短整型,右邊的值為長(zhǎng)整型時(shí)。短整型變量只能接受長(zhǎng)整型數(shù)低位上兩個(gè)字節(jié)中的數(shù)據(jù),高位上兩個(gè)字節(jié)中的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 代理收款合同范例
- 建筑勘察設(shè)計(jì)合同
- 簡(jiǎn)化保價(jià)合同協(xié)議
- 電腦定制化購(gòu)銷協(xié)議
- 便利店薯片購(gòu)銷合同
- 個(gè)人借款合同的還款方式
- 借款協(xié)議書集團(tuán)內(nèi)部
- 工作服采購(gòu)合同模板
- 蕪湖市房屋買賣合同版式示例
- 集中采購(gòu)和政府采購(gòu)合同的效益分析
- 《地質(zhì)災(zāi)害監(jiān)測(cè)技術(shù)規(guī)范》
- 2024-2030年中國(guó)云母制品制造市場(chǎng)發(fā)展?fàn)顩r及投資前景規(guī)劃研究報(bào)告
- 2025年上半年內(nèi)蒙古鄂爾多斯伊金霍洛監(jiān)獄招聘17名(第三批)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- QC080000培訓(xùn)講義課件
- 24秋國(guó)家開放大學(xué)《農(nóng)產(chǎn)品質(zhì)量管理》形考任務(wù)1-2+形考實(shí)習(xí)1-3參考答案
- 科技興國(guó)未來有我主題班會(huì)教學(xué)設(shè)計(jì)
- 房子管護(hù)合同范例
- 光伏施工安全措施
- 2024-2025華為ICT大賽(網(wǎng)絡(luò)賽道)高頻備考試題庫(kù)500題(含詳解)
- 汽車智能制造技術(shù)課件
- 江蘇省揚(yáng)州市邗江中學(xué)2025屆物理高一第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
評(píng)論
0/150
提交評(píng)論