C程序復(fù)習(xí)綱要_第1頁
C程序復(fù)習(xí)綱要_第2頁
C程序復(fù)習(xí)綱要_第3頁
C程序復(fù)習(xí)綱要_第4頁
免費預(yù)覽已結(jié)束,剩余187頁可下載查看

下載本文檔

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

文檔簡介

C語言復(fù)習(xí)提綱弟ー單.程序設(shè)計語言:機器語言、匯編語言、髙級語言。.髙級語言翻譯成機器語肅的兩種方式:編譯方式、解釋方式。.算法+數(shù)據(jù)結(jié)構(gòu)=程序.結(jié)構(gòu)化程序設(shè)計的二種基本結(jié)構(gòu):順序結(jié)構(gòu)、分支(選擇)結(jié)構(gòu)、循環(huán)結(jié)構(gòu).算法的表示方法:自然語言、傳統(tǒng)的程序流程圖、N-S流程圖。.結(jié)構(gòu)化程序設(shè)計的32字原則:.C語言的產(chǎn)生及發(fā)展:UNIX操作系統(tǒng).C語言的特點P]3頁:.C語言由函數(shù)組成,有且僅有一個main函數(shù)。.函數(shù):說明部分、函數(shù)體。.?條復(fù)雜語句分行內(nèi)寫,用反斜杠(ヽ)續(xù)行。.注釋用/* */第二章.單字符輸入/出:getchar(),putchar(字符變量)。.字符串:gets(字符數(shù)組名)、puts(數(shù)組名)。式化輸入:scanf(“格式控制符”,地址列表);格式控制符:枇、加、%〇、%x、%s、%f若輸入long型、double型應(yīng)加1,如%Id、%lo、%lf格式治輸入字符串不包含空格,IL対應(yīng)地址表列是字符數(shù)組名。默認分隔符:空格、回車、Tab鍵(也可按域?qū)捊厝。└袷娇刂品g不宜加其它字符,如加入其它字符,輸入時應(yīng)原樣輸入,否則數(shù)據(jù)接收錯誤。如:scanf("%d,%d”,&a,&b);輸入數(shù)據(jù)時兩數(shù)據(jù)間要有逗號:scanf("%d刎",&a,&b);%d間有兩個空格,則輸入數(shù)據(jù)時至少有兩個空格。輸入函數(shù)中%!?格式不能帶小數(shù),如:scanf(“%7.2f”,&a)是錯誤的。機格式輸入單字符,空格字符和轉(zhuǎn)義字符都作為有效字符接收。%*d表示跳過它對應(yīng)的輸入數(shù)據(jù)。式化輸出:printf(“格式控制符”,輸出列表);格式控制符部分可加入其它字符,原樣輸出。如:提示語或使輸出結(jié)果清楚顯示輸出列表:可以是變量、常最、表達式、函數(shù)調(diào)用等。轉(zhuǎn)義字符:P19頁,以斜杠(ヽ)開始,作為一個字符,如求字符串長度:Mjk\\gk\bl\Ok\nlj".長度為7。注意:輸出longヽdouble型數(shù)據(jù),用%Id、%lf可設(shè)定輸出寬度,m和n,如:%5d、%6.2f、%.2f

? 負號表示域內(nèi)向左對齊,如:%-12d第三章.常量:整型常量:235、0235、-0x235(前可加負號),長整型:-121、ー0651、0x551等。實型常量:小數(shù)形式、指數(shù)形式。字符常量:用單引號,如'c'(注意轉(zhuǎn)義字符)。字符串常量:用雙引號,如“hglhg"、“a”,內(nèi)存占用為實際長度加1。符號常量:無參宏(#define)。.變量:標識符命名規(guī)則:4條(P37頁)。各種類型變量的長度。數(shù)據(jù)類型轉(zhuǎn)換:自動、強制。注:強制類型轉(zhuǎn)換只得到所需類型的結(jié)果值,原變量或表達式的類型仍為原類型。如(float)(x+y).各種運算符運算規(guī)則及貝?優(yōu)先級P51頁。.補充-ー邏輯表達式的優(yōu)化運算:&&運算:只要算出第一個表達式為〇,第二個表達式不再運算。I運算:只要算出第一個表達式為1,第二個表達式不再運算。如:inti=0,j=0,a=6;if((++i>0)I(++j>0)) a++;printf(%d%d%d'*,i,j,a):結(jié)果i為1,j為0,a為7。5.其它運算符:條件運算、逗號運算、長度運算符(形式:sizeof 表達式或size”(數(shù)據(jù)類型))第四章l.if、while,for中的表達式,一般是邏輯或關(guān)系表達式,也可以是任意類型表達式。如while(a=5)2.如果有多條語句,必須用大括號括起,構(gòu)成復(fù)合語句。.switch語句中case后面只能是常量值:若執(zhí)行完某case后的語句沒遇到break,則繼續(xù)執(zhí)行下ー個case語句。.循環(huán)程序:注意循環(huán)變量的初值、修正值、循環(huán)條件等,以及循環(huán)中用到的某些變量賦初值,如求累加和變量。5.?般是先判斷條件,再執(zhí)行循環(huán)體;但do—while語句是先執(zhí)行一遍循環(huán)體,再判斷條件。.break>continue語句。.本章キ:要是算法構(gòu)思。(先考慮好需要那些變量,即數(shù)據(jù)結(jié)構(gòu),再考慮怎樣求解問題)第五章.數(shù)組定義:inta[10]:或inta[N](N需要事先定義為符號常悟::SdefineN10);

數(shù)組長度必須是常值,不能是變量,可以是在程序開始前定義的符號常外:,進行長度定義。.下標引用:0、ヽー1,切記不能引用到N。(inta[5]i a[5]=10i這種引用是錯誤的).數(shù)組初始化時可省略長度定義..數(shù)組定義后如沒有給任何一個元素賦初值,對于static類型,各元素初值為0;對于auto類型,各元素值不定。.數(shù)組不能整體賦值。數(shù)組中各元素值的輸入/出,應(yīng)使用循環(huán)程庁逐個輸入/出;字符數(shù)組例外(gets,puts)。.數(shù)組中的兩種排序方法:ノ泡法:外循環(huán)為i=0;i〈nT;內(nèi)循環(huán)為j=0; 循環(huán)中比較a[j]和a[j+l]兩個元素,并互換。(考試內(nèi)容)選擇法:外循環(huán)為i=0;i〈n-l;內(nèi)循環(huán)為j=i:j<n:內(nèi)循環(huán)開始前,先賦初值min=i:循環(huán)中比較a[min]和a[j]兩個元素,不互換,只讓min=j:內(nèi)循環(huán)結(jié)束后再進行互換,a[i]和a[min]互換。(不做考試內(nèi)容,但是希望同學(xué)們記住這種好的排序方法).二維數(shù)組:按行存放;賦初值的5種情況P83頁。.字符數(shù)組:通常定義較長長度,如:chars[50]!通常用于存放字符串,結(jié)朿標志為、?!?。可用字符串常量為其初始化,如:chars[]="sdkhg"! 也可由鍵盤輸入,如gets?;輸出用puts(s);注意:chars[5]={'a'd'f'g'w'}:此種形式不是字符串,無字符串結(jié)束標志,僅僅是普通一維字符數(shù)組,不能用puts輸出,只能用へc格式逐個輸出。字符數(shù)組的輸入/出還有兩種形式:配、%s..字符串函數(shù):strcpy(si,s2)、strcat(si,s2),strcmp(sl,s2),strclen(s),strupr(s),strlwr(s)第六章.函數(shù)定義:int func(inta,inty);如定義時沒指明函數(shù)類型,如:fun(inta);默認是int型,返回值不確定。.聲明:函數(shù)定義在前,使用在后,可省略函數(shù)聲明,反之需要在使用前聲明。函數(shù)聲明的幾種變通形式。?函數(shù)聲明后加分號,而函數(shù)定義后沒有分號。.函數(shù)調(diào)用:函數(shù)名(實參表);實參與形參個數(shù)、類型、位置一致。形參與實參占據(jù)不同的存儲單元;形參只在函數(shù)調(diào)用時オ為其分配存儲單元,函數(shù)調(diào)用結(jié)束后釋放。實參與形參之間是傳值調(diào)用,單向傳遞關(guān)系,形參值改變,不會影響實參值。補充:函數(shù)可嵌套調(diào)用,不可嵌套定義。嵌套調(diào)用:ー個函數(shù)內(nèi)部又調(diào)用另外一個函數(shù)。遞歸調(diào)用:ー個函數(shù)調(diào)用它自身。(考試不作要求)

.數(shù)組作為函數(shù)參數(shù):void func(inta[],intn);?傳遞的是實參數(shù)組的首地址。調(diào)用時實參是數(shù)組名,如func(a,10);.多維數(shù)組:voidfunc(inta[][5],intn);(可省略第一維,但不能省略其它高維)。.從作用域角度,變量分為:—、我部變量.局部變量:在函數(shù)內(nèi)制定義,只能在該函數(shù)中使用,包括函數(shù)的形參和復(fù)合語句中定義的變量,main函數(shù)中定義的變量也是局部變量,不能被其它函數(shù)使用。不同函數(shù)內(nèi)定義的同名變量,互不影響,因其作用域不同,內(nèi)存空間獨立。全局變量:在函數(shù)外就定義,作用域從定義開始到本文件結(jié)朿。其間的所有函數(shù)都可以使用它,可在各函數(shù)間傳遞值,但容易帶來副作用,降低模塊獨立性。.變量的存儲類別:auto、static、register,extern.局部變量的存儲類別:auto、static,register.auto型的生存周期時函數(shù)被調(diào)期間,兩次調(diào)用之間不保留值。voidfunc(intn){staticinta=l;a+=n;printf("%d,”,a);}main(){intb=2;func(b);func(b);}程序運行結(jié)果為3,5,voidfunc(intn){staticinta=l;a+=n;printf("%d,”,a);}main(){intb=2;func(b);func(b);}程序運行結(jié)果為3,5,.全局變量的存儲類別:static、extern.全局變量總是存放在靜態(tài)存儲區(qū)間,生存期是整個程序運行期間,只賦ー次初值,在程序運行前初始化,默認初值為0。用extern對全局變量加以ナ明,可以將其作用域擴充到整個文件或其它文件。例:P113頁、P”4頁。定義全局變量時加上static,可將其作用域限制在本文件中,不能被其它文件使用.例:P114頁。.函數(shù)的作用域是全局的,可被其它函數(shù)調(diào)用。.函數(shù)存儲類別:static,extern,默認為extern型。#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+l):printf(n%d\n,',a);)替換后的表達是為a=++k+l*k+l?#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+l):printf(n%d\n,',a);)替換后的表達是為a=++k+l*k+l第七章1.預(yù)處理命令以“ザ開頭,末尾不加分號。在程序編譯之前處理。2。宏替換:將函數(shù)中出現(xiàn)左片的地方用宏體進行替換。?宏體可以是數(shù)字、也可以是組成C表達式或語句的其它字符,還可以引用已定義的其它宏名。

宏的作用域:定義宏之后到本源文件結(jié)束,可用#undef提前結(jié)束。無參宏(符號常量):#definePI3.14注意:函數(shù)中雙引號內(nèi)的宏名不替換,如print”"PI”);有參宏:define宏名(形參表) 宏體引用:宏名(實參表)注意有參宏如果宏偉和;我沒用括號括起,可能有副作用。. 分析有參宏的程序時,必須先將宏替換后的表達式寫到紙上,再分析結(jié)果.文件包含:ttinclude〈文件名〉搜索系統(tǒng)標準目錄ftinclude "文件名”先搜索當(dāng)前目錄,找不到再搜索系統(tǒng)標準目錄第八章.指針的基本概念:指針三地址:.指針常量:某已知變量的地址,或數(shù)組名等,:inta,b[5]!此時&a和b就是指針常量(固定值)。.指針變量:如inta,*p=&a;chars[9],*q=s:? 賦值:必須賦地址值,如inta,*p:p=&a;如p=2001;是錯誤的。.間接訪問:*p-5Z等同于"5;.指針作為函數(shù)的參數(shù),傳遞的是實參變量的地址,如:voidfunc(int*p)? 調(diào)用時用某變量的地址常量,或指向該變■的指針作為實參,如主調(diào)函數(shù)中有定義inta,*q:q=&a:則可用&a或q作為實參進行調(diào)用,即func(&a);或func(q): 都是將變量a的地址傳遞給形參指針p,使指針p指向變Qa,函數(shù)中使用?p就是對a的間接訪問,就可以改變a的值,或者將結(jié)果放入a中。但形參變量本身改變,反過來不會影響實參指針值。.指針與一維數(shù)組:inta〔10〕,*p=a:則a代表數(shù)組濘地址,是指針常鼠,元素的表示方法:a[i]>*(a+i)、p[i]>*(p+i)元素地址:&a[i],a+i、&p[i]、p+I區(qū)別:a實指針常量,只不能變,而p是指針變量,可進行增減運算:所以常通過p的增減運算來快速訪問數(shù)組a,如:while(p<a+5) scanf("%d”,p++):或while(p〈a+5){(*p)++;printf(**%d,",*p++);}理解(*p)++、?p++、*(p++)、p++的含義。執(zhí)行P++后指針撥動的單元數(shù)(由元素類型決定)7.ー維數(shù)組作為函數(shù)形參,實際上就是ー個指針變量,如:func(inta[],intn);等同于func(int*a,intn);? 函數(shù)聲明的兒種變通形式,P144頁。

? 所以指針a在函數(shù)中值可以改變,如?a++,不同于函數(shù)內(nèi)定義的數(shù)組如:intb[5]5這里b是指針常量。.指針與字符串:char*p,s[50]=Mfdjfjdfjw;p=s;? 可用P間接訪問字符串,如指針法:for(;*p!=、0';p++)或下表法:for(i=O;p[i]!=ヘ0';i++).指針形參在函數(shù)間傳遞字符串:voidcopy(char*sl,char*s2){while(*sl++=*s2++);}調(diào)用時用‘,:符數(shù)組名或指向某’ア符串的指針做實參,如:char*p="sdgygkh”;charss[50];func(ss,p);函數(shù)調(diào)用的靈活形式:func(ss+2,p)或func(ss,p+2)注意:輸入字符串常用gels函數(shù),但參數(shù)應(yīng)是字符數(shù)組名,或已指向某字符數(shù)組的指針,如:chars[50],*p;gets(s):是正確的,而gets(p)是錯誤的,因為p沒被賦地址值,無任何指向。改正:p=s;gets(p);注意:以下的10、11、12、13節(jié)所列內(nèi)容不作期末考試要求,但是等級考試要考,同學(xué)們?nèi)绻n下有時間最好看看.數(shù)組指針與多維數(shù)組:inta[3][4];int(*p)[4];p=a;P指向a的整行,此時?p就代表a[0];如果執(zhí)行p++,則p指向下一行,即?p代表a[l],p跳過單元數(shù)為2*4=8個字節(jié)。引用元素的兩種形式:P式][j]或(坤)[j]兒個等價關(guān)系式:由x[i]等價于?(x+i)和&x[i]等價于x+i得出:等價(*(a+i))[j]等價*(a[i]+j)等價*(*(a+i)+j)&a[i][j]等價*(a+i)+j等價a[i]+j指針形參在函數(shù)間傳遞多維數(shù)組:intfunc(int(*b)[4],intn):等價于intfunc(intb[][4],intn);調(diào)用時用二維數(shù)組名做實參,如:func(a,3):11.指針數(shù)組:char*s[3]:表示數(shù)組s有3個元素,每ー個元素都是ー個指針變吊,都可以指向ー個字符串。賦初值:char*s[3]={“sdgg“,“ww“,"q"};或單獨賦值:s[0]="sdgg”;s[l]="ww":s[2]="q";用于指向多個字符串。也可用字符數(shù)組存儲多個字符串,只是占用內(nèi)存空間大。.指向指針的指針:二級指針,char**p:? 用于訪問指針數(shù)組,或在函數(shù)間傳遞指針數(shù)組,通常就是傳遞多個字符串。.char*s[3]={"sdgg","ww","q*};char**p;p=s;? p指向數(shù)組s的首地址,此時?p代表s[0],即指向第0個字符串,*p和s[0]都是第。個字符串的首地址,? 可用gets(*p)或gets(p[i])來輸入字符串,用puts(*p)或puts(p[i])來輸出字符串。? 在函數(shù)間傳遞多個字符串的參數(shù)形式:func(char**s,intn)或func(char*s[],intn)或func(chars[][],intn)

?總結(jié):1、通常在主調(diào)函數(shù)中定義指針數(shù)組指向多個字符串。2、函數(shù):func(char**s,intn)或func(char*s[],intn)傳遞多個字符串首地址:3、在函數(shù)內(nèi)的使用形式:s[i]或?(s+i),都代表第i個串首地址,或?s++;4、一般都是整串操作,循環(huán)一般使用字符串個數(shù)進行控制,如:for(i=0;i<n;i++){s[i]……}?字符串操作函數(shù):strlen()>strcpy()>strcmpO.返回指針值的函數(shù):char*func(char*s,charch)?切記:返回的是地址,在主調(diào)函數(shù)中應(yīng)使用指針類型變量接收函數(shù)返回值,如:char*p,a[]="asdgg“; p=func(a,'d');.動態(tài)內(nèi)存分配:掌握malloc函數(shù)的使用方法。第九章.結(jié)構(gòu)體:ss'uct,.定義的幾種形式P177頁。成員可以是任意類型。成員引用:」.」 .占用內(nèi)存大小為:各成員占用內(nèi)存之和。結(jié)構(gòu)體數(shù)組:同普通數(shù)組?樣使用。初始化時注意雙重括號。結(jié)構(gòu)體指針:(*p).成員名或Pー〉成員名只能用結(jié)構(gòu)體變量地址賦值,不能賦某成員的地址,如:p=&;是錯誤的。通常定義變量或形參時必須加上slrucl,如:voidfunc(structstudent*p){structstudenta[4],temp; }.共用體:union,定義形式同結(jié)構(gòu)體。成員引用:共用體變卄名,成員名占用內(nèi)存大小為:共用體中較長的成員的長度。某?時刻只有?個成員起作用,最后?個存放的成員值有效。結(jié)構(gòu)體類型與共用體類型可互相嵌套使用,即結(jié)構(gòu)體成員的類型也可以是共用體類型,反之亦然。.枚舉類型:如:enumweek{sun,mon,tues,wen,thur,fri,sat}day;枚舉元素就是枚舉變量的可能取值,如:day-mon;枚舉元素視為常量,其值就是序號(0"n-1)〇也可以在定義時改變其值,如:enums{a=3,b=l,c=2};.類型標識符自定義:typedcf如:typedefintINTEGER;typedefstruct{ }STU:typedefintARR[10];以后可直接使用INTEGER、ARR、STU類型進行變量定義,書寫簡略。?注意:只能為類儀另起新名,不能創(chuàng)造新類型,也不能為變量或函數(shù)重新命名(define)〇第十章文件.流式文件:文本文件、二進制文件.? 文本文件:若干字符序列,較長,可用type命令或記事本査看。

?二進制文件:若干字節(jié)序列,短,存取速度快,不能用type或記事本等查看。.文件操作:讀操作、寫操作。使用有關(guān)文件函數(shù)來完成,需包含頭文件stdio.h.操作步驟:①定義文件類型指針②打開文件③檢測指針④讀/寫 ⑤關(guān)閉文件。.打開文件時的使用方式各6種,P207頁。5.讀/寫函數(shù):fgetc(fp)、fputc(ch,fp)>fread(*p,size,n,fp)>fwrite(*p,size,n,fp)>fgets(*str,n,fp)fputs(*str,fp)fscanf(fp,“格式控制符”,地址列表)、fprintf(fp,“格式控制符”,輸出列表),以上函數(shù)是簡要書寫,具體參考P238頁。6.三個標準設(shè)備文件指針:stdin、stdout、stderr7、有關(guān)文件操作函數(shù)ferror(fp)、feof(fp)>clearerr(fp);10.控制循環(huán):while((ch=fgetc(fp))!=EOF)或while(!feof(fp))EOF是在頭文件屮定義的符號常量,值為ー1代表文件結(jié)束。答疑:在信息樓901辦公室 時間安排人員安排以任課教師通知為準C語言程序設(shè)計第1'3章練習(xí)題ー、選擇題1、ー個C語言程序總是從A、主過程開始執(zhí)行 B、主函數(shù)開始執(zhí)行C、子程序開始執(zhí)行 D、主程序開始執(zhí)行2、若num、a、b和c都是int型變量,則執(zhí)行表達式num=(a=4,b=16,c=32)后num的值為_4 B、16C、32 D、523、下面四個選項中,均是C語言關(guān)鍵字的選項是A^autoenumincludeswitchtypedefcontinuesignedunionscanfifstructtype4、下面四個選項屮,均是合法整型常量的選項是160 -Oxffff 011 B、-Oxcdf Ola OxeC、-01 986,012 0668 D、-0x48a 2e5 Ox5、下面四個選項中,均是合法浮點數(shù)的選項是A、+le+l5e-9.403e2-6012e-4-8e5C、!23e1.2e-4+2e-lD、-e3.8e_45,e_06、下面四個選項中,均是合法轉(zhuǎn)義字符的選項是A、'ヾ’'\\'''n' B、'\'''017'‘ヽ"C、''018'''f''xab'D、'\\0'''101''xlf7、下面正確的字符常量是A、'\X17'B、'\80'C、'\\'D、"\n"8、下面四個選項中,均是正確的八進制數(shù)和卜六進制數(shù)的選項是-100x8f-011Oabc-017Oxc010-0x11Oxfl0al2-0x123-Oxa9、下面四個選項中,均是正確的數(shù)值常量或字符常量的選項是A、0.0Of8.9eB、"a"3.9E-2.5lei'ヽ"C、’3'011OxFFOO0aD、+001Oxabcd2e250.10、若有代數(shù)式 ,則正確的C語言表達式是3x2*ln(x)*cos(x)/3*x2*ln(x)*cos(x)/(3*x)C>2*log(x)*cos(x)/3*xD>2*log(x)*cos(x)/(3*x)11、若有說明語句:charchi-\065*;charch2="2";charch3=’2';貝リ:chi中ch2中,ch3中A、包含1個字符 B、包含2個字符C、包含3個字符 D、字符個數(shù)不確定,說明不正確12、若有運算符:>、*二、?:、%、sizeof,則將它們按運算的優(yōu)先級排列的正確次序為(由低至高) A、*二f?:fsizeofB、?:f?二-?)sizeofC、?二-?〉―?:->sizeof-*%D、?二?*?:-*>-*%->sizeof13、若有以下類型說明語句:chara;intb;floatc;doubled;則表達式a*b+d-c的結(jié)果類型為A、floatB、charC、intD、double14、若有變量說明:inta=0,b=0,c=0;,以下符合C語言語法的賦值表達式是A、a=9+b+c=a+9B、a=9+b;c=a+9;C>a二(9+b,b++) D、a=9+b++二a+715、已知字母A的ASCII碼為(65).變量chi為字符型,則執(zhí)行語句chl='A'+'6'」3';后,ch!中的值為A、DB、68C、ー個不確定的值D、C16、以下運算符中優(yōu)先級最高的運算符是A、&&B、++C、?:D、!=17、若有定義:intk=7;floata二2.5,b二4.7;則表達式a+k%3*(int)(a+b)%2/4的值是 A、2.500000 B、2.7500000C、3.500000 D、0.00000018、sizeof(float)是A、雙精度型表達式B、一個整型表達式C、ー個函數(shù)調(diào)用 D、ー個不合法的表達式19、設(shè)變量y為門。at類型,x為int類型,則以ド能實現(xiàn)將y中的數(shù)值保留小數(shù)點后兩位,第三位進行四舍五入運算的表達式是A、y=(y*100+0.5)/100.0B、x=y*100+0.5,y=x/100.0C、y=y*100+0.5/100.0D,y=(y/100+0.5)*100.020、設(shè)int美型的數(shù)據(jù)長度為2個字節(jié),則unsignedint類型數(shù)據(jù)的取值范圍是ル、〇?255 B、〇?65535-32768?+32767D、-256?+25521、若有以下定義,則能得到值為3的表達式是(intm=7,n=12)A、n%=(m%=5)B、n%=(m-in%5)n%=m-瞰5 D、(n%=m)-(m%=5)22、若有說明:inta=l,b=2,c=3,d=4I則表達式aくb?a:c<d?c:d的值是A、4B、3C,2D,123、若x為int類型,則逗號表達式(x=4*5,x*5),x+25的結(jié)果是,x的值是A、20B、100C、表達式不正確 D,4524、putchar函數(shù)可以向終端輸出ー個A、整型變量值 B、實型變量值C,字符串 D、字符或字符型變量值25、若有以下變量說明和數(shù)據(jù)的輸入方式,則正確的輸入語句為‘代表空格)變量說明:floatxl,x2;數(shù)據(jù)的輸入方式:4.52く回車〉5〈回車》A、scanf("版,%f”,&xl,&x2);B、scanf("%f%f",&xl,&x2);C、scanf("%3.2f^%2.If",&xl,&x2):D、scanf("%3.2f%2.If",&xl,&x2);26、若運行以下程序時,從鍵盤輸入25,13,10〈回車〉,則輸出結(jié)果為main()(intal,a2,a3;scanf("%d%d%d",&al,&a2,&a3);printf("al+a2+a3=%d\n",al+a2+a3);}A,al+a2+a3=48 B,al+a2+a3=25B、al+a2+a3=10 D、不確定值27、已知a、b、c為int類型變量,若有輸入語句:scanf("a=%db=%dc=%d",&a,&b,&c):為使a值為1,b值為3,c值為2,從鍵盤輸入數(shù)據(jù)的正確形式應(yīng)當(dāng)是A、132く回車> B,a=lb=3c=2(回車〉C、1〈回車>3く回車>2く回車〉 D、a=lく回車〉b=3C回車え=2〈回車〉28、以下能正確定義整型變量x、y和z并為其賦初值5的語句是A、intx=y=z=5; B、intx,y,z=5;C、intx=5,y=5,z=5;D、x=5,y=5,z=5;29、執(zhí)行下面程序段后,x的值是intx;printf("%d\n”,(x=3*5,x+5));A、!0B、15C、20D、530、下面程序段的輸出結(jié)果是inta=023;printf(*%d\n*,-a):A、23B、17C、18D、2431、已知ch是字符型變量,則不正確的賦值語句是A、ch=5+9; B、ch二‘、〇';C、ch='7'+‘9'; D、ch='a+b';32、設(shè)x,y是門。at型變量,則不正確的賦值語句是A、++x; B、y=int(5);C>x*=y+l; D、x=y=O;33、設(shè)有說明:doubleb=0.5,c=1.5;inta二10;則正確使用了C語言庫函數(shù)的賦值語句是A、c=asin(c)+fabs(a); B、b=loglO(b)+pow(b);C、c二sqrt(b-c); D、a=(int)(atan2((double)a,b)+exp(b-0.2));34、以下程序段的輸出結(jié)果是inti=l,j=4,k=2;floatx=5.5,y=9.0,z;z=(i+j)/k+sqrt((double)y)*l.2/k+x;printf("%f\n",z);A、9.800000 B、9.300000C、8.500000 D、8.00000035、若a為int類型變量,則執(zhí)行以下程序段后a的值為a=5;a*=a/=a++;A、2B、1C、40D、336、若a和b均為int型變量,則執(zhí)行以下程序斷后x的輸出是x=15;y=15;printf("%d\n”,x%=(y%=2));A、〇B、1C、6C、1237、若x為unsignedint類型變量,則執(zhí)行以下程序段后x的值是x=65535;printf("%d'n",x);A、65535B、1C、無定值 D、-1

38、以下語句的執(zhí)行結(jié)果是printf(*%d\n*,NULL);A、1B、〇C、-1無定值39、若x為int類型變量,則執(zhí)行以下程序段后的輸出結(jié)果是x=OxDEF;printf(*%4d,%4o,%4x\n*,x,x,x);A、A、3567,6757,defB、3567,6757,xdefC、3567,06757,OxdefD>3567,6757,Odef40、若a、b、c均為ini型變量,則執(zhí)行以ド程序段后的輸出結(jié)果為b=(a=10,a+5,c=10);printf("a二%d,b二%d,c二%d\n”,a,b,c);c二(a二10,b=5,a+b);printf(*a=%d,b=%d,c二%d\rT,a,b,c);B、a二10,b二10,c=10a二10,b二5,c二10D、a=10,b=10,c=10a=10,b=5,c=5B、a二10,b二10,c=10a二10,b二5,c二10D、a=10,b=10,c=10a=10,b=5,c=5C、a=10,b=10,c=10a=10,b=5,c=15若al、a2、a3、a4均為char類型變量,則執(zhí)行以ド程序段后的輸出結(jié)果為.al=’1‘;a2二’2';a3二’3';a4二’4';printf(飛lc\n",al):printf("%2c\n”,a2):printf(*%3c\n*?a3);printf("%4c\n”,a4);A、1B、1C、1 D、輸出格式的描述符不正確22023300344000442、執(zhí)行語句printf("Theprogram'snameisc:\\tools\book.txt#):后的輸出是A、Theprogram*snameisc:toolsbook,txtB、Theprogram'snameisc:\toolsbook.txtC、Theprogram'snameisc:\\toolsbook,txtD、Theprogram'snameisc:\toolook.txt43、設(shè)a、b、c、d均是int類型變量,為了使以下程序段的輸出為:1234+123+12+1,正確的輸入形式應(yīng)當(dāng)是scanf(*%4d+%3d+%2d+%ld",&a,&b,&c,&d);printf("%4d+%3d+%2d+%ld”,a,b,c,d):A、1234123121〈回車〉 B,1234123412341234く回車)C、1234+1234+1234+1234く回車〉 D,1234+123+12+1〈回車〉44、設(shè)cl、c2均是char類型變量,則以下不正確的函數(shù)調(diào)用是A、scanf("cl=%cc2=%c”,&cl,&c2); B、getchar()C、putchar(c2); D、putchar(cl,c2)45、邏輯運算符兩側(cè)運算對象的數(shù)據(jù)A、只能是〇或1 B、只能是〇或非〇正數(shù)C、只能是整型或字符型數(shù)據(jù) D,可以是任何類型的數(shù)據(jù)46、判斷char型變量c!是否為大寫字母的正確表達式是A、‘A'〈=cl〈='Z' B、(cl>='A')&(clく='Z')C、(cl>='A')&&(cl〈='Z'}D,('A'く=cl)AND('Z'>=cl)47,執(zhí)行以下程序段后的a值是,b的值是,c的值是inta=5,b=6,c=l,x=2,y=3,z=4;c=(a=c〉x)&&(b=y>z);A、0B,6C,1D、548、設(shè)i、j、和k是int型變量,且i=3,j=4,k=5,則以下值為〇的表達式是A、’『&&'j B,i<=jC、i|Ij+k&aj-k D、!((i<j)&&!k||1)49、設(shè)ch是char類型變量,其值是A,則以下表達式的值是ch=(ch>='A'&&chく='Z*)?(ch+32):chA、ZB、AC、aD、z50、若希望當(dāng)num的值為奇數(shù)時,表達式的值為“真”,num的值為偶數(shù)時,表達式的值為“假”。則以下不能滿足要求的表達式是A、num%2==l B、!(num%2=0)C,!(num%2) D、num%2二、填空題1、C源程序的基本單位是。2,ー個C語句中至少應(yīng)包含一個03、在C語言中,輸入操作可以由庫函數(shù)完成,輸出操作可以由庫函數(shù) 完成。4、若x是int型變量,且x=6,則表達式x%2+(x+l)%2的值為。5、若a、b、c均是int型變量,則執(zhí)行表達式c=(a=5)-(b=2)+a后,c的值為。6,若有定義:inty=7:floatx=2.5,z=4.7;,則表達式x+(int)(y/3*(int)(x+z)/2)為4的值為.7、若采用十進制數(shù)的表示形式,則077為,0111為,0x29為,Oxab為8、設(shè)x為float型變量,y為double型變量,a為int型變量,b為long型變量,c為char型變量,則表達式x+y*aA+b/y+c的結(jié)果類型為〇9、若有說明intx=10,y=20:請寫出下面各printf語句對應(yīng)的輸出結(jié)果。①printf(飛3d\n",x+y);②printf("%3o\rT,x*y):③printf(*%3o\n*,x%y);@printf(*%3x\n*,(x%y,x-y,x+y));10、設(shè)有以下變量說明:inta=5,b=10;floatx=3.5,y=10.8;charcl二'A',c2=,B*;請根據(jù)以下輸出格式和結(jié)果,完成printf語句中的填空。①a二5,b=10,x+y=14.3printf(*);②x-y=-7.31-?a-b=-5printf(**,);③cl二'A'or65(ASCII)-c2='B'or66(ASCII)printfC0);11、若有說明:inta=123;floatb=456.78;double■-123.45678;請寫出以下各printf語句的輸出結(jié)果。①printf(*%.3f%.3e%lf\n*,b,b,c);②printf(*%8.3f%8.3e%g\n*,b,b,c);③printf("初%TO.3f%-10.3e\n",a,b,c);12、若al和a2都是double型變量,且al的初值為3.0,a2的初值為2.0,則表達式pow(a2,fabs(al))的值為〇13、假設(shè)變量x和y均為整型,以下語句可以不借助任何變量把x、y屮的值進行交換。請?zhí)羁?。x+= ;y=x_ ; x-= :14、已有定義intm;floatn,k;charchl,ch2;?為使m=3,n二6.5,k二12.6,chi二'a',ch2二'A',對應(yīng)的scanf語句是,輸入數(shù)據(jù)的方式是。15、已有定義inta,b;floatk;,為將一10賦給a,將12賦給b,410.34賦給k;則對應(yīng)以下scanf語句的數(shù)據(jù)輸入形式是〇scanf &a,&b,&k);16、在C語言中,&作為雙目運算符時表示的是,而作為單目運算符時表示的是ー。17、設(shè)x、y>z均為int型變量,且x=3,y=一4,z=5,請寫出下面每個表達式對應(yīng)的結(jié)果。①、(x&fty)=(x||z)②、!(x>y)+(y!=z)I|(x+y)&&(y-z)③、x++-y+(++z)18、設(shè)x、y、z均為int類型變量,請用C語言的表達式描述以下命題。①、x或y中有一個小于z②、x、y和z中只有兩個為負數(shù)③、y是奇數(shù)19、以下程序的輸出結(jié)果為ーmain()(intx,y,z=246;x=z/100%9;y=(-1)&&(-1);printf(*%d,%d\n*,x,y); C語言程序設(shè)計第4章練習(xí)題ー、選擇題51、以下正確的if語句是A、if(n>0)printf(*%f*,n)printf(*%f*,-n);B、if(n>0){n=n+m: printf(飛f”,n); }elseprintf-n);if(n>0){n=n+m:printfn); );elseprintf-n):if(n>0){n=n+m; printf(*%f*,n)};elseprintf(“猊?-n):52、以下程序main(){intxl=3,x2=0,x3=0;if(xl=x2+x3)printf(****");elseprintf。####"); }A、輸出:****B、輸出:####C、存在語法錯誤 D、無輸出結(jié)果53、為了避免在嵌套的條件語句if-else中產(chǎn)生二義性,C語言規(guī)定:else子句總是與一A、縮排位置相同的if配對B、其之前最近且不帶else的if配對C、其之前最近的if配對D、第一個if配對54、若w、x、y、エ、k均為ini類型變量,則執(zhí)行下面語句后的k的值是w=l;x=2; y=3; z=4;k=(w<x)?w:x;k=(k<y)?k:y;k=(k<z)?k:z;A、1B、2C>3D、455、下面程序段所表示的數(shù)學(xué)函數(shù)關(guān)系是x=-l;if(a!=0)if(a>0)x=l;elsex=0:「-1(a<0) 1r1(a<0)A、x=<0(a=0) B、x=q1-1(a=0)L1 (a>0) 1し0(a>0)「0(a<0)-1(a<0)C、x=-J-1(a=0) D、x=J1(a=0)L1(a>0) ?L0(a>0)56、以下關(guān)于switch語句和break語句的描述中正確的是A、在switch語句中必須使用break語句B、break語句只能用于switch語句體中C、break語句只能用于循環(huán)語句中D、在switch語句屮使用break語句或continue語句的作用相同57、設(shè)有說明:inta=l,b=0;則執(zhí)行以下語句后的輸出結(jié)果是switch(a){case1:switch(b){case0:printf(***0**\n*);break;printf(***1**\n");break;)printf("林2**\n");break;)A、??〇** B、**0****2**C、??〇** D、switch語句中存在語法錯誤**1****2**58、設(shè)有程序段intx=10;while(x=0)x=x-l;A、while循環(huán)執(zhí)行!0次 B、循環(huán)是無限循環(huán)C、循環(huán)體語句ー次也不執(zhí)行D、循環(huán)體語句只執(zhí)行一次59、語句while(!y)中的表達式!y等價于A、y==0B、y!=lC、y!=0D、y==l60、以下關(guān)于do-whi1e循環(huán)不正確的描述是A、dO-while的循環(huán)體至少執(zhí)行ー次B>do-while循環(huán)由do開始,用while結(jié)束,在while(表達式)后面不能寫分號C、在do-while循環(huán)體中,一定要有能使while后面表達式的值變?yōu)榱?"假")的操作D、do-while的循環(huán)體可以是復(fù)合語句61、設(shè)X、y均是int類型變量,且x值為100,則關(guān)于以下for循環(huán)的正確判斷是for(y=100;x!=y;++x,y++)printf(*****、ぺ);A、循環(huán)體只執(zhí)行ー一次B、是無限循環(huán)C、循環(huán)體一次都不執(zhí)行D、for語句中存在語法錯誤62、以下程序段中的do-while循環(huán)m=-l;do{m=m*m;}while(!m);A、是死循環(huán) B、執(zhí)行二次C、執(zhí)行一次 D、有語法錯誤63、以下關(guān)于for循環(huán)的正確描述是A、for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況B、for循環(huán)是先執(zhí)行循環(huán)體語句,后判斷表達式C、在for循環(huán)中,不能用break語句跳出循環(huán)體D、for循環(huán)的循環(huán)體語句中,可以包含多條語句,但必須用花括號括起來64、語句for(表達式1;;表達式3)等價于A、for(表達式1;0:表達式3)B、for(表達式1;1J表達式3)C、for(表達式1;表達式1;表達式3)D、for(表達式1;表達式3;表達式3)65、若k為整型變量,則以下for循環(huán)的執(zhí)行次數(shù)是for(k=2;k=0;)printfk--);A、無限次B、0次C、1次D、2次66、以下程序段的執(zhí)行結(jié)果是intx=-3;do{printf(*%d\n*,x++);}while(!x);TOC\o"1-5"\h\zー3 D、-3ー2 -2C、陷入死循環(huán) ?i67、執(zhí)行以下程序段后,y的值是,x的值是intx=l,y=10:do{y-=x;x++;}while(y—<0);A、9B、8C、-2D、2E、4F、368、執(zhí)行以下程序段后a的值是,b的值是inta,b;for(b=l,a=l;b<=50;b++){if(a>=10)break;if(a%2=l){a+=5;continue;)a--3;A、!0B、6C、7D、8E、469、以下程序段的執(zhí)行結(jié)果是inta,b;for(a=l;a<5;a+=2){for(b=l;b<5;b++)printf("%2d",a*b);if(b==5)printf('\n");)3 41215TOC\o"1-5"\h\zA、1 2 3 4 B、1 3 412153 6 9 12 6 9C、2 3 4 6 9 12D、2 3 46 9 1210 15 2070、以下程序段中是死循環(huán)的是intn=l; B、intn=l;while(!n) do{n一:n++; )while(n);intn=l; D、for(n=5;n<l;);do{n++:}while(n);71、下面程序的運行結(jié)果是main(){intmニ〇;while(m<=2))A、1B、12C、1D、122334printf(*%d\n*,m);)72、以下能正確計算1X2X3義…X10的程序段是B、doAB、do{k=l;n=l:n=n*k;k++;}while(k<=10);C>k=l;n=l;do(n=n*k;

k++;}while(kく=10);{k=l;n=0;n=n*k;k++;)while(k<=10);k=l;n=0;do{n=n*k;k++;}while(k<=10);73、卜.面程序的功能是計算1至10之間的奇數(shù)之和以及偶數(shù)之和。請選擇填空。main(73、{intx,y,z,k;x二zニ〇;for(k=0;k<=10;k+=2){x+=k;z+二y;)printf("偶數(shù)之和=%d\n",x);printf("奇數(shù)之和=%d\n",);)①、A、y=k—B、y=k+lC、y=k++D、y=k-l②、A、z-10B、zC、z-llD、z-y74、下面程序段的功能是計算1000!的末尾含有多少個零。請選擇填空。(提示:只要算出1000!中含有因數(shù)5的個數(shù)即可。)for(m=0,n=5;n<=1000;n+=5){t=n;while(){m++; t=t/5; })A、t%5B、t=t%5=0C、t%5==0D、t%5!=075、若有以下程序段:for(m=l;m<=100;m++){scanf("%d",&y);if(y<0)continue;printf("%3d",m); }正確的描述是A、當(dāng)y<0時整個循環(huán)結(jié)束B、y>=0時什么也不輸出C、printf函數(shù)永遠也不執(zhí)行D、最多允許輸出100個非負整數(shù)76、以下程序段等價于for(k=100;k<=200;k++)(if(k%3=0)continue;printf("%4d",k);)A、for(k=100;(k%3)&&kく=200;k++)printf(*%4d*?k);for(k=100;(k%3)IIkく=200;k++)printf(*%4d*,k);for(k=100;k<=200;k++)if(k%3!=0)printf(*%4d*?k);for(k=100;k<=200;k++){if(k%3)printf("%4d",k);elsecontinue;break;)二、填空題20、以下程序的功能是:輸入三個整數(shù)nl、n2、n3,按從大到小的順序進行輸出。請?zhí)羁铡ain(){intnl,n2,n3,temp;scanf("%d%d%d”,&nl,&n2,&n3);if(){temp=n2; n2=n3; n3=temp; )if(){temp=nl; nl=n2; n2=temp; }printfC%d,%d,%d\n”,nl,n2,n3);21、以下程序的功能是:輸入一個小寫字母,按字母排列順序后移5個位置后輸出(如把‘a(chǎn)'變?yōu)椤甪',‘ザ變成‘b城。請?zhí)羁铡?include*stdio.h*main(){charcl;cl=getchar();if(cl>=,a*&&cl〈='u')elseif(cl>='v'&&clくニ'z')putchar(cl);22、輸入一個字符,如果它是ー個大寫字母,則把它變成小寫字母;如果它是一個小寫字母,則把它變成大寫字母:其它字符不變。請?zhí)羁?。main(){charchi;scanf(*%c*,chi);if()chl=chl+32;elseif(chl>=*a*&&chiく='z)printfchi);}23、閱讀下面的程序并回答問題。main(){intm,n,x,y:scanf(*%d,%d",&x,&y);m二1;n=l;if(x>0)m=m+1:if(x>y)n=m+n;elseif(x==y)n=5;elsen=2*m;printf("m二%d,n二%d”,m,n); }問題:為了使輸出n=4,x的輸入值應(yīng)當(dāng)為,y的輸入值應(yīng)當(dāng)為。24、以下程序的功能是:根據(jù)輸入的.三條邊的值判斷是否能組成三角形,若能組成則輸出三角形的面積和二角形的類型。請?zhí)羁铡tinclude"math,h”main(){floatal,a2,a3;floats,area;scanf("%f%f%f",&al,&a2,&a3):if(){s=(al+a2+a3)/2;area=sqrt(s*(s-al)*(s-a2)*(s-a3));printf("%f",area);if()printf("等邊三角形”);elseif()printf("等腰三角形");elseif((a1*a1+a2*a2==a3*a3)II(a1*a1+a3*a3==a2*a2)II(a2*a2+a3*a3==al*al))printf("直角三角形");elseprintf("一?般三角形");}elseprintf("不能組成三角形");}25、以下程序的功能是判斷輸入的年份是否是閏年。請?zhí)羁?。main(){intyear,yes;scanf("%d”,&year);if(year%400=0)year=l;elseif( )yes=l;elseif(yes)printf(*%dis”,year);elseprintf(*%disnot”,year):printf("aleapyear.\n");)26、以下程序段根據(jù)輸入的截止日期(年:yend,月:mend,日:dend)和出生日期(byear,bmonth,bday),計算出實際年齡。請?zhí)羁?。intyend,mend,bend,byear,bmonth,bday,age;age=yend-byear;if(mendbmonth)age一;elseif(mendbmonth&&dendbday)age一;27、如果運行以下程序段時輸入字符“t”,則程序段的運行結(jié)果是main(){charcl;scanf("%c",&cl);cl=(cl>=A*&&cl<=Z*)?(cl+32):cl;cl=(cl>=,a&&clくニ'z')?(cl-32):cl;printf("%c",cl);)28、以下程序的功能是找出x、y、z三個數(shù)中的最小值。請?zhí)羁铡ain(){intx=4,y=5,z=8;intu,v;u=x<y?;v=u<z?;printf("%d",v);29、若運行以下程序時,輸入下面指定數(shù)據(jù),則運行結(jié)果為^include<stdio.h>main(){intch;while((ch=getchar())!=,\n*){switch(ch-,I*){case0:putchar(ch+3);putchar(ch+3);break;putchar(ch+3);default:putchar(ch+1);break;}}printf(*\n*);)輸入數(shù)據(jù)(從第一列開始):1234く回車)30、將以下嵌套的if語句改寫成對應(yīng)的switch語句,使其完成相同的功能。請?zhí)羁铡?假設(shè)mark的取值在1至100之間。)if語句:if(mark<60)k=l;elseif(mark<70)k=2;elseif(mark<80)k=3;elseif(mark<90)k=4;elseif(mark<=100)k=5;switch語句:switch(){k=l; break;: k=2; break;: k=3; break;: k=4; break; k=5;31、將以下含有switch語句的程序段改寫成對應(yīng)的含有非嵌套if語句的程序段,請?zhí)羁?。含有switch語句的程序段:ints,t,m;t=(int)(s/10);switch(t){case10:m=5;break;m=4;break;case8:m=3;break;case7:m=2;break;case6:m=l;break;TOC\o"1-5"\h\zdefault: m=。;含有非嵌套if語句的程序段:ints,m;if()m=5;if((s<100)&&(s>=90))m=4;if((s<90)&&(s>=80))m=3:if((s<80)&&(s>=70))m=2;if((s<70)&&(s>=60))m=l;if()TOC\o"1-5"\h\z32、用switch語句實現(xiàn)以下數(shù)學(xué)關(guān)系,請?zhí)羁?。r-1(x<o)y=J0(x=0)〔1 (x>0)switch(x<0){case1:y=_l;case0:switch(x==0){case1:y=0; y=l;})33、將以ド含有switch語句的程序段改寫成對應(yīng)的含有嵌套if語句的程序段,請?zhí)羁?。含有switch語句的程序段:ints,t,m:t=(int)(s/10);switch(t){case10:m=5;break;case9:m=4;break;case8:m=3;break;case7:m=2;break;case6:m=l;break;default: m=。;)含有嵌套if語句的程序段:ints,m;if()m二。;elseif(s<70)m=l;elseif(s<80)m二2;elseif(s<90)m=3;elseif(s<100)m二4;34、設(shè)x和y均為int類型變量,則以下for循環(huán)中的scanf語句最多可執(zhí)行的次數(shù)是for(x=0,y=0;y!=123&&x<3;x++)scanf("雙!”,&y);35、設(shè)a、b、c均是int類型變量,則執(zhí)行以下for循環(huán)后,c的值為for(a=l,b=5;a<=b;a++)c=a+b;36、以下程序的運行結(jié)果為main(){intj=5;while(j<=15)if(++j%2!=1)continue;elseprintf("%d",j);printf("\n");37、設(shè)chi為char類型變量,若從鍵盤上由第一列輸入以下數(shù)據(jù):right?く回車)則以下三個程序段的輸出結(jié)果分別是,,。①、c=getchar();while(c!=’?‘){putchar(c); c二getchar(); }②、while((c=getchar())!='?')putchar(++c);③、while(putchar(getchar())!='?');38、下面程序段的功能是統(tǒng)計從鍵盤輸入的字符中的數(shù)字字符個數(shù),用換行符‘、或結(jié)束循環(huán),請?zhí)羁?。intn二〇,c;c=getchar();while(){if()n++;c=getchar();)39、以下do-while語句中循環(huán)體的執(zhí)行次數(shù)是a=10; b=0:do{b+=2: a-=2+b;}while(a>=0);40、以下程序段的運行結(jié)果是x=2:do{printfl*);x—;}while(!x==0);41、卜.面程序段是找出整數(shù)的所有因子,請?zhí)羁?。scanf(*%d*,&x);for(;; ){if(x%i=0)printf("%3d",i);i++;)42、設(shè)雞兔共有30只,腳共有90個,下面程序段是計算雞兔各有多少只,請?zhí)羁?。for(x=l;x<=29;x++){y=30-x;if()printf(**%d,%d\n*,x,y); }43、若用以下形式表示for循環(huán)語句:for(表達式1:表達式2:表達式3)循環(huán)體語句則執(zhí)行語句for(i=0;i<3;i++)printf("*");時,表達式1執(zhí)行次,表達式3執(zhí)行次。44、下面程序的功能是計算1-3+5-7+……-99+101的值,請?zhí)羁?。main(){inti,t=l,s=0;for(i=l;iく=101;i+=2){;s=s+t;; }printf(*%d\n*?s);)45、以下程序的功能是求出ド面算式中的X、Y、Z的值,請?zhí)羁?。算?XYZ+YZZ532main(){intx,y,z,k,result=532;for(x=l:x<10;x++)for(y=l;y<10;y++)for(z= ;;z++){k=()+(100*y+l0*z+z);if(k^^result)printf("X=%d,Y=%d,Z=%d\n*,x,y,z);)}46、下面程序的功能是求1000以內(nèi)的所有完全數(shù),請?zhí)羁铡?說明:?個數(shù)如果恰好等于它的因子之和(除自身外),則稱該數(shù)為完全數(shù),例如:6=1+2+3,6為完全數(shù)。)main(){inta,i,m;for(z=l;aく二1000;a++){for(;i<=a/2;i++)if(Ka%i));if(m==a) printf(飛4d”,a);)47、下面程序的運行結(jié)果是#include*stdio.h"main(){inti,j;for(i=4;i>=l;i—){for(j=ljj<=i;j++)printf(*#*);for(j=lsj<4-i;j++)putchar('*'):putchar('\n);})48、ド面程序的功能是計算100至1000之間有多少個數(shù)其各位數(shù)字之和是5,請?zhí)羁铡ain(){inti,s,k,count=0;for(i=100;i<=1000:i++){s=0;k=i;while(){s=s+k%10:k=; }if(s!=5)count++;)printfl%d”,count);}49、下面程序的功能是打印100以內(nèi)個位數(shù)為6且能被3整除的所有數(shù),請?zhí)羁?。main(){inti,j;for(i=0;:i++){j=i*10+6;if()continue;printf("%d",j);)C語言程序設(shè)計第5章練習(xí)題ー、選擇題77、以下對ー維數(shù)組a的正確說明是A、chara(10):B、inta[]:C、intk=5,a[k];D>chara[]={'a','b','c'};78、若有說明語句:inta[2][4];,則對a數(shù)組元素的正確引用是A、a[0][3]B、a[0][4]C、a[2][2]D、a[2][2+1]79、以下能對二維數(shù)組y進行初始化的語句是A、staticinty[2][]={{l,0,1},{5,2,3}};B、staticinty[][3]={{1,2,3},{4,5,6));C、staticinty[2][4]={{1,2,3},{4,5},{6}};D、staticinty[][3]={{1,0,1,0},{},{1,1}};80、若有說明語句:inty[][4]=(0,0):則下面敘述不正確的是A、數(shù)組y的每個元素都可得初值〇B、二維數(shù)組y的行數(shù)為1C、該說明等價于inty[][4]={0};D、只有元素y[0][0]和y[O][l]可得到初值〇,其余元素均得不到初值〇81、以下各組選項中,均能正確定義二維實型數(shù)組s的選項是A、floats[3][4]; B、floats(3,4);floats[][4]; floats[][]={{0};{0}};floats[3][]={{1}?{0}};floats[3][4];floats[3][4]; D、floats[3][4];staticfloats[][4]={{0},{0}};floats[3][];autofloats[][4]={{0},{0},{0}}:floats[][4];82、若有說明語句:inta[][3]={1,2,3,4,5,6,7,8);,則a數(shù)組的行數(shù)為A、3B、2C、無確定值D、183、若二維數(shù)組y有m歹人則在y[i][j]前的元素個數(shù)為A、j*m+i B、i*m+jC、i*m+jTD、i*m+j+l84、下面程序中有錯誤的行是main()TOC\o"1-5"\h\z(int x[3]={l};int k;scanf("%d”, &x);for (k=l; k<3:k++)x[0]=x[0]+x[i];printf("x[〇]二%d\n",x[0]);)A、3B、6C、7D、585、若有以下語句,則正確的描述是charx[]="12345";chary[卜{'1','2','3','4','5'};A、x數(shù)組與y數(shù)組的長度相同B、x數(shù)組長度大于y數(shù)組長度C、x數(shù)組長度小于y數(shù)組長度D、x數(shù)組等價于y數(shù)組86、以下不正確的數(shù)組定義語句是A、doublex[5]={2.0,4.0,6.0,8.0,10.0};B、inty[5]={0,1,3,5,7,9};C、charchi[卜{T‘,’2','3','4','5'};D、charch2[卜{'\xl0',''xa',''x8'}:87、以下正確的數(shù)組定義語句是A.chara[5]={'l','2',‘3,'4',‘5',、〇'};B>intb[2][]={{1},{2});C、floatc[][3]={1,2,3,4,5};chard[5]="CHINA”;88、判斷字符串strl是否大于字符串str2,應(yīng)當(dāng)使用A、if (strl>str2) B、if (strcmp(strl,str2))if (strcmp(str2, strl)>0)if (strcmp(strl, str2)>0)89、下面程序段的運行結(jié)果是charx[5]={'a','b','\0',‘ゼ,‘、?!瘆;printf(*%s",x);A、‘a(chǎn)''b'B、abC、ab—cD、abc90、有兩個字符數(shù)組a,b,則以下能正確為a,b進行賦值的語句是A、gets(a,b);B、scanf("%s%s",&a,&b);C、getchar(a):getchar(b):D>gets(a):gets(b):91、有字符數(shù)組si[80]和s2[80],則以下能正確對si,s2進行輸出的語句是A、puts(si,s2)B、printf(*%s,%s",si,s2);C、putchar(si,s2);D、puts(sl),puts(s2);92、以下程序段的運行結(jié)果是chara[7]="abcdef";charb[4]="ABC";strcpy(a,b);printfC%c",a[5]);A、uiB、\0C>eD、f93、以下描述正確的是A、兩個字符串所包含的字符個數(shù)相同時,才能比較字符串B、字符個數(shù)多的字符串比字符個數(shù)少的字符串大C、字符串"STOP-"與"STOP"相等D、字符串"That"小于字符串"The”94、以下對字符數(shù)組的描述中錯誤的是A、字符數(shù)組屮可以存放字符串B、字符數(shù)組中的字符串可以整體輸入、輸出C、可以在賦值語句中通過賦值運算符"ア對字符數(shù)組整體賦值D、不可以用關(guān)系運算符對字符數(shù)組中的字符串進行比較95、若有語句:charsi[10],s2[10]二{"bookド},則能將字符串books賦給數(shù)組si的正確語句是 A、si={"books"};B、strcpy(si,s2);C、sl=s2; D、strcpy(s2,si);96、以下printf語句的輸出結(jié)果是printf("%d\n",strlen("school");A、7B、6C、存在語法錯誤 D、不定值97、下面程序的功能是將字符串s中所有的字符c刪除。請選擇填空。ftinclude<stdio.h>main(){chars[80];inti,j?gets(s):for(i二j二〇;s[i]!二‘、〇';i++)if(s[i]!=,c*)s[j]='ゝ〇';puts(s);}A、s[j++]=s[i] B、s[++j]=s[i]C、s[j]=s[i]; D、s[j]=s[i];98、當(dāng)運行以下程序時候,從鍵盤輸入:abく回車)c〈回車》defく回車)則下面程序的運行結(jié)果是ー#include<stdio.h>^defineN6main(){charchi[N];intk=0;for(:k<N;chi[k]=getchar(),k++):for(k=0:k<N;k++)putchar(chl[k]);A、abcdefB、aC、bD、abbcccddde99、下面程序的運行結(jié)果是^include<stdio.h>^include<string.h>main(){charx[80]="AB",y[80]="LMNP”:(98題答案:)intn=0;strcat(X,y);while(x[n++]!=\01)y[n]=x[n];puts(y);)A、LB B、ABLMNPC、AB D、LBLMNP二、填空題50、在C語言中,二維數(shù)組元素在內(nèi)存中的存放順序是〇51、若有定義:doublex[3][5];,則x數(shù)組中行下標的下限為,列下標的上限為52、若二維數(shù)組a有m歹リ,則計算任一元素a[i][j]在數(shù)組中相對位置的公式為ー〇(設(shè)a[0][0]是數(shù)組的第一個元素)53、若有定義:inta[3][4]={{1,2},{0},{4,6,8,10});,則初始化后,得到的初值是,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論