欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      期末復(fù)習(xí)-語(yǔ)言各章總結(jié)

      時(shí)間:2019-05-15 10:17:57下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《期末復(fù)習(xí)-語(yǔ)言各章總結(jié)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《期末復(fù)習(xí)-語(yǔ)言各章總結(jié)》。

      第一篇:期末復(fù)習(xí)-語(yǔ)言各章總結(jié)

      匯編語(yǔ)言學(xué)習(xí)筆記 《匯編語(yǔ)言》--王爽 前言

      學(xué)習(xí)匯編目的:充分獲得底層編程體驗(yàn);深刻理解機(jī)器運(yùn)行程序的機(jī)理。原則:沒(méi)有通過(guò)監(jiān)測(cè)點(diǎn)不要向下學(xué)習(xí);沒(méi)有完成當(dāng)前實(shí)驗(yàn)不要向下學(xué)習(xí)。第一章 基礎(chǔ)知識(shí)

      有三類指令組成匯編語(yǔ)言:匯編指令;偽指令;其他符號(hào)。8bit = 1byte = 一個(gè)存儲(chǔ)單元有n根地址線,則可以尋址2的n次方個(gè)內(nèi)存單元。1.1節(jié)--1.10節(jié) 小結(jié)

      (1)匯編指令是機(jī)器指令的助記符,同機(jī)器指令一一對(duì)應(yīng)。(2)每一種cpu都有自己的匯編指令集。(3)cpu可以直接使用的信息在存儲(chǔ)器中存放。

      (4)在存儲(chǔ)器中指令和數(shù)據(jù)沒(méi)有任何區(qū)別,都是二進(jìn)制信息。(5)存儲(chǔ)單元從零開始順序編號(hào)。

      (6)一個(gè)存儲(chǔ)單元可以存儲(chǔ)8個(gè)bit,即八位二進(jìn)制數(shù)。

      (7)每一個(gè)cpu芯片都有許多管腳,這些管腳和總線相連。也可以說(shuō),這些管腳引出總線。一個(gè)cpu可以引出的三種總線的寬度標(biāo)志了這個(gè)cpu不同方面的性能。地址總線的寬度決定了cpu的尋址能力;數(shù)據(jù)總線的寬度決定了cpu與其他器件進(jìn)行數(shù)據(jù)傳送時(shí)的一次數(shù)據(jù)傳送量;控制總線的寬度決定了cpu對(duì)系統(tǒng)中其他器件的控制能力。監(jiān)測(cè)點(diǎn):1KB的存儲(chǔ)器有1024個(gè)存儲(chǔ)單元?存儲(chǔ)單元的編號(hào)從0到1023.內(nèi)存地址空間:

      最終運(yùn)行程序的是cpu,我們用匯編編程時(shí),必須要從cpu的角度思考問(wèn)題。對(duì)cpu來(lái)講,系統(tǒng)中的所有存儲(chǔ)器中的存儲(chǔ)單元都處于一個(gè)統(tǒng)一的邏輯存儲(chǔ)器中,它的容量受cpu尋址能力的限制。這個(gè)邏輯存儲(chǔ)器即是我們所說(shuō)的內(nèi)存地址空間。第二章 寄存器(cpu的工作原理)mov ax, 2 add ax, ax add ax, ax add ax, ax(1)cpu中的相關(guān)部件提供兩個(gè)16位的地址,一個(gè)稱為段地址,另一個(gè)稱為偏移地址;(2)段地址和偏移地址通過(guò)內(nèi)部總線送人一個(gè)稱為地址加法器的部件;(3)地址加法器將兩個(gè)16位地址合成為一個(gè)20位的物理地址;(4)地址加法器通過(guò)內(nèi)部總線將20位物理地址送人輸入輸出控制電路;(5)輸入輸出控制電路將20位物理地址送上地址總線;(6)20位物理地址被地址總線傳送到存儲(chǔ)器; 段地址*16+偏移地址 = 物理地址 的本質(zhì)含義 內(nèi)存并沒(méi)有分段,段的劃分來(lái)自cpu。

      以后編程時(shí)可以根據(jù)需要,將若干地址連續(xù)的內(nèi)存單元看做一個(gè)段,用段地址*16定位段的起始地址,用偏移地址定位段的內(nèi)存單元。

      一個(gè)段的起始地址一定是16的倍數(shù),一個(gè)段的最大長(zhǎng)度為64kB。當(dāng)然也沒(méi)有辦法定義一個(gè)起始地址不是16的倍數(shù)的段。

      cpu可以用不同的段地址和偏移地址形成同一物理地址。

      在8086cpu加電啟動(dòng)或復(fù)位后cs和ip被設(shè)置為cs = f000h,ip = ffffh,即ffff0h單元中的指令是8086pc機(jī)開機(jī)后執(zhí)行的第一條指令。(??應(yīng)該是fffffh吧??)cpu將cs:ip指向的內(nèi)存單元看做指令。

      在cpu中,程序員能夠用指令讀寫的部件只有寄存器,程序員可以通過(guò)改變寄存器中的內(nèi)容實(shí)現(xiàn)對(duì)cpu的控制。

      mov指令稱為傳送指令,cpu中大部分寄存器的值都可以通過(guò)mov指令改變。除了cs:ip 8086沒(méi)給他這樣的功能。cs:ip可以用轉(zhuǎn)移指令來(lái)改變。jmp jmp cs:ip 用指令給出的段地址修改cs,偏移地址修改ip jmp 某一寄存器 的功能為:用寄存器中的值修改ip jmp ax 含義類似于mov ip,ax 段地址在8086pc機(jī)的段寄存器存放。當(dāng)8086cpu要訪問(wèn)內(nèi)存時(shí),由段寄存器提供內(nèi)存單元的段地址。8086cpu有四個(gè)段寄存器,其中cs用來(lái)存放指令的段地址。cs存放指令的段地址,ip存放指令的偏移地址。

      8086機(jī)中,任意時(shí)刻,cpu將cs:ip指向的內(nèi)容當(dāng)作指令執(zhí)行。8086cpu的工作過(guò)程:

      1.從cs:ip指向內(nèi)存單元讀取指令,讀取的指令進(jìn)入指令緩沖器; 2.ip指向下一條指令 3.執(zhí)行

      8086提供轉(zhuǎn)移指令修改cs:ip的內(nèi)容 debug的使用

      查看,修改cpu中寄存器的內(nèi)容:r命令 查看內(nèi)存中的命令:d命令

      修改內(nèi)存中的內(nèi)容:e命令(可以寫入數(shù)據(jù),指令,在內(nèi)存中,它們實(shí)際上沒(méi)有區(qū)別)將內(nèi)存中的命令解釋為機(jī)器指令和相應(yīng)的匯編指令:u命令 執(zhí)行cs:ip指向的內(nèi)存單元處的命令:t命令 以匯編指令的形式向內(nèi)存中寫入指令:a命令 第三章 寄存器(內(nèi)存訪問(wèn))3.1內(nèi)存中字的存儲(chǔ)

      高八位存放在高字節(jié)中,低八位存放在低字節(jié)中 3.2DS和【address】 3.3字傳送 3.4MOV ADD SUB 3.5數(shù)據(jù)段 3.6棧

      棧是一種具有特殊的訪問(wèn)方式的存儲(chǔ)空間。它的特殊性就在于,最后進(jìn)入這個(gè)空間的數(shù)據(jù),最先出去。

      棧有兩個(gè)基本的操作:入棧和出棧。

      棧的這種操作規(guī)則被稱為:lifo(last in first out,后進(jìn)先出)。cpu如何知道10000H--1000fH這段空間被當(dāng)作棧使用?

      push pop指令在執(zhí)行時(shí)必須知道哪個(gè)單元是棧頂單元,可是如何知道呢?

      棧頂?shù)亩蔚刂反娣旁趕s中,偏移地址存放在sp中。任意時(shí)刻,ss:sp指向棧頂單元。push和pop指令執(zhí)行時(shí),cpu從ss和sp中得到棧頂?shù)牡刂?。入棧時(shí),棧頂從高地址向低地址方向增長(zhǎng)。如何定義一個(gè)棧的大??? mov ax, 1000h mov ss, ax mov sp, 0010h;則棧頂為1000f 棧底為 10000 ****************************************** mov ax, 1000h mov ds, ax mov ax, 2266h mov [0], ax ************************ mov ax,1000h mov ss, ax mov sp, 0002h mov ax, 2266h push ax 棧頂?shù)淖兓秶畲鬄椋?--ffffh 棧的綜述

      (1)8086cpu提供了棧操作機(jī)制,方案如下: 在ss、sp中存放棧頂?shù)亩蔚刂泛推频刂罚?/p>

      提供入棧和出棧指令,他們根據(jù)ss、sp指示的地址,按照棧的方式訪問(wèn)內(nèi)存單元。(2)push指令的執(zhí)行步驟:1)sp=sp-2;2)向ss:sp指向的字單元送人數(shù)據(jù);(3)pop指令的執(zhí)行步驟:1)從ss:sp指向的字單元中讀取數(shù)據(jù);2)sp=sp+2(4)任意時(shí)刻,ss:sp指向棧頂元素。

      (5)8086cpu只記錄棧頂,??臻g的大小我們要自己管理。

      (6)用棧來(lái)暫存以后需要恢復(fù)的寄存器的內(nèi)容時(shí),寄存器出棧的順序要和入棧的順序相反。(7)push、pop指令實(shí)質(zhì)上是一種內(nèi)存?zhèn)魉椭噶?,注意他們的靈活運(yùn)用。一個(gè)棧段最大可以設(shè)為64k 段的綜述

      我們可以將一段內(nèi)存定義為一個(gè)段,用一個(gè)段地址指示段,用偏移地址訪問(wèn)段內(nèi)的單元。這完全是我們的安排。用一個(gè)段存放代碼,即代碼段 用一個(gè)段存放數(shù)據(jù),即數(shù)據(jù)段 用一個(gè)段當(dāng)棧,即棧段

      對(duì)于數(shù)據(jù)段,把段地址放在ds中,用mov,add,sub等訪問(wèn)內(nèi)存單元的指令時(shí),cpu就將我們定義的數(shù)據(jù)段內(nèi)容當(dāng)做數(shù)據(jù)來(lái)訪問(wèn);

      對(duì)于代碼段,把段地址放在cs:ip中,用mov,add,sub等訪問(wèn)內(nèi)存單元的指令時(shí),cpu就將執(zhí)行我們定義的代碼段的指令;

      對(duì)于棧段,把段地址放在ss:sp中,用push pop 等訪問(wèn)內(nèi)存單元的指令時(shí),cpu就將其當(dāng)作堆棧來(lái)訪問(wèn);

      debug的t命令在執(zhí)行修改器ss的指令時(shí),下一條指令也緊接著被執(zhí)行了。3.7棧超界問(wèn)題

      8086cpu不保證我們對(duì)棧的操作不會(huì)超界。也就是說(shuō),8086cpu只知道棧頂在何處而不知道我們安排的??臻g有多大,這點(diǎn)就好像,cpu只知道當(dāng)前要執(zhí)行的指令在何處,而不知道要執(zhí)行的指令有多少。從這兩點(diǎn)我們可以看出cpu的工作機(jī)理,它只考慮當(dāng)前情況:當(dāng)前的棧在何處,當(dāng)前要執(zhí)行的指令是哪一條。對(duì)于超界問(wèn)題我們可以做到就是小心。第五章【bx】和loop指令

      我們完整的描述一個(gè)內(nèi)存單元,需要兩種信息:(1)內(nèi)存單元的地址;(2)內(nèi)存單元存放數(shù)據(jù)的類型; inc bx的含義是bx中的內(nèi)容加一

      [bx]寄存器bx中所包含的地址中存放的內(nèi)容 [bx]表示一個(gè)內(nèi)存單元,他的偏移地址在bx中。loop指令執(zhí)行的時(shí)候,要進(jìn)行兩步操作: 1;(cx)=(cx)-1;

      2;判斷cx中的值,不為零則轉(zhuǎn)至標(biāo)號(hào)處執(zhí)行。

      “通?!蔽覀冇胠oop實(shí)現(xiàn)循環(huán)功能,cx中存放循環(huán)次數(shù)。用cx和loop指令相配合實(shí)現(xiàn)循環(huán)功能的三個(gè)要點(diǎn):(1)再cx中存放循環(huán)次數(shù);

      (2)loop指令中的標(biāo)號(hào)所標(biāo)識(shí)地址要在前面;

      (3)要循環(huán)執(zhí)行的程序段,要寫在標(biāo)號(hào)和loop指令的中間。在匯編源程序中,數(shù)據(jù)不能以字母開頭。所以對(duì)于大于9fffh的數(shù),均在前面加上0。mov cx,11 s: add ax,ax loop s assume cs:code code segment..mov ax,4c00h int 21h code ends end ffff:6單元是一個(gè)字節(jié)單元,ax是一個(gè)十六位寄存器,數(shù)據(jù)長(zhǎng)度不一樣,如何賦值? 注意我們說(shuō)的是“賦值”,就是說(shuō),讓ax中的數(shù)據(jù)的值(數(shù)據(jù)的大?。┖蚮fff:0006單元中的數(shù)據(jù)的值(數(shù)據(jù)的大小)相等。八位數(shù)據(jù)01h和16位數(shù)據(jù)0001h的數(shù)據(jù)長(zhǎng)度不一樣,但他們的值是相等的。

      設(shè)ffff:0006單元中的的數(shù)據(jù)是xxh,若要ax中的值和ffff:0006單元中的值相等,ax中的數(shù)據(jù)應(yīng)為00xxh。所以,若實(shí)現(xiàn)ffff:0006單元向ax賦值,我們應(yīng)該令(ah)=0,(al)=(ffff6H).若希望程序能從cs:0012處執(zhí)行,可以用g命令?!癵 0012”。他表示程序執(zhí)行到0012處。

      若希望程序能跳出循環(huán),用p命令

      5.4 debug和匯編編譯器masm對(duì)指令的不同處理。

      在匯編源程序中,mov al,[0]會(huì)被編譯器解釋成為:mov al,0 所以要這樣表達(dá):mov bx,0 mov al,[bx] 或者 mov al,ds:[0] 第一,我們?cè)趨R編源程序中,如果用指令訪問(wèn)一個(gè)內(nèi)存單元,則在指令中必須用[...]來(lái)表示內(nèi)存單元,如果在[]里用一個(gè)常量idata直接給出內(nèi)存單元的偏移地址,就要在[]的前面顯示地給出段地址所在的段寄存器。

      第二,如果在[]里用寄存器,比如bx,間接給出內(nèi)存單元的偏移地址,則段寄存器默認(rèn)在ds中。

      第六章 包含多個(gè)段的程序 程序取得所需段的方法有兩種:

      一是在加載程序的時(shí)候?yàn)槌绦蚍峙?,再就是程序在?zhí)行的過(guò)程中向系統(tǒng)申請(qǐng)。dw的含義是定義字型數(shù)據(jù)即define word 字型數(shù)據(jù)間以逗號(hào)隔開。

      程序運(yùn)行的時(shí)候cs存放代碼段的段地址,所以我們可以從cs中得到它們的段地址。dw定義的數(shù)據(jù)處于代碼段的最開始,所以偏移地址為零。dw 0123h,5604h,1234h start :指令 end start 我們?cè)诔绦虻牡谝粭l指令的前面加了一個(gè)標(biāo)號(hào)start:并在end的后面再次加入。end除了通知編譯器程序結(jié)束外,還可以通知編譯器程序的入口在什么地方。在單任務(wù)系統(tǒng)中,可執(zhí)行文件中的程序執(zhí)行如下:

      (1)由其他的程序(debug、command或其他程序)將可執(zhí)行文件中的程序加載入內(nèi)存;(2)設(shè)置cs:ip指向程序的第一條要執(zhí)行的指令(即程序的入口),從而使程序得以運(yùn)行;(3)程序運(yùn)行結(jié)束后,返回到加載者; 描述信息

      可執(zhí)行文件由描述信息和程序組成,程序來(lái)源于源程序中的匯編指令和定義的數(shù)據(jù);描述信息則主要是編譯連接程序?qū)υ绦蛑邢嚓P(guān)偽指令進(jìn)行處理所得到的信息。6.2 在代碼中使用棧

      在程序中通過(guò)定義數(shù)據(jù)來(lái)取得一段空間,然后將這段空間當(dāng)作棧空間來(lái)使用。

      例如將cs:16--cs:31的內(nèi)存空間當(dāng)作棧來(lái)用,初始狀態(tài)下棧為空,所以ss:sp要指向棧底,則設(shè)置ss:sp指向cs:32.6.3將數(shù)據(jù)代碼棧放入不同的段

      用assume將定義的具有一定用途的段跟寄存器聯(lián)系起來(lái) 第七章 更靈活的定位內(nèi)存地址的方法 7.1 and 和 or 指令(1)and指令:邏輯與指令,按位進(jìn)行與運(yùn)算。mov al ,01100011B and al ,00111011B 執(zhí)行后:al=00100011B 通過(guò)該運(yùn)算可將操作對(duì)象的相應(yīng)位設(shè)為0,其他位不變。(2)or指令:邏輯或指令,按位進(jìn)行或運(yùn)算。

      通過(guò)該運(yùn)算可將操作對(duì)象的相應(yīng)位設(shè)為1,其他位不變。7.2 關(guān)于ASCII碼

      所謂編碼方案,就是一套規(guī)則,它約定了用什么樣的信息來(lái)表示現(xiàn)實(shí)對(duì)象。小寫字母的ASCII碼值,比大寫字母的ASCII碼值大20H。

      就ASCII碼的二進(jìn)制形式來(lái)看,除第五位外,大寫字母和小寫字母的ASCII碼值都一樣。大寫字母第五位為0,小寫字母第五位為1.運(yùn)用and和or指令的給特定位賦值功能即可實(shí)現(xiàn)大小寫字母之間的轉(zhuǎn)換。7.5 [bx+idata] 類似于[bx]的一種更靈活的指明內(nèi)存單元的方式。

      [bx+idata]表示一個(gè)內(nèi)存單元,它的偏移地址為(bx)+idata(bx中的數(shù)值加上idata。也可以寫成 mov ax,[200+bx] mov ax,200[bx] mov ax,[bx].200 7.6 用[bx+idata]的方式進(jìn)行數(shù)組的處理 7.7 SI和DI SI和DI是8086cpu中和bx功能相近的寄存器。區(qū)別是SI和DI不能夠分成兩個(gè)八位寄存器來(lái)使用。codesg segment start: mov ax,datasg mov ds,ax mov si,0 mov di,16 mov cx,8;di si 為16位寄存器只需循環(huán) s: mov ax,[si] mov [di],ax;八次即可將16個(gè)字節(jié)傳送完畢 add si,2 add di,2 loop s

      mov ax,4c00h int 21h codesg ends end start si = dijmp指令后的第一個(gè)字節(jié)的地址(2)short指明此處的位移為八位位移。(3)八位位移的范圍為-128 127,用補(bǔ)碼表示;(4)八位位移由編譯程序在編譯時(shí)算出。

      還有一種jmp near ptr 標(biāo)號(hào) 實(shí)現(xiàn)段內(nèi)近轉(zhuǎn)移(ip)=(ip)+16位位移(1)16位位移 = “標(biāo)號(hào)”處的地址1(DI)=(DI)-1 MOVSW 可以傳送一個(gè)字

      MOVSB和MOVSW進(jìn)行的是串傳送操作中的一個(gè)步驟,一般都要和rep配合使用,格式如下: rep movsb 相當(dāng)于: s:movsb loop s rep的作用是根據(jù)cx的值,重復(fù)執(zhí)行后面的串傳送指令。8086cpu提供了下面兩條指令對(duì)DF位進(jìn)行設(shè)置: CLD:將DF位置0 STD:將DF位置1 1.傳送的原始地址 2.傳送的目的地址 3.傳送的長(zhǎng)度 4.傳送的方向 11.11 pushf和popf 壓入/彈出標(biāo)志寄存器中的數(shù)據(jù) 為訪問(wèn)標(biāo)志寄存器提供了一種方法。11.12 標(biāo)志寄存器在DEBUG中的表示 第十二章 內(nèi)中斷 12.1 內(nèi)中斷的產(chǎn)生

      cpu內(nèi)部發(fā)生下面情況時(shí),將產(chǎn)生相應(yīng)的中斷信息:

      (1)除法錯(cuò)誤(2)單步執(zhí)行(3)執(zhí)行int0命令(4)執(zhí)行int命令 中斷類型碼0 1 4 n 為一個(gè)字節(jié)型數(shù)據(jù) 12.2 中斷處理程序

      cpu如何通過(guò)八位的中斷類型碼得到中斷處理程序的段地址和偏移地址? 12.3 中斷向量表 答:通過(guò)中斷向量表

      中斷向量表就是中斷處理程序入口地址的列表。保存在內(nèi)存中。cpu如何找到中斷向量表?

      對(duì)于8086中斷向量表指定存在內(nèi)存地址0處。從0000:0000到0000:03e8單元。共1000個(gè)字節(jié)。中斷向量表中一個(gè)表項(xiàng)存放一個(gè)中斷向量,占兩個(gè)字。分別存放段地址和偏移地址。12.4 中斷過(guò)程

      (1)從中斷信息中取得中斷類型碼(2)標(biāo)志寄存器的值入棧

      (3)設(shè)置標(biāo)志寄存器的第八位TF和第九位IF的值為0(4)CS的內(nèi)容入棧(5)IP的值入棧

      (6)從內(nèi)存地址為中斷類型碼*4和中斷類型碼*4 + 2 的兩個(gè)字單元中讀取中斷處理程序的入口地址設(shè)置IP和CS 12.5 中斷處理程序(1)保存用到的寄存器(2)處理中斷。(3)恢復(fù)用到的寄存器(4)用IRET指令返回。12.6 除法錯(cuò)誤中斷的處理 12.7 編程處理0號(hào)中斷 12.8 安裝 第十三章 int指令 13.1 int指令

      int指令的最終功能和call指令相似,都是調(diào)用一段程序。13.2 編寫供應(yīng)用程序調(diào)用的中斷例程

      編寫、安裝中斷7ch的中斷例程,功能:求一word型數(shù)據(jù)的平方。(AX)= 要計(jì)算的數(shù)據(jù)。

      DX,AX存放結(jié)果的高十六位和低十六位。MOV WORD PTR ES:[7CH*4],200H MOV WORD PTR ES:[7CH*4+2],0 MOV CX,OFFSET SQREND-OFFSET SQR CLD REP MOVSB int指令和iret指令配合使用與call指令和ret指令配合使用具有相似的思路。13.3 對(duì)int、iret和棧的深入理解 ********************************* 13.4 BIOS和DOS所提供的中斷例程 BIOS主要包含以下內(nèi)容:

      1、硬件系統(tǒng)的檢測(cè)和初始化程序

      2、外部中斷和內(nèi)部中斷的中斷例程

      3、用于對(duì)硬件設(shè)備進(jìn)行I/O操作的中斷例程

      4、其他和硬件系統(tǒng)相關(guān)的中斷例程 13.5 BIOS和DOS中斷例程的安裝過(guò)程

      1.開機(jī)后,cpu一加點(diǎn),初始化(cs)= 0FFFFH,(IP)= 0,自動(dòng)從FFFF:0單元開始執(zhí)行程序。FFFF:0處有一條跳轉(zhuǎn)指令,cpu執(zhí)行該程序后,轉(zhuǎn)去執(zhí)行BIOS中的硬件檢測(cè)和初始化程序。

      2.初始化程序?qū)⒔IOS所支持的中斷向量,即將BIOS提供的中斷例程的入口登記在中斷向量表中。注意,對(duì)于BIOS所提供的中斷例程,只需將入口地址登記在中斷向量表中即可,因?yàn)樗鼈兪枪袒絉OM中的內(nèi)容,一直在內(nèi)存中存在。

      3.硬件系統(tǒng)檢測(cè)和初始化完成后,調(diào)用int 19h進(jìn)行操作系統(tǒng)的引導(dǎo)。從此將計(jì)算機(jī)交給操作系統(tǒng)控制。

      4.DOS啟動(dòng)后,除完成其他工作外,還將它提供的中斷例程裝入內(nèi)存,并建立相應(yīng)的中斷向量。

      13.6 BIOS中斷例程應(yīng)用

      int 10h 中斷例程是BIOS提供的中斷例程,其中包含多個(gè)和屏幕輸出有關(guān)的子程序。一個(gè)供程序員調(diào)用的中斷例程往往包含多個(gè)子程序,中斷例程內(nèi)部用傳遞進(jìn)來(lái)的參數(shù)來(lái)決定執(zhí)行那一個(gè)子程序。BIOS和DOS提供的中斷例程,都用AH來(lái)傳遞內(nèi)部參數(shù) 13.7 DOS中斷例程應(yīng)用

      例如 我們一直在使用的4ch號(hào)子程序,即程序返回功能。mov ah 4ch mov al 0 int 21h ========================== DOS功能調(diào)用 int 21h(1)鍵盤輸入 1)1號(hào)調(diào)用——從鍵盤輸入單個(gè)字符 調(diào)用格式: MOV AH,1 INT 21H 功能: 等待從鍵盤輸入一個(gè)字符并送入AL。

      執(zhí)行時(shí)系統(tǒng)將掃描鍵盤,等待有健按下,一旦有健按下,就將其字符的ASCII碼讀

      入,先檢查是否Ctrl-Break,若是,退出命令執(zhí)行;否則將ASCII碼送AL,同時(shí)將

      該字符送顯示器顯示。2)10號(hào)調(diào)用——從鍵盤輸入字符串

      功能: 從鍵盤接收字符串送入內(nèi)存的輸入緩沖區(qū),同時(shí)送顯示器顯示。調(diào)用前要求: 先定義一個(gè)輸入緩沖區(qū)

      MAXLEN DB 100 ;第1個(gè)字節(jié)指出緩沖區(qū)能容納的字符個(gè)數(shù),即緩沖區(qū)長(zhǎng)度,不能為0 ACLEN DB ? ;第2個(gè)字節(jié)保留,以存放實(shí)際輸入的字符個(gè)數(shù) STRING DB 100 DUP(?);第3個(gè)字節(jié)開始存放從鍵盤輸入的字符串。

      調(diào)用格式: LEA DX,MAXLEN(緩沖區(qū)首偏移地址)MOV AH,10 INT 21H(2)顯示輸出

      1)2號(hào)調(diào)用——在顯示器上顯示輸出單個(gè)字符 調(diào)用格式: MOV DL,待顯示字符的ASCII碼 MOV AH,2 INT 21H 功能:將DL中的字符送顯示器顯示?!纠匡@示輸出大寫字母A MOV DL,41H ;或?qū)憺?MOV DL,'A' MOV AH,2 INT 21H 2)9號(hào)調(diào)用——在顯示器上顯示輸出字符串 調(diào)用格式: LEA DX,字符串首偏移地址 MOV AH,9 INT 21H 功能:將當(dāng)前數(shù)據(jù)區(qū)中DS:DX所指向的以'$'結(jié)尾的字符串送顯示器顯示。【例】在顯示器上顯示字符串“YOU ARE SUCESSFUL!” DATA SEGMENT STRING DB ' YOU ARE SUCESSFUL!$ ' DATA ENDS CODE SEGMENT ? ? MOV AX,DATA MOV DS,AX LEA DX,STRING MOV AH,9 INT 21H ? ? CODE ENDS 說(shuō)明:若希望顯示字符串后,光標(biāo)可自動(dòng)回車換行,可在定義字符串時(shí)作如下更改: STRING DB ' YOU ARE SUCESSFUL!',0AH,0DH,' $ ' ;在字符串結(jié)束前加回車換行的ASCII碼0AH,0DH

      第二篇:C語(yǔ)言 各章知識(shí)點(diǎn)總結(jié)

      總體上必須清楚的:

      2)讀程序都要從main()入口, 然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇)。

      4)bit是位 是指為0 或者1。byte 是指字節(jié), 一個(gè)字節(jié) = 八個(gè)位.5)一定要記住 二進(jìn)制 如何劃成 十進(jìn)制。概念??嫉降模?/p>

      1、編譯預(yù)處理不是C語(yǔ)言的一部分,不再運(yùn)行時(shí)間。C語(yǔ)言編譯的程序稱為源程序,它以ASCII數(shù)值存放在文本文件中。2、每個(gè)C語(yǔ)言程序中main函數(shù)是有且只有一個(gè)。3、在函數(shù)中不可以再定義函數(shù)。

      4、算法一定要有輸出的,但可以沒(méi)有輸入。5、break可用于循環(huán)結(jié)構(gòu)和switch語(yǔ)句。6、逗號(hào)運(yùn)算符的級(jí)別最低。第一章

      1)合法的用戶標(biāo)識(shí)符考查:

      合法的要求是由字母,數(shù)字,下劃線組成。有其它元素就錯(cuò)了。并且第一個(gè)必須為字母或則是下劃線。第一個(gè)為數(shù)字就錯(cuò)了。

      關(guān)鍵字不可以作為用戶標(biāo)識(shí)符號(hào)。main define scanf printf 都不是關(guān)鍵字。迷惑你的地方If是可以做為用戶標(biāo)識(shí)符。因?yàn)镮f中的第一個(gè)字母大寫了,所以不是關(guān)鍵字。

      關(guān)鍵字有:

      auto break case char const continue default do double else enum extern float for goto if int long register return short signed static sizeof struct switch typedef union unsigned void volatile while auto :聲明自動(dòng)變量

      double :聲明雙精度變量或函數(shù)

      int: 聲明整型變量或函數(shù)

      struct:聲明結(jié)構(gòu)體變量或函數(shù) break:跳出當(dāng)前循環(huán)

      else :條件語(yǔ)句否定分支(與 if 連用)long :聲明長(zhǎng)整型變量或函數(shù) switch :用于開關(guān)語(yǔ)句 case:開關(guān)語(yǔ)句分支 enum :聲明枚舉類型

      register:聲明寄存器變量

      typedef:用以給數(shù)據(jù)類型取別名 char :聲明字符型變量或函數(shù)

      extern:聲明變量是在其他文件正聲明

      return :子程序返回語(yǔ)句(可以帶參數(shù),也可不帶參數(shù))union:聲明共用數(shù)據(jù)類型 const :聲明只讀變量

      float:聲明浮點(diǎn)型變量或函數(shù) short :聲明短整型變量或函數(shù)

      unsigned:聲明無(wú)符號(hào)類型變量或函數(shù)

      continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán) for:一種循環(huán)語(yǔ)句

      signed:聲明有符號(hào)類型變量或函數(shù)

      void :聲明函數(shù)無(wú)返回值或無(wú)參數(shù),聲明無(wú)類型指針 default:開關(guān)語(yǔ)句中的“其他”分支 goto:無(wú)條件跳轉(zhuǎn)語(yǔ)句

      sizeof:計(jì)算數(shù)據(jù)類型長(zhǎng)度

      volatile:說(shuō)明變量在程序執(zhí)行中可被隱含地改變 do :循環(huán)語(yǔ)句的循環(huán)體

      while :循環(huán)語(yǔ)句的循環(huán)條件

      static :聲明靜態(tài)變量

      if:條件語(yǔ)句

      2)實(shí)型數(shù)據(jù)的合法形式:

      2.333e-1 就是合法的,且數(shù)據(jù)是2.333×10-1。考試口訣:e前e后必有數(shù),e后必為整數(shù)。.3)字符數(shù)據(jù)的合法形式::

      '1' 是字符占一個(gè)字節(jié),“1”是字符串占兩個(gè)字節(jié)(含有一個(gè)結(jié)束符號(hào))。'0' 的ASCII數(shù)值表示為48,'a' 的ASCII數(shù)值是97,'A'的ASCII數(shù)值是65。

      4)整型一般是兩個(gè)字節(jié), 字符型是一個(gè)字節(jié),雙精度一般是4個(gè)字節(jié):

      考試時(shí)候一般會(huì)說(shuō),在16位編譯系統(tǒng),或者是32位系統(tǒng)。碰到這種情況,不要去管,一樣做題。掌握整型一般是兩個(gè)字節(jié), 字符型是一個(gè)字節(jié),雙精度一般是4個(gè)字節(jié)就可以了。5)轉(zhuǎn)義字符的考查:

      在程序中 int a = 0x6d,是把一個(gè)十六進(jìn)制的數(shù)給變量a 注意這里的0x必須存在。

      在程序中 int a = 065, 是一個(gè)八進(jìn)制的形式。

      6)算術(shù)運(yùn)算符號(hào)的優(yōu)先級(jí)別:

      同級(jí)別的有的是從左到右,有的是從右到左。7)強(qiáng)制類型轉(zhuǎn)換:

      一定是(int)a 不是 int(a),注意類型上一定有括號(hào)的。

      注意(int)(a+b)和(int)a+b 的區(qū)別。前是把a(bǔ)+b轉(zhuǎn)型,后是把a(bǔ)轉(zhuǎn)型再加b。8)表達(dá)式的考查:

      是表達(dá)式就一定有數(shù)值。

      賦值表達(dá)式:表達(dá)式數(shù)值是最左邊的數(shù)值,a=b=5;該表達(dá)式為5,常量不可以賦值。

      自加、自減表達(dá)式:假設(shè)a=5,++a(是為6),a++(為5);

      運(yùn)行的機(jī)理:++a 是先把變量的數(shù)值加上1,然后把得到的數(shù)值放到變量a中,然后再用這

      個(gè)++a表達(dá)式的數(shù)值為6,而a++是先用該表達(dá)式的數(shù)值為5,然后再把a(bǔ)的數(shù)值加上1為6,再放到變量a中。進(jìn)行了++a和a++后在下面的程序中再用到a的話都是變量a中的6了。考試口訣:++在前先加后用,++在后先用后加。

      逗號(hào)表達(dá)式:優(yōu)先級(jí)別最低 ;表達(dá)式的數(shù)值逗號(hào)最右邊的那個(gè)表達(dá)式的數(shù)值。(2,3,4)的表達(dá)式的數(shù)值就是4。9)位運(yùn)算的考查:

      會(huì)有一到二題考試題目。

      總的處理方法:幾乎所有的位運(yùn)算的題目都要按這個(gè)流程來(lái)處理(先把十進(jìn)制變成二進(jìn)制再變成十進(jìn)制)。

      一定要記住,在沒(méi)有舍去數(shù)據(jù)的時(shí)候,<<左移一位表示乘以2;>>右移一位表示除以2。

      10)018的數(shù)值是非法的,八進(jìn)制是沒(méi)有8的,逢8進(jìn)1。

      11)%符號(hào)兩邊要求是整數(shù)。不是整數(shù)就錯(cuò)了。12)兩種取整丟小數(shù)的情況:

      1、int a =1.6;

      2、(int)a;

      第二章 1)printf函數(shù)的格式考查:

      %d對(duì)應(yīng)整型;%c對(duì)應(yīng)字符;%f對(duì)應(yīng)單精度等等。寬度的,左對(duì)齊等修飾。-

      %ld對(duì)應(yīng) long int;%lf 對(duì)應(yīng)double。2)scanf函數(shù)的格式考察:

      注意該函數(shù)的第二個(gè)部分是&a 這樣的地址,不是a;

      Scanf(“%d%d%*d%d”,&a,&b,&c);跳過(guò)輸入的第三個(gè)數(shù)據(jù)。3)putchar ,getchar 函數(shù)的考查: char a = getchar()是沒(méi)有參數(shù)的,從鍵盤得到你輸入的一個(gè)字符給變量a。

      putchar(‘y’)把字符y輸出到屏幕中。

      5)如何實(shí)現(xiàn)保留三位小數(shù),第四位四舍五入的程序,(要求背下來(lái))

      這個(gè)有推廣的意義,注意 x =(int)x 這樣是把小數(shù)部分 去掉。

      第三章

      特別要注意:c語(yǔ)言中是用非0表示邏輯真的,用0表示邏輯假的。1)關(guān)系表達(dá)式:

      表達(dá)式的數(shù)值只能為1(表示為真),或0(表示假)

      當(dāng)關(guān)系的表達(dá)是為真的時(shí)候得到1。如 9>8這個(gè)是真的,所以表達(dá)式的數(shù)值就是1; 2)邏輯表達(dá)式:

      只能為1(表示為真),或0(表示假)a)共有&& ||!三種邏輯運(yùn)算符號(hào)。b)!>&&>|| 優(yōu)先的級(jí)別。

      c)注意短路現(xiàn)象??荚嚤容^喜歡考到。

      (表達(dá)式1)&&(表達(dá)式2)如果表達(dá)式1為假,則表達(dá)式2不會(huì)進(jìn)行運(yùn)算,即表達(dá)式2“被短路”

      (表達(dá)式1)||(表達(dá)式2)如果表達(dá)式1為真,則表達(dá)式2不會(huì)進(jìn)行運(yùn)算,即表達(dá)式2“被短路”

      3)if 語(yǔ)句

      else 是與最接近的if且沒(méi)有else的相組合的。4)條件表達(dá)式: 表達(dá)式1 ?表達(dá)式2 :表達(dá)式3 5)switch語(yǔ)句:

      a)一定要注意 有break 和沒(méi)有break的差別,書上(34頁(yè))的兩個(gè)例子,沒(méi)有break時(shí)候,只要有一個(gè)case匹配了,剩下的都要執(zhí)行,有break則是直接跳出了swiche語(yǔ)句。

      b)switch只可以和break一起用,不可以和continue用。

      第四章 1)三種循環(huán)結(jié)構(gòu):

      a)for(); while();do-while()三種。b)for循環(huán)當(dāng)中必須是兩個(gè)分號(hào),千萬(wàn)不要忘記。

      c)寫程序的時(shí)候一定要注意,循環(huán)一定要有結(jié)束的條件,否則成了死循環(huán)。-

      d)do-while()循環(huán)的最后一個(gè)while();的分號(hào)一定不能夠丟。(當(dāng)心上機(jī)改錯(cuò))

      2)break 和 continue的差別

      記憶方法:

      break:是打破的意思,(破了整個(gè)循環(huán))所以看見break就退出真?zhèn)€一層循環(huán)。-

      continue:是繼續(xù)的意思,(繼續(xù)循環(huán)運(yùn)算),但是要結(jié)束本次循環(huán),就是循環(huán)體內(nèi)剩下的語(yǔ)句不再執(zhí)行,跳到循環(huán)開始,然后判斷循環(huán)條件,進(jìn)行新一輪的循環(huán)。3)嵌套循環(huán)

      就是有循環(huán)里面還有循環(huán),這種比較復(fù)雜,要一層一層一步一步耐心的計(jì)算,一般記住兩層是處理二維數(shù)組的。

      4)while((c=getchar())!=’n’)和 while(c=getchar()!=’n’)的差別

      先看a = 3!= 2 和(a=3)!=2 的區(qū)別:(!= 號(hào)的級(jí)別高于 = 號(hào) 所以第一個(gè)先計(jì)算 3!=2)第一個(gè)a的數(shù)值是得到的1;第二個(gè)a的數(shù)值是3??荚囎⒁恻c(diǎn): 括號(hào)在這里的重要性。

      第五章

      函數(shù):是具有一定功能的一個(gè)程序塊; 2)一定要注意參數(shù)之間的傳遞

      實(shí)參和形參之間 傳數(shù)值,和傳地址的差別。(考試的重點(diǎn))

      傳數(shù)值的話,形參的變化不會(huì)改變實(shí)參的變化。

      傳地址的話,形參的變化就會(huì)有可能改變實(shí)參的變化。3)函數(shù)聲明的考查:

      一定要有:函數(shù)名,函數(shù)的返回類型,函數(shù)的參數(shù)類型。不一定要有:形參的名稱。

      第六章

      *p++ 和(*p)++的之間的差別:改錯(cuò)題目中很重要 *p++是 地址會(huì)變化。

      (*p)++ 是數(shù)值會(huì)要變化。

      三名主義:(考試的重點(diǎn))

      數(shù)組名:表示第一個(gè)元素的地址。數(shù)組名不可以自加,他是地址常量名。了很多次)

      函數(shù)名:表示該函數(shù)的入口地址。

      字符串常量名:表示第一個(gè)字符的地址。

      (考第七章

      1一維數(shù)組的重要概念: 對(duì)a[10]這個(gè)數(shù)組的討論。

      1、a表示數(shù)組名,是第一個(gè)元素的地址。

      2、a是地址常量,所以只要出現(xiàn)a++,或者是a=a+2賦值的都是錯(cuò)誤的。3、a是一維數(shù)組名,所以它是列指針,也就是說(shuō)a+1是跳一列。

      對(duì)a[3][3]的討論。

      1、a表示數(shù)組名,是第一個(gè)元素的地址。

      2、a是地址常量,所以只要出現(xiàn)a++,或者是a=a+2賦值的都是錯(cuò)誤的。3、a是二維數(shù)組名,所以它是行指針,也就是說(shuō)a+1是跳一行。

      4、a[0]、a[1]、a[2]也都是地址常量,不可以對(duì)它進(jìn)行賦值操作,同時(shí)它們都是列指針,a[0]+1,a[1]+1,a[2]+1都是跳一列。

      5、注意a和a[0]、a[1]、a[2]是不同的,它們的基類型是不同的。前者是一行元素,后三者是一列元素。二維數(shù)組做題目的技巧:

      如果有a[3][3]={1,2,3,4,5,6,7,8,9}這樣的題目。

      步驟一:把他們寫成:

      第一列 第二列 第三列

      a[0] 1 2 3 ->第一行 a[1] 4 5 6 —>第二行 a[2] 7 8 9 ->第三行 步驟二:這樣作題目間很簡(jiǎn)單:

      *(a[0]+1)我們就知道是第一行的第一個(gè)元素往后面跳一列,那么這里就是a[0][1]元素,所以是2。

      *(a[1]+2)我們就知道是第二行的第一個(gè)元素往后面跳二列。那么這里就是a[1][2]元素,所以是6。一定記住:只要是二維數(shù)組的題目,一定是寫成如上的格式,再去做題目,這樣會(huì)比較簡(jiǎn)單。

      數(shù)組的初始化,一維和二維的,一維可以不寫,二維第二個(gè)一定要寫

      int a[]={1,2} 合法。int a[][4]={2,3,4}合法。但int a[4][]={2,3,4}非法。二維數(shù)組中的行指針 int a[1][2];

      其中a現(xiàn)在就是一個(gè)行指針,a+1跳一行數(shù)組元素。搭配(*)p[2]指針 a[0],a[1]現(xiàn)在就是一個(gè)列指針。a[0]+1 跳一個(gè)數(shù)組元素。搭配*p[2]指針數(shù)組使用 無(wú)條件等價(jià):

      a[2]等價(jià)于*(a+2)a[2][3]等價(jià)于*(a+2)[3]等價(jià)于*(*(a+2)+3)這個(gè)思想很重要!

      第三篇:c語(yǔ)言期末復(fù)習(xí)

      誰(shuí)能出線

      電視臺(tái)舉辦“超級(jí)學(xué)生”才藝大賽,由于報(bào)名人數(shù)狂多,所以要先進(jìn)行分組預(yù)賽。按規(guī)定,每10名學(xué)生為一個(gè)預(yù)賽小組,評(píng)委打出分?jǐn)?shù)(0~100分),各小組第一名可以進(jìn)入下一輪;如果有多名學(xué)生得分相同都是第一名,則可同時(shí)進(jìn)入下一輪。

      1.#include 2.#include 3.int main()4.{ 5.int a[10],i,max=0;6.for(i=0;i<10;i++)7.{ 8.scanf(“%d”,&a[i]);9.if(a[i]>max)10.{ 11.max=a[i];12.} 13.} 14.for(i=0;i<10;i++)15.{ 16.if(a[i]>=max)17.{ 18.printf(“%dn”,i);19.} 20.} 21.return 0;22.} 統(tǒng)計(jì)素?cái)?shù)的個(gè)數(shù)

      求出 2 到 m 之間(含 m,m<=1000)所有素?cái)?shù)并放在數(shù)組 a 中。輸入:正整數(shù)m 輸出:從小到大的所有素?cái)?shù),及個(gè)數(shù)(素?cái)?shù)輸出的時(shí)候用%4d來(lái)控制)

      1.#include 2.int main()3.{ 4.int a[1000],m,i=0,j,n,cnt;5.scanf(“%d”,&m);6.for(n=2;n<=m;n++)7.{ 8.a[i]=n;

      9.i=i+1;10.}

      11.cnt=0;

      12.for(i=0;i

      14.j=2;

      15.while(a[i]%j!=0)16.{

      17.j++;18.}

      19.if(j==a[i])20.{

      21.printf(“%4d”,j);22.cnt=cnt+1;23.} 24.25.}printf(“n”);26.printf(“%d”,cnt);27.printf(“n”);28.return 0;29.}

      1.#include 2.int main()3.{

      4.int a[10],i,j,n;5.for(i=0;i<10;i++)6.{

      7.scanf(“%d”,&a[i]);8.}

      9.for(j=0;j<10;j++)10.{ 11.12.for(i=0;i<9;i++)13.{

      14.if(a[i+1]

      16.n=a[i+1];17.a[i+1]=a[i];18.a[i]=n;19.} 20.} 21.} 22.23.for(i=0;i<10;i++)24.{

      25.printf(“ %d”,a[i]);

      冒泡法排序26.} 27.printf(“n”);28.return 0;29.} 插入法排序

      1.#include 2.int main()3.{ 4.int a[11],i,n,m,j;5.for(i=0;i<10;i++)6.{ 7.scanf(“%d”,&a[i]);8.} 9.scanf(“%d”,&n);10.for(j=0;j<11;j++)11.{ 12.for(i=0;i<10;i++)13.{ 14.if(n

      1.#include 2.#define N 10 3.int main()4.{ 5.int n,a[N],i=0,k=0,t,m=0,j;6.scanf(“%d”,&n);

      7.do 8.{

      9.a[i]=n%10;10.n=n/10;11.i++;12.k++;

      13.}while(n!=0);

      14.for(j=0;j

      16.for(i=0;i

      18.if(a[i+1]>a[i])19.{

      20.m=a[i+1];21.a[i+1]=a[i];22.a[i]=m;23.} 24.} 25.}

      26.for(i=0;i

      28.printf(“%d”,a[i]);29.}

      30.printf(“n”);31.return 0;32.}

      數(shù)組逆序輸出

      1.#include 2.int main()3.{

      4.int a[10],i,j,t;5.for(i=0;i<10;i++)6.{

      7.scanf(“%d”,&a[i]);8.} 9.i=0;10.j=9;

      11.while(i

      13.t=a[i];14.a[i]=a[j];15.a[j]=t;16.i++;17.j--;18.}

      19.for(i=0;i<10;i++)20.{ 21.printf(“%d ”,a[i]);22.} 23.printf(“n”);24.return 0;25.} 求最大值

      1.#include 2.int main()3.{ 4.int a[10],i,max;5.for(i=0;i<10;i++)6.{ 7.scanf(“%d”,&a[i]);8.} 9.max=a[0];10.for(i=0;i<10;i++)11.{ 12.if(max

      程序定義了 4× 4 的二維數(shù)組,請(qǐng)編寫程序,給二維數(shù)組賦值,并使數(shù)組下半三角元素中的值乘以n。例如:

      數(shù)組中的值為

      假設(shè)n為10,則輸出結(jié)果如下:(輸出的數(shù)按照4位寬度來(lái)輸出,即%4d)

      1.#include 2.int main()3.{

      4.int a[4][4],i,j,n;5.for(i=0;i<4;i++)6.{

      7.for(j=0;j<4;j++)8.{

      9.scanf(“%d”,&a[i][j]);10.} 11.}

      12.scanf(“%d”,&n);13.for(i=0;i<4;i++)14.{

      15.for(j=0;j<=i;j++)16.{

      17.a[i][j]=n*(a[i][j]);18.} 19.}

      20.for(i=0;i<4;i++)21.{

      22.for(j=0;j<4;j++)23.{

      24.printf(“%4d”,a[i][j]);25.}

      26.printf(“n”);27.}

      28.return 0;29.}

      在屏幕上顯示楊輝三角形

      1.#include 2.#define N 100 3.#define M 100 4.int main()5.{

      6.int a[N][M],i,j,n;7.scanf(“%d”,&n);8.for(i=0;i

      10.j=i;

      11.a[i][0]=1;12.a[i][j]=1;13.} 14.for(i=2;i

      1.#include 2.#define N 10 3.#define M 10 4.int main()5.{ 6.int a[N][M],n,i,j,m;7.scanf(“%d”,&n);8.for(i=0;i

      28.printf(“ %d”,a[i][j]);

      29.} printf(“n”);30.}

      31.return 0;32.}

      給數(shù)組中的元素按順序編號(hào)

      對(duì)數(shù)組 a[10] 中的十個(gè)整數(shù)從小到大進(jìn)行連續(xù)編號(hào),輸出各個(gè)元素的編號(hào)。要求不能改變數(shù)組 a 中元素的順序,且相同的整數(shù)要具有相同的編號(hào)。例如數(shù)組是: A=(5,3,4,7,3,5,6,8,9,10)則輸出為:(4,1,3,7,1,4,6,8,9,10)

      1.#include 2.int main()3.{

      4.int a[10],b[10],i,j,t;5.for(i=0;i<10;i++)6.{

      7.scanf(“%d”,&a[i]);8.}

      9.for(i=0;i<10;i++)10.{

      11.b[i]=a[i];12.}

      13.for(i=0;i<9;i++)14.{

      15.for(j=i+1;j<10;j++)16.{

      17.if(a[i]>a[j])18.{

      19.t=a[i];20.a[i]=a[j];21.a[j]=t;22.} 23.} 24.}

      25.for(j=0;j<10;j++)26.{

      27.for(i=0;i<10;i++)28.{

      29.if(b[j]==a[i])30.{

      31.printf(“%3d”,i+1);brea

      k;

      32.} 33.}

      34.}printf(“n”);35.return 0;36.} 字符轉(zhuǎn)換

      描述

      提取一個(gè)字符串中的所有數(shù)字字符(‘0’...‘9’)將其轉(zhuǎn)換為一個(gè)整數(shù)輸出。輸入

      一個(gè)以回車符為結(jié)束標(biāo)志的字符串(少于80個(gè)字符)。輸出

      把字符串中的所有數(shù)字字符(‘0’...‘9’)轉(zhuǎn)換為一個(gè)整數(shù)并輸出。

      1.#include 2.#define N 80 3.int main()4.{ 5.char a[N];6.int j;7.scanf(“%s”,a);8.for(j=0;a[j]!='