C程序設計復習資料_第1頁
C程序設計復習資料_第2頁
C程序設計復習資料_第3頁
C程序設計復習資料_第4頁
已閱讀5頁,還剩243頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

長春工業(yè)大學C語言程序設計輔導資料(內(nèi)部資料)主講教師:張春飛

2009年12月1日第一章概述【要點歸納】1、C語言的特點⑴C語言短小精悍,基本組成精煉、簡潔。32個標準關鍵字,45個標準運算符及9種控制語句。(2)C語言運算符豐富,表達能力強。(3)C語言數(shù)據(jù)結(jié)構豐富,結(jié)構化好。⑷C語言提供了某些與匯編語言相似的功能,有利于編寫系統(tǒng)軟件。⑸C語言程序可移植性好。(6)C語言編譯后生成的目標代碼小,質(zhì)量高,程序的執(zhí)行效率高。2、C語言標識符C語言中,允許用作標識符的字符有:26個英文字母(包括大小寫)數(shù)字〇ー9下劃線。C語言的標識符是滿足如下條件的字符序列:只能由英文字母、數(shù)字和下劃線組成。長度為1-32.必須以英文字母或下劃線開頭。C語言的標識符可以分為以下三類:關鍵字。C語言中規(guī)定了一批標識符,它們在程序中都代表著固定的含義,不能另作他用。預定義標識符。這些標識符在C語言中也都有特定的含義,因此為了避免誤解,建議用戶不要把這些預定義標識符另作它用。用戶標識符。,C語言風格(DC語言嚴格區(qū)分英文字母大小寫。(2)C語言用“;”作為語句分隔符。⑶C語言中“{ド用于標識ー組語句,構成復合語句。⑷C程序書寫格式自由,一行內(nèi)可以寫幾個語句,ー個語句也可以寫在幾行上。⑸注釋用來向用戶提示或解釋程序的意義。(注釋部分允許出現(xiàn)在程序的任何位置。編譯時,會忽略所有的注釋符,即不對他們作任何處理。)4,C程序構成⑴一個C源程序由函數(shù)構成(函數(shù)是C程序的基本結(jié)構單位),其中至少包括一個主函數(shù)。(2)main函數(shù)可以放在任意位置,C程序總是從main函數(shù)開始執(zhí)行,在main函數(shù)中結(jié)束。⑶C程序中可以包含常量、變量、運算符和標識符。C程序的結(jié)構C語言是ー種結(jié)構化的程序設計語言,它提供了3種基本結(jié)構:⑴順序結(jié)構;⑵選擇結(jié)構;⑶循環(huán)結(jié)構。

6、結(jié)構化程序設計模塊化程序設計的思想是:按照自頂向下的原則,把問題逐層分解。即先從總體出發(fā),把問題分成若干個大塊,每一大塊代表ー個大任務;在此基礎上,再對每個大塊細化,把大任務變成若干個小任務,直到每個小任務都能用基本結(jié)構表示為止。在劃分模塊的過程中,應保證模塊的單入口、單出口、完整性和獨立性。從組織結(jié)構上看,ー個C程序可以由若干個源程序文件組成,ー個源文件可以由若干個函數(shù)及全局變量聲明部分組成,一個函數(shù)由數(shù)據(jù)定義部分和執(zhí)行語句組成。7,C程序設計步驟分析問題建立數(shù)學模型確定數(shù)據(jù)結(jié)構和算法編寫程序調(diào)試運行分析整理結(jié)果分析問題建立數(shù)學模型確定數(shù)據(jù)結(jié)構和算法編寫程序調(diào)試運行分析整理結(jié)果8、C程序的開發(fā)過程幾個相關概念:(1)程序:是ー組計算機可以識別和執(zhí)行的指令,每一條指令使計算機執(zhí)行特定的操作。(2)源程序:程序可以用高級語言或匯編語言編寫,用高級語言或匯編語言編寫的程序稱為源程序。(3)目標程序:源程序經(jīng)過“編譯程序”翻譯所得到的二進制代碼稱為目標程序。(4)可執(zhí)行程序:目標程序與庫函數(shù)連接,形成的完整的可在操作系統(tǒng)下獨立執(zhí)行的程序稱為可執(zhí)行程序。編輯(生成?c文件)ー編譯(生成?obj文件)ー連接(生成?exe文件)一執(zhí)行目標文件附:C語言中的關鍵字(32個)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile【本節(jié)例題選編】1,選擇題【例1.1】一個c語言程序是由一B_A.ー個主程序和若干子程序組成B.若干函數(shù)組成C,若干過程組成 D,若干子程序組成【例1.2】C語言規(guī)定,在一個源程序中,main函數(shù)的位置 C_A.必須在最開始 B.必須在系統(tǒng)調(diào)用的庫函數(shù)的后面C.可以任意D.必須在最后【例1.3]ー個c程序的執(zhí)行是從 DAA.本程序的main函數(shù)開始,到main函數(shù)結(jié)束B,本程序文件的第一個函數(shù)開始,到本程序文件的最后一個函數(shù)結(jié)束C.本程序的main函數(shù)開始,到本程序文件的最后一個函數(shù)結(jié)束D.本程序文件的第一個函數(shù)開始,到本程序main函數(shù)結(jié)束【例1.4】以下,C是C程序的基本結(jié)構單位A.文件 B.語句C.函數(shù) D.表達式【例1.5]以下D不是C語言的特點。A.運算符豐富 B.數(shù)據(jù)結(jié)構豐富C.可以直接訪問物理地址 D.C函數(shù)包含的語句數(shù)目沒有限制【例1.6】下列關于C語言標識符的敘述中正確的是 B。A.標識符中可以出現(xiàn)下劃線和中劃線(減號)FB.標識符中不可以出現(xiàn)中劃線,但可以出現(xiàn)下劃線C,標識符中可以出現(xiàn)下劃線,但不可以放在標識符的開頭FD.標識符中可以出現(xiàn)下劃線和數(shù)字,它們都可以放在標識符的開頭F//數(shù)字不可以【例1.7】以下幾組選項中,均為不合法標識符的是CA.A,P_0,do B.float,laO,_AC.b-a,goto,int D._123,temp,INT【例1.8】以下敘述不正確的是 D。ー個C源程序可由一個或多個函數(shù)組成ー個C源程序必須包含ー個main函數(shù)C程序的基本結(jié)構單位是函數(shù)D.在C程序中,注釋說明只能位于一條語句的后面【例1.9】以下敘述正確的是 C。A.在C程序中,main函數(shù)必須位于程序的最前面C程序的每行中只能寫一條語句C語言本身沒有輸入輸出語句D.在對ー個C程序進行編譯的過程中,可發(fā)現(xiàn)注釋中的拼寫錯誤2、填空題TOC\o"1-5"\h\z【例1.10jー個C源程序中至少應包括ー個mian函數(shù) 〇【例1.11】C程庠編譯后生成 目標 程序,連接后生成可執(zhí)行程序?!纠?.12】C語言規(guī)定,標識符只能由下劃線、字母 ヽー數(shù)字 三種字符組成,而且,第一個字符必須是 字母或下劃線 ?!纠?.13】程序的3種基本捽制結(jié)構是循環(huán) 結(jié)構、順序 結(jié)構和選擇 結(jié)構。第二章數(shù)據(jù)類型及其運算符【要點歸納】1、基本數(shù)據(jù)類型C語言的數(shù)據(jù)類型有基本數(shù)據(jù)類型和非基本數(shù)據(jù)類型之分?;绢愋兔杜e類型單精度型

