等級考試C語言復習_第1頁
等級考試C語言復習_第2頁
等級考試C語言復習_第3頁
等級考試C語言復習_第4頁
等級考試C語言復習_第5頁
已閱讀5頁,還剩191頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

?二進制文件:若干字節序列,短,存取速度快,不能用type或記事本等查看。.文件操作:讀操作、寫操作。使用有關文件函數來完成,需包含頭文件stdio.h.操作步驟:①定義文件類型指針②打開文件③檢測指針④讀/寫 ⑤關閉文件..打開文件時的使用方式各6種,P207頁。5.讀/寫函數: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,“格式控制符”,輸出列表),以上函數是簡要書寫,具體參考P238頁。6.三個標準設備文件指針:stdin、stdout、stderr7、有關文件操作函數ferror(fp)、feof(fp),clearerr(fp);10.控制循環:while((ch=fgetc(fp))!=EOF)或while(!feof(fp))EOF是在頭文件中定義的符號常量,值為-1代表文件結束。C語言程序設計第廣3章練習題?、選擇題1、一個C語言程序總是從

A、主過程開始執行 B、主函數開始執行C、子程序開始執行 D、主程序開始執行2、若num、a、b和c都是int型變量,則執行表達式nuin=(a=4,b=16,c=32)后num的值為A、4A、4C、32B、D、1652下面四個選項中,均是C語言關鍵字的選項是.A、A、autoenumincludeswitchtypedefcontinuesignedunionscanfifstructtype4、下面四個選項中,均是合法整型常量的選項是160 -Oxffff Oil B、-Oxcdf Ola OxeC、-01 986,012 0668 D、-0x48a 2e5 Ox5、下面四個選項中,均是合法浮點數的選項是A、+le+l5e-9.403e2-6012e-4-8e5C、123e1.2e-4+2e-lD、~e3.8e~45.e-06、下面四個選項中,均是合法轉義字符的選項是A、’\\‘''n'B、'\'''017'C、''018''\f''xab'D、'\\0'''101''xlf'7、下面正確的字符常量是A、'\X17'B、'\80'C、'\\'D、"\n"8、下面四個選項中,均是正確的八進制數和十六進制數的選項是一A>-10Ox8f-OilOabc-017Oxc010-0x11Oxfl0al2-0x123-Oxa9、下面四個選項中,均是正確的數值常量或字符常量的選項是A、0.0Of8.9eB、"a"3.9E-2.5lei'C、'3'011OxFFOO0aD、+001Oxabcd2e250.2Inxcosx10、若有代數式 ,則正確的c語言表達式是2*ln(x)*cos(x)/3*x2*1n(x)*cos(x)/(3*x)C、2*1og(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、字符個數不確定,說明不正確12、若有運算符:>、*二、?:、%、sizeof,則將它們按運算的優先級排列的正確次序為(由低至高) A、*=->?:-*%-?>-*sizeofB、?: sizeofC、*=-?>-??:fsizeof-*%D、*=-??; A%fsizeof13、若有以下類型說明語句:chara:intb;floatc:doubled:則表達式a*b+d-c的結果類型為A、floatB、charC、intD、double14、若有變量說明:inta=0,b=0,c=0:,以下符合C語言語法的賦值表達式是A、a=9+b+c=a+9 B、a=9+b:c=a+9:C、a=(9+b,b++) D、a-9+b++=a+715、已知字母A的AS的I碼為(65)”,變量chi為字符型,則執行語句chi='A'+'6'」3';后,chi中的值為A、DB、68C、一個不確定的值D、C16、以下運算符中優先級最高的運算符是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、一個函數調用 D、一個不合法的表達式19、設變量y為門。at類型,x為int類型,則以下能實現將y中的數值保留小數點后兩位,第三位進行四舍五入運算的表達式是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、設int類型的數據長度為2個字節,則unsignedini類型數據的取值范圍是A、0-255 B、0?65535C、-32768?+32767 D、-256?+25521、若有以下定義,則能得到值為3的表達式是(intm=7,n=12)A、n%=(m%=5) B、n%=(m-m%5)n%=m-m%5D、(n%=m)'(m%=5)22、若有說明:inta二l,b=2,c=3,d=4;則表達式*b?a:資d?c:d的值是A、4B、3C、2D、123、若x為int類型,則逗號表達式(x=4*5,x*5),x+25的結果是,x的值是A、20B、100C、表達式不正確D、4524、putchar函數可以向終端輸出一個A、整型變量值 B、實型變量值C、字符串 D、字符或字符型變量值25、若有以下變量說明和數據的輸入方式,則正確的輸入語句為‘代表空格)變量說明:floatxl,x2;數據的輸入方式:4.52〈回車)3.5<回車)A、scanf(*%f,%f*,&xl,&x2);B、scanf(*%f%f*,&xl,&x2);C、scanfC%3.2fu_j%2.lf\&xl,&x2);D、scanff%3.2f%2.ir,&xl,&x2);26、若運行以下程序時,從鍵盤輸入25,13,10〈回車),則輸出結果為main(){intal,a2,a3;scanf("%d%d%d”,&al,&a2,&a3);printf(*a1+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,從鍵盤輸入數據的正確形式應當是A、132〈回車》 B、a二1b二3c=2〈回車)C、1<回車>3〈回車》2〈回車》 D、a=l<回車>b=3〈回車》c=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、執行下面程序段后,x的值是intx;printf(*%d\n*,(x=3*5,x+5)):A、10B、15C、20D、530、下面程序段的輸出結果是inta=023:printf―a);A、23B、17C、18D、2431、已知ch是字符型變量,則不正確的賦值語句是A、ch=5+9; B、ch='\0';C、ch='7'+'9'; D、ch='a+b';32、設x,y是float型變量,則不正確的賦值語句是A、++x; B、y=int(5);C、x*=y+1; D、x=y二0;33、設有說明:doubleb=0.5,c=l.5;inta=10;則正確使用了C語言庫函數的賦值語句是A、c=asin(c)+fabs(a); B、b=logl0(b)+pow(b);C、c=sqrt(b-c); D>a=(int)(atan2((double)a,b)+exp(b-0.2));34、以下程序段的輸出結果是inti=l,j=4,k=2;floatx=5.5,y=9.0,z;z=(i+j)/k+sqrt((double)y)*1.2/k+x;printfz);A、9.800000 B、9.300000C、8.500000 D、8.00000035、若a為int類型變量,則執行以下程序段后a的值為a=5;a*=a/=a++;A、2B、1C、40D、336、若a和b均為int型變量,則執行以下程序斷后x的輸出是x=15;y=15;printfx%=(y%=2)):0B、1C、6C、1237、若x為tinsignedint類型變量,則執行以下程序段后x的值是x=65535:printfx);A、65535B、1C、無定值D>-138、以卜語句的執行結果是printfC%d\n*,NULL);A、1B、0C、-1無定值39、若x為int類型變量,則執行以下程序段后的輸出結果是x=OxDEF;printf(*%4d,%4o,%4x\n*,x,x,x):A、3567,6757,defB、3567,6757,xdefC、3567,06757,OxdefD、3567,6757,Odef40、若a、b、c均為int型變量,則執行以下程序段后的輸出結果為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\n*,a,b,c);A、a=10,b=15sc=10B、a=10,b=10,c=10a=10,b=5,c=10a=10,b=5,c=10C、a=10,b=10,c=10D>a=10,b=10,c=10a=10,b=5,c=15a=10,b=5,c二541、若al、a2、a3、a4均為char類型變量,則執行以下程序段后的輸出結果為—al=,T:a2-2';a3='3';a4=,4';printf al);printf(*%2c\n*,a2);printf(*%3c\n*,a3):printf("%4c\n",a4);A、1B、1C、1 D、輸出格式的描述符不正確22023300344000442、執行語句printf("Theprogram'snameisc:\\tools\book.txt^):后的輸出是A、Theprogram,snameisc:toolsbook,txtB、Theprogram'snameisc:\toolsbook,txtC>Theprogram5snameisc:\\toolsbook,txtD、Theprogram'snameisc:\toolook.txt43、設a、b、c、d均是int類型變量,為了使以下程序段的輸出為:1234+123+12+1,正確的輸入形式應當是scanf("%4d+%3d+%2d+%ld”,&a,&b,&c,&d);printf("%4d+%3d+%2d+%ld”,a,b,c,d);A、123412312K回車〉 B、1234123412341234〈回車>C、1234+1234+1234+1234<回車> D、1234+123+12+1〈回車>44、設cl、c2均是char類型變量,則以下不正確的函數調用是A、scanf("cl/cc2=%c”,&cl,&c2); getchar()C、putchar(c2); D、putchar(cl,c2)45、邏輯運算符兩側運算對象的數據A、只能是0或1 B、只能是0或非0正數C、只能是整型或字符型數據D、可以是任何類型的數據46、判斷char型變量cl是否為大寫字母的正確表達式是A、'A'〈=cl<='Z' B、(cl〉='A')&(cl<:='Z')C,(cl〉='A')&&(cl〈='Z')D,CA'<=cl)ANDCZ'>=cl)47、執行以下程序段后的a值是,b的值是,c的值是inta=5,b=6,c=l,x=2,y=3,z=4:c=(a=c〉x)&&(b=y>z);As0B、6C、1D、548、設i、j、和k是int型變量,且i=3,j=4,k=5,則以下值為0的表達式是A、'i'&&'j' B、i<=jC、i||j+k&&j-k D、!((i<j)&&!kl|1)49、設ch是char類型變量,其值是A,則以下表達式的值是ch=(ch>=,A'&&ch<='Z")?(ch+32):chA、ZB、AC、aD、z50、若希望當num的值為奇數時,表達式的值為“真”,num的值為偶數時,表達式的值為“假”。則以下不能滿足要求的表達式是A、num%2=l B、!(num%2==0)C、!(num%2) D、num%2二、填空題1、C源程序的基本單位是。2、一個C語句中至少應包含一個o3、在C語言中,輸入操作可以由庫函數完成,輸出操作可以由庫函數完成。4、若x是int型變量,且x=6,則表達式斕2+(x+l)%2的值為,5、若a、b、c均是int型變量,則執行表達式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、若采用十進制數的表示形式,則077為,0111為,0x29為,Oxab為8、設x為float型變量,y為double型變量,a為int型變量,b為long型變量,c為char型變量,則表達式x+y*a/x+b/y+c的結果類型為。9、若有說明intx=10,y=20:請寫出下面各printf語句對應的輸出結果。①printf(*%3d\n*,x+y);②printf(飛3o\n”,x*y);③printf(*%3o\n*,x%y);④printf(*%3x\n*,(x%y,x-y,x+y));10、設有以下變量說明:inta=5,b=10;floatx=3.5,y=10.8;charcl='A',c2=,B';請根據以下輸出格式和結果,完成printf語句中的填空。①a=5,b=10,x+y=14.3printf("二):②x-y=-7.31-?a-b=-5printfC1);?cl=A*or65(ASCII)-c2='B'or66(ASCII)printf(**,);11、齊仃說明:inta=123;floatb=456.78;doublec=-123.45678;請寫出以卜各printf語句的輸出結果。①printf("%.3f%.3e%lf\n*,b,b,c):②printf("%8.3f%8.3e%g\n”,b,b,c);③printf("%u%T0.3f%-10.3e\n*?a,b,c);12、若al和a2都是double型變量,且al的初值為3.0,a2的初值為2.0,則表達式pow(a2,fabs(al))的值為。13、假設變量x和y均為整型,以卜.語句可以不借助任何變量把x、y中的值進行交換。請填空。x+= :y=x- : x-= ;14、已有定義intm;floatn,k;charchi,ch2;,為使m=3,n=6.5,k=12.6,chl=,a*,ch2='A',對應的scanf語句是,輸入數據的方式是o15、已有定義inta,b;floatk;,為將-10賦給a,將12賦給b,410.34賦給k;則對應以下scanf語句的數據輸入形式是。scanf(飛o%x%e”,&a,&b,&k);16、在C語言中,&作為雙目運算符時表示的是,而作為單目運算符時表示的是一o17、設x、y、z均為int型變量,且x=3,y=-4,z=5,請寫出下面每個表達式對應的結果。①、(x&&y)==(x||z)②、!(x>y)+(y!=z)||(x+y)&&(y-z)③、x++-y+(++z)18、設x、y、z均為int類型變量,請用C語言的表達式描述以下命題。①、x或y中有一個小于z②、X、y和Z中只有兩個為負數③、y是奇數19、以下程序的輸出結果為main()(intx,y,z=246;x=z/100%9;y=(-l)&&(-l);printf(*%d,%d\n”,x,y);C語言程序設計第4章練習題二?選擇題51、以下正確的if語句是A、if(n>0)printf(*%f\n)printf("%f”,-n);if(n>0){n=n+m;printf(*%f*,n); }elseprintf-n);if(n>0){n=n+m;printf(*%f*,n); };elseprintf-n);if(n>0){n=n+m;printfn)}:elseprintf-n):52、以下程序main(){intxl=3,x2=0,x3=0:if(xl=x2+x3)printf("****");seprintfC#tt##0: }A、輸出:****B、輸出:####C、存在語法錯誤D、無輸出結果53、為了避免在嵌套的條件語句if-else中產生二義性,C語言規定:else子句總是與.A、縮排位置相同的if配對 B、其之前最近且不帶else的if配對C、其之前最近的if配對D、第一個if配對54、若w、x、y、z、k均為int類型變量,則執行下面語句后的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、R0程序段所表示的數學函數關系是x=-l;if(a1=0)if(a>0)x=l;elsex=0:r-1(a<0)1r1(a<0)A、x={o(a=0)B、x=-1-1(a=0)I1(a>0)1L0(a>0)ro(a<0)--1(a<0)C、X=Y-i(a=0)D、x=J1(a=0)Ii(a>0)L0(a>0)56、以下關于switch語句和break語句的描述中正確的是—A、在switch語句中必須使用break語句B、break語句只能用于switch語句體中C、break語句只能用于循環語句中D、在switch語句中使用break語句或continue語句的作用相同57、設有說明:inta=l,b=O;則執行以下語句后的輸出結果是switch(a){case1:switch(b){case0:printf(***0**\n");break;case1:printf(***1 ;break;)case2:printf(w**2**\n"):break:A、**0**B、**0****2**C、**0**D、switch語句中存在語法錯誤**1****2**58、設有程序段intx=10;whi1e(x=0)x=x-l;A、while循環執行10次 B、循環是無限循環C、循環體語句一次也不執行 D、循環體語句只執行一次59、語句while(!y)中的表達式!y等價于A、y—0 B>y!=lC、y!=0D、y—160、以下關于do-while循環不正確的描述是A、dO-while的循環體至少執行一次B、do-while循環由do開始,用觀hile結束,在while(表達式)后面不能寫分號C、在do-while循環體中,一定要有能使while后面表達式的值變為零("假")的操作D>do-while的循環體可以是復合語句61、設x、y均是int類型變量,且x值為100,則關于以下for循環的正確判斷是for(y=100:x!=y:++x,y++)printf("****\n"):A、循環體只執行一次 B、是無限循環C、循環體一次都不執行D、for語句中存在語法錯誤62、以下程序段中的do-whi1e循環m=-l;do{m二m*m;}while(!m);A、是死循環B、執行二次C、執行一次D、有語法錯誤63、以下關于for循環的正確描述是A、for循環只能用于循環次數已經確定的情況B、for循環是先執行循環體語句,后判斷表達式C、在for循環中,不能用break語句跳出循環體D、for循環的循環體語句中,可以包含多條語句,但必須用花括號括起來64、語句for(表達式1;;表達式3)等價于A、for(表達式1:0:表達式3)B、for俵達式1:1;表達式3)C、for俵達式1:表達式1:表達式3)Dsfor(表達式1;表達式3:表達式3)65、若k為整型變量,則以下for循環的執行次數是for(k=2;k=0:)printf(飛d”,k一);A、無限次B、0次C、1次D、2次66、以下程序段的執行結果是intx=-3;do{printf(飛d\n”,x++);}while(!x);TOC\o"1-5"\h\z-3 D、-3-2 -2C>陷入死循環 -i67、執行以下程序段后,y的值是,x的值是intx=l,y=10;x++;}while(y—<0);A、9B、8C、-2D、2E、4F、368、執行以下程序段后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、10B、6C、7D、8E、469、以下程序段的執行結果是inta,b;for(a=l;a<5;a+=2){for(b=l;b<5;b++)printf(*%2d*,a*b);if(b=5)printf("\n"):)A、1 2 3 43 6 9 12C> 2 3 4 6 9D、2 3 46 9 1210 15 20B、16123 4121570、以下程序段中是死循環的是A、intn=l;while(!n)n++;C、intn=l;do{n++;}while(n);71、下而程序的運行結果是.main(){intm=0;

while(m<=2)

{m++;printf(*%d\n*?m);B、intn=l;do{n一;}while(n);D、for(n=5;n<l;);A、1 B、D、123472、以下能正確計算1X2X3X…X10的程序段是A、do{k=l;n=l;n=n*k;k++;}while(k<=10);k=l;n=l;B、do{k=1;n=0;n=n*k;k++;)while(k<=10);k=l;n=0;do{n=n*k:k++;(while(k<=10);do{n=n*k:k++:}while(k<=10):73、下面程序的功能是計算1至10之間的奇數之和以及偶數之和。請選擇填空。main(){intx,y,z,k;x=z=0;for(k=0;k<=10;k+=2){x+=k;z+=y;)prinlf("偶數之和=%d\n*.x);printf("奇數之和二%d\n",);}①、A、y=k—B、y=k+lC、y=k++D、y=k-l②、A、z-10B、zC、z-11D、z-y74、下面程序段的功能是計算1000!的末尾含有多少個零。請選擇填空。(提示:只要算出1000!中含有因數5的個數即可。)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、當y<0時整個循環結束B、y>=0時什么也不輸出C、printf函數永遠也不執行D、最多允許輸出100個非負整數76、以下程序段等價于for(k=100:k<=200:k++){if(k%3==0)continue:printf(*%4d*,k):)for(k=100:(k%3)&&k<=200:k++)printf(*%4d*,k);for(k=100;(k%3)||k<=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、以下程序的功能是:輸入三個整數nl、n2、n3,按從大到小的順序進行輸出。請填空。main(){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; }printf(*%d,%d,%d\n*,nl,n2,n3);21、以下程序的功能是:輸入一個小寫字母,按字母排列順序后移5個位置后輸出(如把'a'變為‘『,'w'變成'b')。請填空。#include"sldio.h"main(){charcl;cl=getchar();if(cl>=,a,&&cl<=,u*)elseif(cl>=,v*&&cl<=,z*)putchar(cl);}22、輸入一個字符,如果它是一個大寫字母,則把它變成小寫字母:如果它是一個小寫字母,則把它變成大寫字母:其它字符不變。請填空。main()(charchi;scanfchi);if()chl=chl+32;elseif(chl>=,a&&chl<='z')printf(*%c*,chi);}23、閱讀下面的程序并回答問題。main(){intm,n,x,y;scanf(*%d,%d",&x,&y);m=l:n=l:if(x>0)m=m+l;if(x>y)n=m+n;elseif(x==y)n=5;elsen=2*m;printf(*m=%d,n=%d*?m,n); }問題:為了使輸出『4,x的輸入值應當為,y的輸入值應當為o24、以卜.程序的功能是:根據輸入的三條邊的值判斷是否能組成三角形,若能組成則輸出三角形的面積和三角形的類型。請填空。^include"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)):printfarea);if()printf("等邊三角形”);elseif()printf("等腰三角形”):elseif((a1*a1+a2*a2==a3*a3)II(a1*a1+a3*a3==a2*a2)II(a2*a2+a3*a3-a1*a1))printf("直角三角形”);elseprintf("一般三角形”);}elseprintf("不能組成三角形”);}25、以下程序的功能是判斷輸入的年份是否是閏年。請填空。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、以下程序段根據輸入的截止日期(年:yend,月:mend,日:dend)和出生日期(byear,bmonth,bday),計算出實際年齡。請填空。intyend,mend,bend,byear,bmonth,bday,age:age=yend-byear:if(mendbmonth)age—:elseif(mendbmonth&&dendbday)age一;27、如果運行以下程序段時輸入字符“t”,則程序段的運行結果是main(){charcl;scanf&cl);cl=(cl>=,A*&&cl<=,Z*)?(cl+32):cl;cl=(cl>=,a*&&cl<=,z*)?(cl-32):cl;printfcl);}28、以下程序的功能是找出x、y、z三個數中的最小值。請填空。main(){intx=4,y=5,z=8;intu,v;u=x<y?;v=u<z?:printfv);29、若運行以下程序時,輸入下面指定數據,則運行結果為#include<stdio.h>main(){intch;while((ch=getchar())!=*\n){switch(ch-,r){case0:putchar(ch+3):putchar(ch+3):break;putchar(ch+3):default:putchar(ch+1);break;))printf("\n");)輸入數據(從第?列開始):1234<回車)30、將以卜嵌套的if語句改寫成對應的switch語句,使其完成相同的功能。請填空。(假設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語句的程序段改寫成對應的含有非嵌套if語句的程序段,請填空。含有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:default:m=0;含有非嵌套if語句的程序段:ints,m;if()m=5;if((s<100)&&(s>=90))if((s<90)&&(s>=80))m=3;if((s<80)&&(s>=70))m=2;if((s<70)&&(s>=60))m=l;if()32、用switch語句實現以下數學關系,請填空。'-1(x<0)y=J0 (x=0)一1 (x>0)switch(x<0){case1:y=T:case0:switch(x==0){case1:y=0; y=l;33、將以下含有switch語句的程序段改寫成對應的含有嵌套if語句的程序段,請填空。含有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=0:含有嵌套if語句的程序段:ints,m;if()m=0;elseif(s<70)m=l;elseif(s<80)m=2;elseif(s<90)m=3;elseif(s<100)m=4;34、設x和y均為int類型變量,則以下for循環中的scanf語句最多可執行的次數是.for(x=0,y=0;y!=123&&x<3;x++)scanf(*%d*,&y);35、設a、b、c均是int類型變量,則執行以下for循環后,c的值為for(a=l,b=5;a<=b;a++)c=a+b:36、以下程序的運行結果為main(){intj=5:while(j<=15)if(++j%2!=1)continue;else printf(*%d",j);printf(*\n*);}37、設chi為char類型變量,若從鍵盤上由第一列輸入以卜數據:right?〈回車>則以下三個程序段的輸出結果分別是,,。①、c=getchar();while(c!=’?’){putchar(c); c=getchar(); }②、while((c=getchar())!='?')putchar(++c):③、while(putchar(getchar( ?,):38、下面程序段的功能是統計從鍵盤輸入的字符中的數字字符個數,用換行符'\n'結束循環,請填空。intn=0,c:c=getchar():while(){if()n++;c=getchar();)39、以下do-while語句中循環體的執行次數是a=10; b=0;do{b+=2; a-=2+b;}while(a>=0);40、以下程序段的運行結果是x=2;do{ ; x一;}while(!x==0);41、下面程序段是找出整數的所有因子,請填空。scanf(飛d",&x):for(;: ){if(x%i=0)printf("%3d",i):i++:)42、設雞兔共有30只,腳共有90個,下面程序段是計算雞兔各有多少只,請填空。for(x=l;x<=29;x++){y=30-x;if()printf(*%d,%d\n”,x,y):)43、若用以下形式表示for循環語句:for(表達式1;表達式2;表達式3)循環體語句則執行語句for(i=0;i<3;i++)prinlf("*");時,表達式1執行次,表達式3執行次。44、卜'面程序的功能是計算1-3+5-7+……-99+101的值,請填空。main(){inti,t-l,s=0:for(i=l:i<=101:i+=2)(:s=s+t:; }printf(飛d\n”,s):)45、以下程序的功能是求出下面算式中的X、Y、Z的值,請填空。算式: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+10*z+z);if(k==result)printf(^X=%d,Y=%d,Z=%d\n”,x,y,z);))46、下面程序的功能是求1000以內的所有完全數,請填空。(說明:一個數如果恰好等于它的因子之和(除自身外),則稱該數為完全數,例如:6=1+2+3,6為完全數。)main(){inta,i,m:for(z=l:a<=1000:a++){for(;i<=a/2:i++)if(!(a%i));if(m=a) printf(*%4d*,a);47、下面程序的運行結果是#include,sldio.h"main(){inti,j;for(i=4;i>=l;i){for(j=l;j<=i;j++)printf(*#*):for(j=l:j<4-i;j++)putchar(**'):putchar(1\n):)}48、下面程序的功能是計算100至1000之間有多少個數其各位數字之和是5,請填空。main(){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++;)printfcount);}49、下面程序的功能是打印100以內個位數為6且能被3整除的所有數,請填空。main(){inti,j;for(i=0;:i++){j=i*10+6:if()continue:printf(*%d\j);)C語言程序設計第5章練習題一、選擇題77、以下對一維數組a的正確說明是A、chara(10);B、inta[];C、intk=5,a[k];D、chara[]={'a','b','c'};78、若有說明語句:inta[2][4];,則對a數組元素的正確引用是A、a[0][3]B、a[0][4]C、a[2][2]D、a[2][2+1]79、以卜.能對二維數組y進行初始化的語句是A、staticinty[2][]={{!,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、數組y的每個元素都可得初值0B、二維數組y的行數為1C、該說明等價于inty[][4]={0};D、只有元素y[0][0]和可得到初值0,其余元素均得不到初值081、以下各組選項中,均能正確定義二維實型數組s的選項是A、floats[3][4]; B、floats(3,4);floats[][4]; floats[][]={{0};{0});floats[3][]={{!},{0}};floats[3][4];C、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數組的行數為A>3B、2C、無確定值D、183、若二維數組y有m列,則在y[i][j]前的元素個數為A、j*m+i B、i*m+jC、 D、i*m+j+l84、下面程序中有錯誤的行是main(){int x[3]={l);int k;scanf&x):for (k=l; k<3;k++)x[0]=x[0]+x[i];8^ printf("x[0]=%d\n",x[0]);)A、3B、6C、7D、585、若有以下語句,則正確的描述是charx[]="12345”:chary[]={T','2','3','4','5'};A、x數組與y數組的長度相同B、x數組長度大于y數組長度C、x數組長度小于y數組長度D、x數組等價于y數組86、以下不正確的數組定義語句是A、doublex[5]={2.0,4.0,6.0,8.0,10.0};B、inty[5]={0,1,3,5,7,9};C、charchi[]=1','2','3','4','5'};D、charch2[]={'\xl0','\xa','\x8'}:87、以下正確的數組定義語句是A、chara[5]={T','2','3','4','5','\0'};B、intb[2][]={{1},{2});C、floatc[][3]={1,2,3,4,5};D、chard⑸—CHINA%88、判斷字符串strl是否大于字符串str2,應當使用A、if(strl>str2)B、if(strcmp(strl,str2))C、if(strcmp(str2,strl)>0)D、if(strcmp(strl,str2)>0)89、下面程序段的運行結果是charx[5]"\'b,,'\0','c',printfx):A、‘a''b'B、abC、ab=cD、abc90、有兩個字符數組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、有字符數組si[80]和s2[80],則以下能正確對si,s2進行輸出的語句是A、puts(si,s2)B>printf(*%s,%s”,si,s2);C、putchar(si,s2):D>puts(si),puts(s2):92、以下程序段的運行結果是chara[7]="abcdef”;charb[4]="ABC":strcpy(a,b);printfa[5]);A、l-jB、\0C、eD、f93、以下描述正確的是A、兩個字符串所包含的字符個數相同時,才能比較字符串B、字符個數多的字符串比字符個數少的字符串大C、字符串"STOP-"與"STOP"相等D、字符串"That"小于字符串"The"94、以下對字符數組的描述中錯誤的是A、字符數組中可以存放字符串B、字符數組中的字符串可以整體輸入、輸出C、可以在賦值語句中通過賦值運算符”一對字符數組整體賦值D、不可以用關系運算符對字符數組中的字符串進行比較95、若有語句:charsl[10],s2[10]={"books"},則能將字符串books賦給數組si的正確語句是 A、si二{"books"}; B、strcpy(si,s2);C、sl=s2; D、strcpy(s2,si);96、以下printf語句的輸出結果是printf(*%d\n*,strlen(*school*);A、7B、6C、存在語法錯誤D、不定值97、下面程序的功能是將字符串s中所有的字符c刪除。請選擇填空。^include<stdio.h>main(){chars[80]:inti,j:gets(s);for(i=j=0;s[i]!=>\0J;i++)if(s[i]!=,c*)s[j]=\0\puts(s);)A、s[j++]=s[i] B,s[++j]=s[i]C、s[j]=s⑴; D、s[j]=s⑴:98、當運行以下程序時候,從鍵盤輸入:ab<回車)c〈回車)def〈回車>則下面程序的運行結果是一:include<stdio.h>#defineN6main(){charchi[N];intk=0;for(:k<N;chi[k]=getchar(),k++):for(k=0;k<N;k++)putchar(chi[k]);A、abcdefB、aC、bD、abbcccddder99、下面程序的運行結果是ttinclude<stdio.h>ttinclude<string.h>main(){charx[80]="AB”,y[80]=*LMNP*:(98題答案:)intn=0;strcat(x,y);while(x[n++]!=*\0*)y[n]=x[n];puts(y);)A、LB B、ABLMNPC、AB D、LBLMNP二、填空題50、在C語言中,二維數組元素在內存中的存放順序是。51、若有定義:doublex[3][5];,則x數組中行下標的下限為,列下標的上限為52、若二維數組a有m列,則計算任一元素a[i][j]在數組中相對位置的公式為—。(設a[0][0]是數組的第一個元素)53、若有定義:inta[3][4]={{l,2},{0},{4,6,8,10}};,則初始化后,得到的初值是,得到的初值是o54、若有說明:chars[20];,如果想從鍵盤上把字符串:Thisisabook.輸入到數組s中,應當調用的函數是,函數調用語句的形式是O55、請寫出卜面各printf語句的結果。①、printf(*%s\n*,strcat(^school*,*student*));②、printf(*%d\n*,strlen(*CHINA*)+strlen(*C*));③、printf("%d\n”,strcmp(*The*?"The")):56、根據卜面說明和要求,完成對應的填空。①、若有:charstrl[10],str2[]={*student*}:能把str2中的字符串賦給strl的串函數調用語句是 ②、若有:charstrl[20]={*agood*},str2[]=(“student”);能把str2中的字符串接到strl中的字符串后面的串函數調用語句是57、下面程序將二維數組a的行和列元素互換后存到另一個二維數組b中。請填空。main(){inta[2][3]={{1,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][j]);printf(*\n*);)printf(*arrayb:\n*);for(i=0;:i++){for(j=0:j<=l;j++)printf(*%5d*,b[i][j]);printf(*\n*);58、下面程序可求出矩陣a的兩條對角線上的元素之和。請填空。main(){staticinta[3][3]={1,3,6,7,9,11,14,15,17};intsuml=0,sum2=0,i,j;for(i=0;i<3;i++)for(j=0:j<3;j++)if(i==j)suml+=a[i][j];for(i=0:i<3:i++)for(;;j)if(i+j==2)sum2+=a[i][j]?printf(*suml=%d,sum2=%d\n*,suml,sum2);}59、下面程序的功能是將二維數組a中每個元素向右移一列,最右一列換到最左

溫馨提示

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

評論

0/150

提交評論