基本類型枚舉類型單精度型

L雙精度型數(shù)據(jù)類型〈構造類型結(jié)構體類型〔共用體類型數(shù)據(jù)類型〈構造類型結(jié)構體類型〔共用體類型指針類型2、變量所謂變量就是在程序執(zhí)行過程中,其值可以改變的量。變量有兩個要素:變量名。每個變量都必須有一個名稱,即變量名,變量名應遵循標識符的命名規(guī)則。變量值。在程序運行過程中,變量的值存儲在內(nèi)存中,不同類型的變量,占用的內(nèi)存單元數(shù)不同。C語言是ー種強類型語言,它要求在使用數(shù)據(jù)之前對數(shù)據(jù)的類型進行說明。也就是說,在C語言中,所有變量必須先定義后使用。在定義的同時也可以進行賦初值操作,即初始化。定義變量的格式如下:[存儲類型]數(shù)據(jù)類型變量1,變量2,…;3、常量常量又稱作常數(shù),是指在程序運行過程中其值不能被改變的量。在C語言中,常量有不同的類型,如整型常量、實型常量和字符串常量等。⑴整型常量:可以是十進制、ハ進制和十六進制表示的數(shù)。十進制其形式是:d其中,d可以是從0-9的ー個或多個十進制數(shù)位,第一位不能是。。ハ進制其形式是:0d其中,d可以是一個或多個ハ進制數(shù)(0-7之間),起始〇是必須的引導符。十六進制其形式是:Oxd其中,d可以是一個或多個十六進制數(shù)(從0-9的數(shù)字,或是從”a“到“F的字母)。引導符〇是必須的,字母X可以用大寫或小寫。整型數(shù)據(jù)在內(nèi)存中是以二進制方式存放的,最高位為符號位,并以補碼表示。將一個十進制整數(shù)轉(zhuǎn)化為補碼表示的方法如下:對于正數(shù),其補碼表示與原碼相同。對于負數(shù),其補碼表示為它的反碼加1!負數(shù)的反碼為其絕對值的所有位(含符號

位)取反得到。對于用補碼表示的數(shù)據(jù),還原為原碼的方法如下:?對于正數(shù)(補碼表示的符號位為0),原碼與補碼相同。?對于負數(shù),原碼一定為負數(shù),其絕對值為除符號位以外所有位取反后加1。⑵實型常量實型常量又稱浮點型常量,是ー個用十進制表示的符號實數(shù)。實型常量表示形式有以下兩種:十進制小數(shù)表示方式?指數(shù)表示方式注:e之前必須有數(shù)字,e后面的指數(shù)必須為整數(shù)。⑶字符常量字符常量又分為字符型常量、字符串常量、轉(zhuǎn)義字符和符號常量四種類型。字符型常量字符型常量是指用ー對單引號括起來的一個字符。字符串常量字符串常量是指用ー對雙引號括起來的一串字符。轉(zhuǎn)義字符轉(zhuǎn)義字符是C語言中一種特殊形式的字符。字符形式功能5換行T擊”む工"%Fー療分為)V橫向班格(即班到下ー個,出區(qū)>^>*11\v會向跳格過格?日考。依宣ラ到前ー滅)V回車?擇學玄へ?“北ルサ/典)V走紙換頁1珊雪ぐ儀K觴列下口?條1\\反斜杠字符”ヾV單引號(鐵號)字符W1到3位8進制敷所代表的字符L 11112位16避刷效即代表的字符圖2.8各種字符格式例:'ddd三位ハ進制\xhh二位十六進制?符號常量C語言允許將程序中的常量定義為ー個標識符,稱為符號常量。例:#definePI3.14159264、運算符運算符:狹義的運算符是表示各種運算的符號。表達式:使用運算符將常量、變量、函數(shù)連接起來,構成表達式。⑴算術運算符+、ー、?、/、%注:“%”運算符的操作數(shù)只能是整數(shù)?!?”運算符的運算結(jié)果根據(jù)操作數(shù)的類型而定。⑵自增和自減運算符

++、注:自增和自減運算符只適用于單個變量,而不能用于表達式或常量。⑶賦值運算符⑷復合的賦值運算符+=、ー=、?=、/=、%=注:復合的賦值運算符只能是雙目運算符。⑸關系運算符V、<=>>、>=、==>!=⑹邏輯運算符!、&&、II⑺逗號運算符表達式1,表達式2,…⑻條件運算符c?el:e2⑼長度運算符sizeof()⑩位運算符~、&,I、“、》、?5、類型轉(zhuǎn)換⑴數(shù)據(jù)的混合運算和類型自動轉(zhuǎn)換C語言允許不同類型的數(shù)據(jù)混合運算,但此時要遵循一定的規(guī)則,將運算符兩邊的操作數(shù)轉(zhuǎn)換成共同的類型,具體轉(zhuǎn)換原則是將運算符兩邊的數(shù)據(jù)轉(zhuǎn)換成為它們之中數(shù)據(jù)最長的數(shù)據(jù)類型,以保證運算的精度不會低。double?,—floatunsignedint<—char,short⑵強制類型轉(zhuǎn)換(類型名稱)(表達式)注:(1)類型說明和表達式都需要加括號(單個變量可以不加括號);(2)無論隱式轉(zhuǎn)換,強制轉(zhuǎn)換都是臨時轉(zhuǎn)換,不改變數(shù)據(jù)本身的類型和值。6、C語言語句ー個C程序應包括數(shù)據(jù)描述(由數(shù)據(jù)聲明部分來實現(xiàn))和數(shù)據(jù)操作(由執(zhí)行語句來實現(xiàn))兩部分。C語句分為以下五類:控制語句(9種)函數(shù)調(diào)用語句表達式語句空語句復合語句7、數(shù)據(jù)輸出在C語言中可以使用printf()、putchart()、puts()等函數(shù)進行數(shù)據(jù)輸出。注:在print")語句中,是從右向左計算輸出表達式的值。8、數(shù)據(jù)輸入在C語言中可以使用scanf()、getchar(),gets()等函數(shù)進行數(shù)據(jù)輸入。注:(Dscanf()函數(shù)中沒有精度控制。⑵gets(str);與scanf("版”,str);的差別是:使用gets()函數(shù)輸入的字符串可以含有空格,而scanf("%s",str);不能輸入含空格字符的字符串。【本節(jié)例題選編】1,選擇題【例2.1]若x、i、j和k都是int型變量,則計算下面表達式后,x的值為x=(i=4,j=16,k=32)A.4B.16C.32D.52【例2.2]若有代數(shù)式翹",則不正確的C語言表達式是beA.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*3【例2.3]已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語法的表達式是A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)【例2.4】以下選項中不屬于C語言的類型的是〇A.signedshortint B.unsignedlongintC.unsignedint D.longshort【例2.5】下列定義中合法的是0A.shor_a=l-.le-1; B.doubleb=l+5e2.5;C.longdo=0xfdaL; D.float2_end=l-e-3;【例2.6】-8在內(nèi)存中的存儲形式是〇A.1111111111111000 B,10000000(XJ001000C.0000000000001000 D.1111111111110111【例2.フ】數(shù)值029是一個〇A,ハ進制數(shù) B.十六進制數(shù)C,十進制數(shù) D,非法數(shù)【例2.8】在C語言中,要求運算數(shù)必須是整型的運算符是A./B.++C.!=D?%【例2.9】以下符合C語言語法的賦值表達式是〇A.d=9+e+f=d+9 B.d=9+e,f=d+9C.d=9+e,e++,d+9 D.d=9+e++=d+7【例2.10】C語言中,關于自增自減運算符使用正確的是。A.10++B.(x+y)— C?d+++d+++d++D.++(a-b)【例2.11】設有則表達式(x++*1/3)的值是。A.3B.4C.11D.12【例2.12】已知:inti=6,j;則語句j=(++i)+(i++)后的j值是〇A.4B.14C.13D.15【例2.13】設x、y、t均為int型變量,則執(zhí)行語句:x二y=3;t=++xII++y后,y的值為A.不定值 B.4C.3D.1【例2.14】當c的值不為〇時,,以下能將c的值賦給變量a,b的是0A.c=b=a B.(a=c)II(b=c)C.(a=c)&&(b=c)D.a=c=b【例2.15】已有定義:intx=3,y=4,z=5,則表達式!(x+y)+z-l&&y+z/2的值是〇A.6B.0C.2D.1【例2.16】下列運算符中,哪個運算符的優(yōu)先級最高。A.<=B.+C.IID.>=【例2.17】在C語言中,int、char和short三種類型數(shù)據(jù)所占用的內(nèi)存是〇A.均為2個字節(jié) B.由用戶自己定義C.由所用機器的機器字長決定的 D.是任意的【例2.18】若有說明語句:charc='V72';貝リ變量cA,包含1個字符 B,包含2個字符C,包含3個字符 D.說明不合法,c的值不確定【例2.19】若有定義:inta=7;floatx=2.5,y=4.7:則表達式x+a%3*(int)(x+y)%2/4的值是ーA.2.500000B.2.750000C.3.500000D.0.000000【例2.20】設有說明:charw;intx;floaty;doublez:則表達式w*x+z-y值的數(shù)據(jù)類型為 A.floatB.charC.intD.double【例2.21】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()(inti=2;printf("%d,%d\n”,++i,-i);)A.1,1B.2,1C,1,2D.2,2【例2.22】當接受用戶輸入的含空格的字符串時,應使用的函數(shù)是。A.scanf()B.gets()C.getchar()D.getc()【例2.23】下列敘述中正確的是C語言中既有邏輯類型也有集合類型C語言中沒有邏輯類型但有集合類型C語言中有邏輯類型但沒有集合類型C語言中既沒有邏輯類型也沒有集合類型【例2.24】以下錯誤的敘述是。A.在C程序中,逗號運算符的優(yōu)先級最低B.在C程序中,APH和aph是兩個不同的變量C,若a和b類型相同,在計算了賦值表達式a=b后b中的值將放入a中,而b中的值不變D.當從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,對于實型變量只能輸入實型數(shù)值【例2.25】長整型!ong數(shù)據(jù)在內(nèi)存中的存儲形式是A.ASCII碼B.原碼C.反碼D.補碼【例2.26】字符型常量在內(nèi)存中存放的是A.ASCH碼B.BCD碼C.內(nèi)部碼D.十進制碼【例2.27】字符串常量“\\\22a,0\n”的長度是A.8 B.7 C.6 D.5【例2.28】設intx=l,y=l;表達式(Ixlly—)的值是ーA.0 B.1 C.2 D.-1【例2.29]已知:intx;則使用逗號表達式(x=4*5,x*5),x+25的結(jié)果是,變量x的值為。A.20B.100C.45D,表達式不合法【例2.30]邏輯運算符兩側(cè)運算對象的數(shù)據(jù)類型 。A.只能是〇或1 B.只能是〇或非〇正數(shù)C.可以是整型或字符型數(shù)據(jù) D.可以是任何類型的數(shù)據(jù)【例2.31I以下程序的執(zhí)行結(jié)果是〇#include<stdio.h>main(){printfC4%f\n5,,2.5+1*7%2/4);)A.2.500000B.2.750000C.3.375000D.3.000000【例2.32]若給定條件表達式(M)?(a++):(a-)1則其中表達式(M)A.和(M==0)等價B.和(M==l)等價C.和(M!=0)等價 D.和(M!=1)等價【例2.33】有以下程序:#include<stdio.h>main。{unsignedchara,b,c;a=0x3;b=aI0x8;c=b?l;printf(ut%d%d\n”,b,c);)程序運行后的輸出結(jié)果是。A.-1112B.-6-13C.1224D.11222、填空題【例2.34】若有以下定義,則計算表達式y(tǒng)+=y-=m*=y后的y值是。intm=5,y=2;【例2.35]已知intx=6;則執(zhí)行x+=x-=x*x語句后,x的值是?!纠?.36]若w=l,x=2,y=3,z=4,則條件表達式w>x?w:y<z?y:z的結(jié)果是?!纠?.37]在C語言中,ー個int型數(shù)據(jù)在內(nèi)存中占2個字節(jié),則int型數(shù)據(jù)的取值范圍為0【例2.38】要將一個16位二進制的整型變量的高8位清零,只保其留低8位,可用的方法是?!纠?.39】若x和n均是int型變量,且x和n的初值均為5,則計算表達式后x的值為,n的值為。x+=n++【例2.40】已知字母a的ASCII碼為十進制數(shù)97,且設ch為字符型變量,則表達式ch='a'+'8'-'3'的值為?【例2.41】假設m是ー個三位數(shù),從左到右用a,b,c表示各位的數(shù)字,則從左到右各個數(shù)字是bac的三位數(shù)的表達式是。【例2.42]設y為int型變量,描述“y是奇數(shù)”的表達式是=【例2.43]在scanf()函數(shù)中格式符x用于輸入〇【例2.44I若有定義:inta=2,b=3;floatx=3.5,y=2.55則下面表達式的值為(float)(a+b)/2+(int)x%(int)y【例2.45]若有定義:intb=7;floata=2.5,c=4.7;則下面表達式的值為。a+(int)(b/3*(int)(a+c)/2)%4【例2.46]若有以下程序:執(zhí)行后的輸出結(jié)果是〇#include<stdio.h>main(){intk=2,i=2,m;m=(k+=i*=k);printf("%d,%d\n”,m,i);)【例2.47]有以下程序,輸入123456789,其輸出結(jié)果是。#include<stdio.h>main(){inta,b;floatf;scanf("%2d%*2d%2d%ド,&a,&b,&f>;printf("%d,%d,%f\n”,a,b,f);)【例2.48】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()(inta,b,c;a=b=l;c=a++-l;printf("%d,%d;',a,c);c+=-a-H-+(++bII++c);printf("%d,%d\n”,a,c);)【例2.49]以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()(inti=10;printf("%d,%d,%d",i--,i?ー,i一);)1例2.50】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()inta=-32768,b;b=a-l;printf("a二%d,b=%d”,a,b);【例2.51】以下程序的執(zhí)行結(jié)果是〇#include<stdio.h>main(){intx=042,y=067,z;z=(x?2)&(y?3);printf(u%d\nM,z);}【例2.52】以下程序的執(zhí)行結(jié)果是〇#include<stdio.h>main()(intn=023;printf("%d\n",??n);)【例2.53】以下程序的執(zhí)行結(jié)果是ー#include<stdio.h>main(){intx=10,y=9;inta,b,c;a=(-x==y++)?—x:++y;b=x++;c=y;printf("%d,%d,%d\n”,a,b,c);第三章選擇語句和循環(huán)語句【要點歸納】1、if語句If語句有三種使用形式⑴單分支if語句。if(條件)語句;⑵雙分支if語句。if(條件)語句1;else語句2;⑶多分支if語句。if(〈條件1))語句1;elseif(條件2))語句2;elseif(〈條件n〉)語句n;else語句n+1;2、switch(開關)語句switch語句用于方便地從多個語句中選擇ー個或多個語句執(zhí)行。switch(〈表達式〉)(case常量表達式1:語句!;case常量表達式2:語句2;case常量表達式n:語句n;default:語句n+1;)注:表達式的值一定是整型值,若為其他類型,最后都要轉(zhuǎn)換為整型數(shù)。3、while循環(huán)語句while(條件)語句;注:先判斷條件,后執(zhí)行語句;4^do—while循環(huán)語句do語句;while(條件);注:先執(zhí)行ー次循環(huán)體,再判斷條件。While和do?while語句的差別是,后者至少執(zhí)行“語句”一次,而前者有時一次也不執(zhí)行語句。5、for循環(huán)語句for(表達式1;表達式2;表達式3)語句;注:省略各個表達式時,應能夠知道其意義。⑴“表達式1”可以省略,此時應在該語句之前給循環(huán)變量賦初值。其后的分號不能省略。⑵“表達式2”可以省略,即無判定條件,循環(huán)無終止進行下去。需要在循環(huán)體中用break等語句退出循環(huán)。⑶“表達式3”可以省略,這樣需要在循環(huán)體“語句”中讓循環(huán)變量變化,以保證循環(huán)能正常結(jié)束?!氨磉_式!"和“表達式3”可以同時省略,這樣為⑴和⑶兩種情況同時出現(xiàn),需要使用相關語句保證循環(huán)結(jié)朿。⑸三個表達式都可省略,這樣為⑵和⑷兩種情況同時出現(xiàn),需要使用相關語句保證循環(huán)結(jié)束。6、break語句b但ak語句的使用格式很簡單,由關鍵字break和分號構成,其功能如下:在switch語句中,break用來使程序流程跳出switch語句,繼續(xù)執(zhí)行switch后的語句;在循環(huán)語句中,break用來從最近的循環(huán)體內(nèi)跳出來。7>continue語句continue語句只能用于循環(huán)語句中,作用為結(jié)束本次循環(huán),即跳過循環(huán)體中尚末執(zhí)行的語句,接著進行是否執(zhí)行下一次循環(huán)的判定?!颈竟?jié)例題選編】1、選擇題(例3」]以下語句錯誤的是A.if(x>y); B.if(x=y)&&(x!=O)x+=y;C.if(x!=y)scanf("%d",&x);eslescanf("%d",&y);D.if(x<y){x++;y++;}【例3.2】C語言的if語句中,用作判斷的條件表達式為A.任意表達式 B.邏輯表達式 C.關系表達式 D.算術表達式【例3.3]為了避免在嵌套的條件語句if-else中產(chǎn)生二義性,C語言規(guī)定:else子句總是與—配對。A.縮排位置相同的if B,同一行上的ifC.其之后最近的ifD.其之前最近的if【例3.4】以下程序的輸出結(jié)果是#include<stdio.h>main(){inti=l,j=l,k=2;if((j++IIk++)&&i++)printf("%d,%d,%d\n”,i,j,k);)A.1,1,2 B.2,2,1C.2,2,2 D.2,2,3【例3.5】已知intx=10,y=20,z=30;以下語句執(zhí)行后x,y,z的值是〇if(x>y)z=x;x=y;y=z;A.x=10,y=20,z=30 B.x=20,y=30,z=30C.x=20,y=30,z=10 D.x=2O,y=3O,z=2O【例3.6】以下程序的運行結(jié)果是。main(){intm=5;if(m++>5)printf(i*%d\n,,,m);elseprintf("%d\n”,m--);)A.4 B.5C.6D.7【例3.7】以下程序的輸出結(jié)果是〇main(){inta=100,x=10,y=20,ok1=5,ok2=0;if(x<y)if(y!=10)if(!okl)a=l;elseif(ok2)a=10;a=-l;

printf(4t%d\nM,a);)A.1B.0C.-1 D,值不確定【例3.8]若へb均是整型變量,正確的switch語句是A.switch(a)(A.switch(a)(case1.0:printf("i\n”);case2:printf("you'n");}C.switch(a+b){case1:printf(Mi\nM);case2*a:printf(44you\nM);)【例3.9】對for(表達式1;;表達式3),B.switch(a)(caseb:printf("i\n");case 1:printf("you'n");)D.switch(a+b)(case1:printf("i'n’');case2:printf(4tyou\nM);)可理解為A.for(表達式1;0;表達式3) B.for(表達式1;表達式3;表達式3)C.for(表達式1;1;表達式3) D.for(表達式1;表達式1;表達式3)【例3.10】執(zhí)行以下程序段后,變量a,b,c的值分別是〇intx=10,y=9;inta,b,c;a=(—x==y++)?—x:++y;b=x++;c=y;A.a=9,b=9,c=9 B.a=8,b=8,c=10C.a=9,b=10,c=9 D.a=l,b=ll,c=10【例3.11】有以下程序段:intn=0,p;do{scnaf('4%d”,&p);n++;}while(p!=12345&&n<3);此處do-while循環(huán)的結(jié)束條件是〇A.p的值不等于12345并且n的值小于3B.的值等于12345并且n的值大于等于3p的值不等于12345或者n的值小于3p的值等于12345或者n的值大于等于3【例3.12I下面程序中循環(huán)體的執(zhí)行次數(shù)是.a=10;b=0;do{b+=2;a-=2+b;}while(a>=0);A.1 B.2 C.3D.4【例3.13】以下程序段〇x=-l;do{x=x*x;}while(!x);A.是死循環(huán) B.循環(huán)執(zhí)行二次C,循環(huán)執(zhí)行ー次 D,有語法錯誤【例3.14】以下程序的執(zhí)行結(jié)果是#include<stdio.h>main()(inta=0,i;for(i=1;i<5;i++){switch(i)(case0:case3:a+=2;a+=3;default:a+=5;))printf(t4%d\n*\a);)A.31B.13C.10D.20【例3.15】下面程序的運行結(jié)果是#include<stdio.h>main()(inty=10;do{y—;}while(—y);printf("%d\n”,y—);)A.-1B.1C.8D.0【例3.16】下面程序的功能是輸出以下金字塔圖案的是:****#include<stdio.h>main()(inti,j;for(i=l;i<=4;i++){for(j=l;j<=4-i;j++)printf("");for(j=l;j<=;j++)printf("*”);printf(4W,);在下劃線處應填入的是A.iB.2*i-lC.【例3.17】下面程序段〇for(t=l;t<=100;t++){scanf("%d”,&x);if(x<0)continue;printf(u%3d,\t);}A.當x<0時整個循環(huán)結(jié)束C.printf函數(shù)永遠也不執(zhí)行【例3.18I若w,x,y,z,m均為int型變量,w=l;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(x<z)?m:z;1B.2C.3【例3.19]請讀以下程序:main()(inta=5,b=0,c=0;if(a=b+c)printf(44***\nM);elseprintf("$$$\n”);}以上程序〇A,有語法錯誤不能通過編譯C.輸出***【例3.20】ド面程序段不是死循環(huán)的是A.inti=100;while(l)(i=i%100+l;if(i>100)break;}for(;;);intk=0;do{++k;}while(k<=0);ints=36;While(s); —s;2*i+lD.i+2B.x>=0時什么也不做D.最多允許輸出100個非負整數(shù)則執(zhí)行以下語句后的m值是,D.4B.可以通過編譯但不能通過連接D.輸出$$$【例3,21]有一堆零件(100到200之間),如果分成4個零件ー組的若干組,則多2個零件,若分成7個零件ー組,則多3個,若分成9個零件ー組,則多5個零件,下面程序是求這堆零件總數(shù),請選擇填空。#include<stdio.h>main(){inti;for(i=100;i<200;i++)if((i-2)%4==0)if(!((i-3)%7))if()

printf(6t%d,\i);)A.i%9=5 B.i%9!=5C.(i-5)%9!=0 D.i%9==5【例3.22】下面程序的運行結(jié)果是。#include<stdio.h>main。{inti;for(i=l;i<=5;i++){if(i%2)printf("*");elsecontinue;printfCが');}printf("$\n");)A.*#*#*#$ B.#*#*#*$C.*#*#$ D.#*#*$【例3.23】下面程序的運行結(jié)果是0#include<stdio.h>main()(inti,j,x=O;for(i=0;i<2;i++)(x++;for(j=0;j<=3;j++)|if(j%2)continue;X++;}X++;)printf(ux=%d\n,\x);}A.x=4 B.x=8C.x=6D.x=122、填空題【例3.24]C語言中,break語句只能用于語句和語句中〇【例3.25]當a=3,b=2,c=!時'表達式f=a>b>c的值是0【例3.26】若a=6,b=4,c=2,則表達式!(a-b)+c?l&&b+c/2的值是〇【例3.27】下列程序計算2700的偶數(shù)的累加和,請?zhí)羁铡?include<stdio.h>main()(inti,sum=0;for()sum+=i;printfCtsum=%d\n>\sum);}【例3.28】以下程序的輸出結(jié)果是#include<stdio.h>main()(intx=15;while(x>10&&x<50)(x++;if(x/3){x++;break;}elsecontinue;)printf("%d\n”,x);)【例3.29】下面程序段是找出整數(shù)的所有因子,請?zhí)羁?。scanf("%d",&x);i=l;for(;;){if(x%i==0)printf(“%3d”,i);i++;)【例3.30I下面程序段是從鍵盤輸入的字符中統(tǒng)計數(shù)字字符的個數(shù),用換行符結(jié)束循環(huán)。請?zhí)羁铡ntn=0,c;c=getchar();while(c!=AnL)if( )n++;c=getchar();)【例3.31]等差數(shù)列的第一項a=2,公差d=3,下面程序的功能是在前n項和中,輸出能被4整除的所有的和。請?zhí)羁铡?include<stdio.h>main()(inta,d,sum;a=2;d=3;sum=0;do{sum+=a;a+=d;if()printf("%d\n”,sum);}while(sum<200);)【例3.32】請讀程序:#include<stdio.h>main()(intx=l,y=O,a=O,b=O;switch(x){switch(y)(case〇:a++;break;casel:b++;break;)a++;b++;break;)printf("a=%d,b二%d”,a,b);)上面程序的運行結(jié)果是?【例3.33】以下程序?qū)斎氲末`個小寫字母,將字母循環(huán)后移5個位置后輸出,如‘a(chǎn)'變成‘f','w’變成‘b’。請?zhí)羁铡?include<stdio.h>main()charc;c=getchar();if(c>=,a,&&cv='u')elseif(c>='v'&&c<=,z,)putchar(c);)【例3.34】下面程序的功能是求出用數(shù)字0至9可以組成多少個沒有重復的三位偶數(shù)。請?zhí)羁铡?include<stdio.h>main()(intn,ij,k;n=O;for(i=l;i<=9;i++)fbr(k=O;k<=8;)if(k!=i)for(j=0;j<=9;j+4-)if()n++;printfCin=%d\n,\n);)【例3.35】下面程序的功能是輸出1至100之間每位的乘積大于每位數(shù)的和的數(shù)。請?zhí)羁铡?include<stdio.h>main()(intn,k=l,s=O,m;for(n=l;n<=100;n++)(k=l;s=0;while()(k*=m%10;s+=m%10;}if(k>s)printf("%d”,n);【例3.36】下面程序的功能是求1000以內(nèi)的所有完全數(shù)。請?zhí)羁铡?說明:ー個數(shù)如果恰好等于它的因子之和(除自身外),則稱該數(shù)為完全數(shù),例如:6=1+2+3,6為完全數(shù))#include<stdio.h>main(){inta,i,m;for(a=l;a<=1000;a4-+){for(;i<=a/2;i++)if(!(a%i))if(m==a)printf(“%4d”,a);))【例3.37】下面程序的運行結(jié)果是ー#include<stdio.h>main(){inti=l;while(i<=15)if(++i%3!=2)continue;elseprimf("%d”,i);printf(“\n”);)【例3.38】下面程序的運行結(jié)果是〇#include<stdio.h>main(){inti,j,k=19;while(i=k-l){k-=3;if(k%5=0)(i++;continue;elseif(k<5)break;printf(4*i=%d,k=%d\n,,,i,k);)【例3.39】下面程序的運行結(jié)果是〇#include<stdio.h>main(){inty,a;y=2;a=l;while(y—!=-l)(do{a*=y;a++;)while(y—);)printf("%d,%d”,a,y);)【例3.40】以下程序的功能是根據(jù)公式e=l+丄+丄+丄+…求e的近似值,精度要求為1011!2!3!請?zhí)羁铡?include<stdio.h>main(){inti;doublee,new;new=1.0;for(i=1;;i++)(new/=(double)i;e+=new;)printf(tte=%f\n,,,e);)【例3.41】下面程序的功能是打印100以內(nèi)個位數(shù)為6且能被3整除的所有數(shù)。請?zhí)羁铡?include<stdio.h>main()(inti,j;for(i=0;;i++)j=i*10+6;if()continue;primf("%d"j);))【例3.42】下面程序的功能是計算100到1000之間有多少個數(shù)其各位數(shù)字之和是5.請?zhí)羁铡?include<stdio.h>main(){inti,s,k,count=0;for(i=100;i<=1000;i++)(s=0;k=i;while()(s+=k%10; k=;}if(s!=5)elsecount++;)printf("%d”,count);)【例3.43】下面程序的運行結(jié)果是#include<stdio.h>main。{inti=5;do{switch(i%2){case4:i-break;case6:i--;continue;)-;i--;printf("%d”,i);}while(i>0);【要點歸納】1、ー維數(shù)組任何數(shù)組在使用之前必須先說明,即指定數(shù)組名稱,大小和元素類型。一旦說明了一個數(shù)組,系統(tǒng)就會為它在內(nèi)存中分配ー個所申請大小的存儲空間。⑴?維數(shù)組的說明類型說明符數(shù)組名[常量表達式];說明:①數(shù)組名是ー個地址常量,不允許對其值進行修改。②“常量表達式”表示該數(shù)組擁有多少個元素,即數(shù)組的大小,它必須是正數(shù)數(shù)。⑵-ー維數(shù)組元素的引用數(shù)組名[下標]說明:下標是某個數(shù)組元素到數(shù)組開始元素的位置偏移量;數(shù)組下標從0開始。⑶ー維數(shù)組的初始化對數(shù)組的全部元素賦初始值;對數(shù)組的部分元素賦初始值;在對數(shù)組的全部元素賦初值時,也可以將數(shù)組定義為ー個不確定長度的數(shù)組。2、二維數(shù)組⑴二維數(shù)組的說明類型說明符數(shù)組名]常量表達式1]]常量表達式2];注;①二維數(shù)組中元素的順序是:按行優(yōu)先存放,即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素,依此類推。②二維數(shù)組可看成是ー個特殊的一維數(shù)組,它的元素又是ー維數(shù)組。⑵二維數(shù)組元素的引用數(shù)組名[下標in下標2]例:intA[M][N]其元素排在第i*N+j+l個存儲位置上。⑶二維數(shù)組的初始化分行給二維數(shù)組賦初始值;按數(shù)組存儲的排列順序賦初始值;允許省略第一維長度說明來給二維數(shù)組賦初始值。3、字符數(shù)組字符數(shù)組是用來存放若干個字符的數(shù)組,其定義和引用方式與其它數(shù)組相同。4,字符串數(shù)組字符串數(shù)組的每個元素又都是ー個字符串。字符串數(shù)組是二維數(shù)組。4、字符串處理函數(shù)⑴puts(字符數(shù)組)(2)gets(字符數(shù)組)(3)strcat(字符數(shù)組1,字符數(shù)組2)⑷strcpy(字符數(shù)組1,字符數(shù)組2)(5)strcmp(字符串1,字符串2)(6)strlen(字符串)(7)strlwr(字符串)(8)strupr(字符串)【本節(jié)例題選編】1、選擇題【例4.1】以下有關C語言中數(shù)組的說法正確的是數(shù)組元素的數(shù)據(jù)類型可以不一致數(shù)組元素的個數(shù)可以不確定,允許隨機變動可以使用動態(tài)內(nèi)存分配技術,定義元素個數(shù)可變的數(shù)組D,定義一個數(shù)組后,就確定了它所容納的具有相同數(shù)據(jù)類型元素的個數(shù)【例4.2]若有說明:intaロ[3]={0,0}:則下列所述正確的是ー數(shù)組a的每個元素都可得到初值0;二維數(shù)組a的第一維的大小為4:數(shù)組a的行數(shù)為2:只有元素a[0]⑼和a⑼[1]可得到初值0,其余元素均得不到初值【例4.3】以下對ー維數(shù)組a的正確說明是0A.inta(10); B.intn=10,a[n];C.intn; D.#defineSIZE10inta[SIZE];scanf("%d”,&n);inta[SIZE];inta[n];【例4.4]若有說明:inta[3][4];則對a數(shù)組元素的正確引用是ーA.a⑵[4] B.a[l,3]C.a[l+l][0]D.a(2)(l)【例4.5】以下錯誤的語句是staticcharwordf ]={4C,;h\T,,n\,a,};staticcharword| ]={"China"};staticcharword[ ]=^^China^^;staticcharword[ ]='China';【例4.6】下面程序(每行程序前面的數(shù)字表示行號)main(){floata[10]={0.0};inti;for(i=0;i<3;i++)scanf("%d”,&a[i]);for(i=l;i<10;i++) a[0]=a[0]+a[i];printf(it%f\n",a[O]);8}A,沒有錯誤 B.第3行有錯誤C.第5行有錯誤 D?第7行有錯誤【例4.7】下面程序的運行結(jié)果是〇main()(inta|6|,i;for(i=l;i<6;i++){a[i]=9*(i-2+4*(i>3))%5;printfCt%2d",a[i]);A. -4 0 4 0 4 B. -4 0 4 0 3C. -4 0 4 4 3 D. -4 0 4 4 0【例4.8】以下對C語言字符數(shù)組的描述錯誤的是字符數(shù)組可以存放字符串字符數(shù)組中的字符串可以進行整體輸入輸出可以在賦值語句中通過輸值運算符“=”對字符數(shù)組整體賦值D.字符數(shù)組的下標從0開始【例4.9】有下面的程序段chara[3],b[]ゴChina”;a=b;printf("%s”,a);則.A,運行后將輸岀ChinaB.運行后將輸出ChC.運行后將輸出Chi D.編譯出錯【例4.10】判斷字符串s!是否大于字符串s2,應當使用?A.if(sl>s2) B.if(strcmp(sl,s2))C.if(strcmp(s2,sl)>0) D.if(strcmp(sl,s2)>0)【例4.11】已知:charcl[]={"abcd”};charc2[]={'a','b';c','d'};則下所述正確的是數(shù)組cl和數(shù)組c2等價數(shù)組cl和數(shù)組c2的長度相同數(shù)組cl的長度大于數(shù)組c2的長度以上都不對【例4.12】下面程序的運行結(jié)果是〇#include<stdio.h>main()(charstr[]ゴSSSWLIA”,c;intk;for(k=2;(c=str[k])!=,\O,;k++)(switch(c)(caseT:++k;break;case'L':continue;default:putchar(c);continue;)putcharC*');)}A.SSW*B.SW*C.SW*AD.SW【例4.13]已知:charstring1[10]=,,abcde,\string2[10]=,,xyzM:則下列C語句輸出結(jié)果是ーprintf("%d”,strlen(strcpy(stringl,string2)));A.3 B.5C.8 D.9【例4.14】有以下程序:#include<stdio.h>#include<string.h>main()(charsロゴ\nl23ド;printf(u%d,%d\n”,strlen(s),sizeof(s));)執(zhí)行后的輸出結(jié)果是A.賦初值的安符串有錯 B.6,7C.5,6 D.6,6【例4.15】下面程序的功能是將字符串s中所有的字符c刪除。請選擇填空。#include<stdio.h>main。(chars[80];intij;gets(s);for(i=j=0;sロ]!=へ(T;i++)if(s[i]!='c')s[j]=,\O,;puts(s);}A.sg++]=s[i| B.s[++j]=s[i]C.sU]=s[i];j++ D.s|j|=s[il【例4.16】以下程序的輸出結(jié)果是ー#include<stdio.h>main()(intb[3][3]={0,l,2,0,l,2,0,l,2},i,j,t=0;for(i=0;i<3;i++)for(j=l;j<=i;j++)t=t+b[i][b[j][j]];printf("%d\n”,t);)A.3 B.4C.1 D.9【例4.17】有如下程序:#include<stdio.h>main()staticinta[3][3]={{l,2},{3,4},{5,6}},i,j,s=0;for(i=0;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(u%d\n,*,s);)該程序的輸出結(jié)果是A.18 B.19C.20 D.21【例4.18】有以下程序main(){inti;for(i=0;i<3;i++)switch(i){caseI:primf(”%d”,i);case2:printf(M%du,i);default:printf(H%d';i);))執(zhí)行后輸出結(jié)果是。A)011122 B)OI2 0012020 D)1202、填空題【例4.19]若有定義:staticinta[3][4]={{1,2},{〇},{4,6,8,10}};則初始化后,a[l][2]=.,a[2][l]=?【例4.20]在C語言中,二維數(shù)組元素在內(nèi)存中的存放順序是〇【例4.21】若二維數(shù)組a有m列,則在前的元素個數(shù)為0【(列4.22】判斷字符串a(chǎn)和b是否相等,應當使用?!纠?.23】以下程序可求出矩陣a的兩條對角線上的元素之和,請?zhí)羁铡?include<stdio.h>main()(inta[3][3]={1,3,6,7,911,14,15,17),suml=0,sum2=0,i,j;for(i=0;i<3;i++)for0=O;j<3;j++)if(i==j)suml=suml+a[i][j];for(i=0;i<3;i++)for(;;j-)if((i+j)==2)sum2=sum2+a[i][j];printf(4*suml=%d,sum=%d\n,,,sum1,sum2);)【例4.24】設數(shù)組a包括10個整型元素,下面程序的功能是求出a中各相鄰兩個元素的和,并將這些和存在數(shù)組b屮,按每行3個元素的形式輸出。請?zhí)羁铡[10],b[10],i;for(i=0;i<10;i-H-)scanf("%d”,&a[i]);for(;i<10;i++)for(i=l;i<10;i-H-){prinlf("%3d”,b[i]);if(==0)printfC4\nM);)1【例4.25】下面程序中的數(shù)組a包括10個整數(shù)元素,從a中第二個元素起,分別將后項減前項之差存入數(shù)組b,并按每行3個元素輸出數(shù)組b,請?zhí)羁铡ain()(inta[10],b[10],i;for(i=0;;i++)scanf("%d”,&aロ]);for(i=l;;i++)b[i]=a[i]-a[i-l];for(i=l;i<10;i++){printf(“%3d”,b[i]);>f()printf('ゝn");}}【例4.26】以下程序可求出所有的水仙花數(shù),(提示:所謂水仙花數(shù)是指一個三位正整數(shù),其各位數(shù)字的立方之和等于該正整數(shù)。例如:407=4*4*4+0*0*0+7*7*7,故407是ー個水仙花數(shù))請?zhí)羁铡ain()(intx,y,z,a[8],m,i=0;printf('Thespecialnumbersare(inthearrangeof1000:\n),,);for(;m++){x=m/100;y=;z=m%10;if(x*100+y*10+z==x*x*x+y*y*y+z*z*z)i++;}for(x=0;x<i;x++)printfC%6d”,a[xD;)【例4.2フ】下面程序的功能是生成并打印某數(shù)列的前20項,該數(shù)列第!,2項分別為。和1,以后每個奇數(shù)編號的項是前兩項之和,偶數(shù)編號的項是前兩項差的絕對值。生成的20個數(shù)存在ー維數(shù)組x中,并按每行4項的形式輸出,請?zhí)羁?。main()(intx[21],ij;x[l]=0;x[2]=l;i=3;do{x[i]=.x[i+l]=;}while(i<=20);for(i=l;i<=20;i++)(printf("%5d”,x[iD;if(i%4==0)printf(4S\nM);}1【例4.28】や面程序的功能是輸入5個整數(shù),找出最大數(shù)和最小數(shù)所在的位置,并把二者對調(diào),然后輸出調(diào)整后的5個數(shù)。請?zhí)羁?。main()(inta(5],max,min,i,j,k;for(i=0;i<5;i++)scanf("%d”,&a[i]);min=a[0];for(i=l;iv5;i++)if(a[i]<min)(min=a[i];max=a[0];for(i=l;i<5;i++)if(a|i]>nax)max=a[i];printf(4t\nThepositionofminis:%3d\n”,k);printf(AnThepositionofmaxis%3d\nM,j);for(i=0;i<5;i++)printf("%5d”,a[i]);}【例4.29】下面程序的運行結(jié)果是main()(inti,f[10];f|O]=f[l]=l;for(i=2;i<10;i++)f[i]=f[i-2]+f[i-l];for(i=0;i<10;i++)(if(i%4==0)printfCへn");printf("%3d”,f[i]);})【例4.30】設數(shù)組a中的元素均為整數(shù),以下程序是求a中偶數(shù)的個數(shù)和偶數(shù)的平均值。請?zhí)羁?。main()(inta[10]={1,2,3,4,5,6,7,8,9,10};intk,s,i;floatave;for(k=s=i=0;i<10;i++)(if(a[i]%2!=0)s+=;k++;}if(k!=O){ave=s/k;printf(t4%d,%f\n,,,k,ave);)【例4.31】當從鍵盤輸入18并回車后,下面程序的運行結(jié)果是.main()(intx,y,i,a[8],j,u,v;scanf(t4%d*\&x);y=x;i=0;do{u=y⑵a[i]=y%2;i++;y=u;}while(y>=l);for(j=i-l;j>=0;j-)printf("%d'',a|jD;}【例4.32]下面程序的功能是檢査一個二維數(shù)組是否對稱(即:對所有i和j都有請?zhí)羁铡ain()(inta[4][4]={1,2,3,42,2,5,6,3,5,3,7,4,6,7,4};inti,j,found=0;for(j=0;j<4;j++)for(;i<4;i++)if(aU][i]!=a[i]|j])break;)if(found)printf("NO”);elseprintf(“YES”);)【例4.33】以下程序是求矩陣a,b的乘積,結(jié)果存入矩陣c中并按矩陣形式輸出。請?zhí)羁?。main()(inta[3M2]={2,?l,40,3,1};intb[2M2)={7,-9,?8,10};intijjc,s,c[3][2];for(i=0;i<3;i++)for(j=0;j<2;j++)(for(;k<2;k++)s+=;c[i][j]=s;)for(i=0;i<3;i++)(for(j=0;j<2;j++)printfC*%6d'\c[i]U]);))【例4.34】下面程序的功能是求出矩陣x的上三角元素之積,其中矩陣x的行、列數(shù)和元素值均由鍵盤輸入,請?zhí)羁铡?defineM10main()(intx[M][M];intn,ij;longs=l;printf(44Enterainteger(<=10):\n^);scanf("%d”,&n);printf(4*Enter%ddataoneachlineforthearrayx\n",n);for()for(j=O;j<n;j++)scanf("%ザ,for(i=0;i<n;i++)for() ,prinlf("%ld\n”,s);}【例4.35】下面程序的運行結(jié)果是〇#include<stdio.h>main()(chara[2][6]={,,SunVMoon,,J;intij,len[2];for(i=0;i<2;i++)(for(j=0;j<6;j++)if(a[i][j]=='、0'){len[i]=j;break;)printf("%6s:%d\n”,a[i],len[i]);))【例4.36】下面程序的運行結(jié)果是.#include<stdio.h>main(){inti=5;charc[6]=''abcd”;do{c[i]=c[i-l];}while(—i>0);puts(c);1【例4.37】下面程序的運行結(jié)果是。#include<stdio.h>#defineLEN4main()(intj.c;staticcharn⑵[LEN+1]={"898〇”,"9198”};for(j=LEN-l;j>=0;j-){c=n[O][j]+n[l][j]-2*'O,;n[0][j]=c%10+,0,;}for(j=0;j<=l;j++)puts(n[j]);)【例4.38】下面程序的功能是將字符串a(chǎn)中下標值為偶數(shù)的元素由小到大排序,其它元素不變。請?zhí)羁铡?include<stdio.h>main()(chara[]=,,labchmfye,,,t;intij;for(i=0;i<7;i+=2)fbr(j=i+2;j<9;)if(){t=a[i];a[i]=a[j];a[j]=t;}puts(a);printf(^^\n^^);)【例4.39】有十個字符串,下面程序的功能是在每個字符串中,找出最大字符按ーー對應的順序存入ー維數(shù)組a中,即第i個字符串中的最大字符放入a[i]中,輸出每個字符串中的最大字符。請?zhí)羁铡?include<stdio.h>main()(chars[10][20];inta[10],i,j;for(i=0;i<10;i++)gets(s[i]);for(i=0;i<10;i++)forG=l;s[i]|j]!=AO\j++)if(叫vs口田])}for(i=0;i<10;i++)printf("%d%c9\i,a[i]);}【例4.40]若從鍵盤輸入52,則下面程序的運行結(jié)果是main()(inta[8]={6,12,l8,42,44,52,67,94);intlow=0,high=7,mid,found=0,x;scnaf("%d”,&x);while((low<=high)&&(found=0))(mid=(low+high)/2;if(x>a[mid])low=mid+l;elseif(x<a[mid])high=mid-l;else(found=1;break;)}if(found=l)printf("Searchsuccessful!Theindexis%d:\n”,mid);elseprintf("Can'tsearch!\n,5);}【例4.41】下面程序的運行結(jié)果是〇#include<stdio.h>main()charc,s[]=,,ABCCDAM;intk;for(k=l;(c=s[k])!=,\O,;k++)(switch(c)(case'A':putchar('%');continue;caseB:++k;break;default:putcharC**);case'C':putchar(t&,);continue;)putchar(‘#');)}【例4?42]下面程序的運行結(jié)果是〇#include<stdio.h>main()(inti=0;chara[]ゴabm",b[]=''aqid”,c[10];while(a[i]!=,\0,&&b[i]!=,\0,){if(a[i]>=b[i])c[i]=a[i]-32;elsec[i]=b[i]-32;++i;)c[i]=>\0,;puts(c);)【例4.43】程序填空,以下程序用于統(tǒng)計字符串中最長単詞的長度及其在字符串中的位置,其中單詞全由字母組成。#include<stdio.h>intalph(charc){if((c>='a'&&c<='z')II(c>='A'&&c<='Z'))elsemain()staticcharstring1|={'*1amh叩py."};intlen=O,i,length=O,flag=l,p,pl;for(i=0;;i++)if(alph(string[i]))if(flag)(pl=i;; /?將取位置標記flag置為0*/len++;)else; /?單詞長度增1*/else{flag=l;if(len>length)/?將最大單詞長度放入!ength*/Ilength=len;p=pl;)Len=0;)printf("最長的單詞:つ;for(i=p;i<p+length;i++)printf("%c”,stringロ]);printf('へrT);)【例4.44]有以下程序,執(zhí)行后輸出結(jié)果是〇#include<stdio.h>main(){inta[4H4]={{123?4},{0,.12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};inti,j,s=O;for(i=0;i<4;i++)(for(j=0;j<4;j++){if(a[i]UJ<0)continue;if(a[i][j]==O)break;s+=a[i]Q];printf("%d\n”,s);)【例4.45】下面程序?qū)⒍S數(shù)組a的行和列元素互換后存到另一個二維數(shù)組b中,請?zhí)羁铡ain()(inta[2][3]={{l,2,3},{4,5,6});intb[3][2],i,j;printf(*'arraya:\n");for(i=0;i<=l;i++){for(j=0;;j++){printf("%5d”,a[i][jD;}printf('へn");)printf("arrayb:\n");for(i=0;;i++)(for(j=0;j<=l;j++)printfC4%5d,\b[i][j]);printf(’ヘn");})[例4.46]下面程序的運行結(jié)果是〇main(){inta[6][6],i,j;for(i=l;i<6;i++)for(j=l;j<6;j++)a[i]U]=(i/j)*G/i);for(i=l;i<6;i++)(for(j=l;j<6;j++)printf("%2d”,a國5);printf("\n");))【例4.47]ド面程序的功能是從鍵盤上輸入一個大寫字母,要求按字母的順序打印出3個相鄰的字母,指定的字母在中間.若指定的字母為Z,則打印YZA;若指定的字母為A則打印ZAB.請?zhí)羁?#include<stdio.h>main()chara[3],c;inti;c=getchar();a[l]=c;if(c==Z*)(a[2]=A,;elseif(c=,A,){a[O]=Z;elsefor(i=0;i<3;i++)putchar(a[i]);}【例4.48】下面程序的運行結(jié)果是.#include<stdio.h>main()(inti,r;charsl[8O]="bus";chars2[80]=,,book,\for(i=i^O;s1[i]!=,\0,&&s2[i]!=,\O,;i++)if(sl[i]==s2[i])i++;else(r=sl[i]-s2[i];break;}printf(,,%d,\r);)【例4.49]下面程序的運行結(jié)果是.#include<stdio.h>main()inta[9]={0,6,12,18,42,44,52,67,94);intx=52,i,m,n=9;i=n/2+1;m=n/2;while(m!=O)(if(x<a[i]){i=i-m/2-l;m=m/2;}elseif(x>a[i]){i=i+m/2+l;m=m/2;)elsebreak;}printffTheindexis:%d”,i);)【例4.50】下面程序的運行結(jié)果是.#include<stdio.h>main()(charaロゴmorning”4;inti,j=O;for(i=1;i<7;i++)if(a[j]<a[i])j=i;t=a[j];a[j]=a[7];a[7]=t;puts(a);)【例4.51]下面程序的功能是將二維數(shù)組a中每個元素右移一列,最右一列換到最左一列,移后的數(shù)組存到另ー數(shù)組b中,并按矩陣形式輸出b。請?zhí)羁?。main(){inta[2][3]={4,5,6,l,2,3},b[2][3];inti,j;printf(*'arraya:\n");for(i=0;i<=l;i++)for(j=l;j<3;j++)for(;i++)b[i][0]=a[i][2];printf(4tarrayb:\n“);for(i=0;i<2;i++){for(j=0;j<3;j++)printf('l%5d",b[i][j]);【例4.52】從鍵盤輸入一行句子,統(tǒng)計其中單詞的個數(shù),補充程序使之完整ユ#include<stdio.h>main()(chars[80];inti,num=O;gets(s);while(s[i]!=,\O,)(if((i==O)&&(s[i]!=,4))num++;elseif(&&)num++;i++;)printfC6num=%d,,,num);)[例夂53]下列count函數(shù)用于計算子串substr在母串st『中出現(xiàn)的次數(shù)。intcount(char*strTchar*substr)(intx,y,z;intnum=0;for(x=O;str|x]!==;x++)for(y=,z=0;substr[z]==str[y];z++,y++)if(substr[]=ニへ。')(num++;break;)return();}【例4?54]下面程序的運行結(jié)果是。#include<stdio.h>main()(intij;staticinta|10]={1,14,1,1,1,1,1,1,1);for(i=0;i<l0;i++)for(j=0;j<i;j++)a[i]=a[i]+a[j];for(i=0;i<10;i++)printfC'%d",a[i]);printf(ヽ”);)第五章指針【要點歸納】1、指針變量在C語言中允許用ー個變量來存放指針,這種變量稱為指針變量。在C語言中,提供了兩種指針運算符:*:取指針目標運算符&:取地址運算符2、指針的說明和初始化指針說明的一般形式如下:數(shù)據(jù)類型?指針名;說明:與普通變量不同的是,說明指針時指定的數(shù)據(jù)類型并不是指針變量本身的數(shù)據(jù)類型,而是其目標的數(shù)據(jù)類型。無論目標數(shù)據(jù)類型如何,所有指針都是具有相同格式的地址量,隨著機器硬件不同,地址量的數(shù)據(jù)箕度也丕(可員指針初始化的一般形式如下:數(shù)據(jù)類型?指針名=初始地址值:說明:指針初始化的過程是:系統(tǒng)按照給出的數(shù)據(jù)類型,在ー定的存儲區(qū)域為該指針分配存儲空間,同時把初始值置入指針的存儲空間內(nèi),從而該指針就指向了初始地址值所給定的內(nèi)査空回ユ3、指針運算⑴指針與整數(shù)的加減運算C語言的地址計算規(guī)定,ー個地址量加上或減去ー個整數(shù)n,其計算結(jié)果仍然是ー個地址量,它是以運算量為基點的前方或后方第n個數(shù)據(jù)的地址。對于目標類型為type的指針p,p+n表示的實際位置的地址值是:p-i-n*sizeof(type)〇⑵指針相減在C語言中,兩個地址量相減,并非它們的兩個地址值之間直接做減法運算,兩個指

溫馨提示

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

評論

0/150

提交評論