版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
C語言基礎知識:實例講解這篇文章旨在讓各位對C有個總體的認識,有看不懂的地方請不必太在意,只要記住就可以了,繼續(xù)往下學下去就會明白的。首先請看下面這個簡單的C程序,猜猜它會做些什么。猜不出來也沒關系,后面會有詳細的解說。#include<stdio.h>intmain(void)/*一個簡單的程序*/{intnum;/*聲明一個名叫num的變量*/num=1;/*將1賦值給num*/printf("ThisisasimpleCprogram.");/*調(diào)用printf函數(shù)*/printf("Myfavoritenumberis%dbecauseitisfirst.",num);return0;}在對這個程序進行詳細說明之前,我想先請您用編譯器把它編譯成可執(zhí)行文件,并且運行,看看運行結(jié)果和您的猜想是否一致。如果不懂如何進行編譯,請參考以下文章:下面,我將分兩步對這個程序進行詳細的講解。第一步是概要說明,也就是對程序中每一行代碼的含義作簡單講解,以幫助您對這個程序有一個大致的理解。第二步是詳細說明,也就是程序中的每一行代碼進行詳細的講解,以加深您的理解。一、概要說明#include<stdio.h><-把另外一個文件包含進來這行代碼命令編譯器把頭文件(.h文件)stdio.h中的內(nèi)容包含到我們的程序中。stdio.h是C語言的標準頭文件之一,提供對鍵盤輸入和顯示輸出等的支持。要使用printf函數(shù),就應該包含這個頭文件。順帶一提,stdio代表standardinput/output,也就是標準輸入輸出的意思。intmain(void)<-函數(shù)頭C程序由一個或多個函數(shù)組成。我們的這個程序只有一個函數(shù):main函數(shù)。圓括號()表明main是一個函數(shù);int表明main函數(shù)返回一個整數(shù);void表明main函數(shù)不接受任何參數(shù)。在此,請您緊記,intmain(void)是ISO/ANSIC標準中定義的main函數(shù)定義方法之一。/*asimpleprogram*/<-注釋/*和*/用于對程序進行注釋說明,幫助讀者更快更好地理解程序。編譯器會忽略/*和*/之間的內(nèi)容(包括/*和*/),不會對它們進行編譯。{<-函數(shù)體的開端這個開大括弧{標志著函數(shù)體開始。函數(shù)體以閉大括弧}結(jié)束。在{和}之間的語句都屬于這個函數(shù)。intnum;<-聲明變量num這個語句表明我們聲明了一個名叫num的變量。int表明這個變量為整型變量。num=1;<-賦值語句這個語句將1賦值給變量num。執(zhí)行這個語句后,num的值等于1。printf("ThisisasimpleCprogram.");<-函數(shù)調(diào)用語句printf函數(shù)是C語言標準函數(shù)庫里的函數(shù)。這個語句調(diào)用printf函數(shù)在屏幕上顯示“ThisisasimpleCprogram.”,并且換行。是換行符,它提示printf開始新的一行,也就是將光標移動到下一行的開端。如果上面的語句中沒有,那就不會換行,而且光標會緊跟在“Thisisasimpleprogram.”后面。printf("Myfavoritenumberis%dbecauseitisfirst.",num);%d告訴printf用num的值替換掉%d,并且以整數(shù)形式顯示num的值。因為num的值為1,所以這個語句在屏幕上顯示“Myfavoritenumberis1becauseitisfirst.”,并且換行。return0;<-返回語句C程序應該返回一個數(shù)值給它的調(diào)用者。0代表程序無誤退出;而其它數(shù)字的含義則由系統(tǒng)決定。通常,非零(如-1)代表程序運行中遇到某種錯誤而退出。}<-函數(shù)體結(jié)束函數(shù)體以閉大括弧}結(jié)束。二、詳細說明現(xiàn)在,讓我們進一步來了解每一行代碼的含義。下面的內(nèi)容很基礎,也很重要,必須認真弄懂,牢牢掌握。1.#include預處理指令和頭文件在編譯器對我們寫的源程序進行編譯之前,預處理器會對我們的寫的源代碼進行必要的處理,稱為預處理。#include就是一個預處理指令,它命令預處理器進行的預處理是:把特定的頭文件包含到我們的源代碼里。#include<stdio.h>的作用是將頭文件stdio.h里的內(nèi)容包含進我們的程序,產(chǎn)生的結(jié)果是將stdio.h里的內(nèi)容一字不漏地插入#include<stdio.h>出現(xiàn)的地方,并且刪除#include<stdio.h>。換句話說,就是用stdio.h里的內(nèi)容替換#include<stdio.h>。這個過程是在預處理階段完成的。C語言的這種包含文件的機制為多個程序共享相同信息提供了極大的方便。stdio.h是C語言標準中定義了的頭文件,它包含著輸入輸出函數(shù)的信息。所有C編譯器都應該有這個頭文件,這是ANSI/ISOC標準中規(guī)定的。當然,ANSI/ISOC規(guī)定的編譯器必須提供的頭文件可不止這么一個。標準還規(guī)定了許多別的頭文件,那些我們會在以后慢慢學到。有些程序需要包含stdio.h,而有些不需要。如果上面這個例子中沒有使用printf函數(shù),那就不需要包含stdio.h。頭文件中包含著編譯器進行編譯時所需的信息。頭文件中可能指明了函數(shù)名和函數(shù)調(diào)用方法,但是這些函數(shù)的實現(xiàn)代碼并不在頭文件中,而是在預先編譯好了的庫文件里。鏈接器負責在庫文件中尋找我們的程序所需的代碼,并且把那些代碼和我們寫的程序進行鏈接,從而將我的寫的程序鏈接成可執(zhí)行文件。一句話,頭文件用于指導編譯器正確地將我們寫的源程序編譯成可執(zhí)行文件。2.main函數(shù)在C語言中,main函數(shù)是主函數(shù)。每個C程序都必須有且只能有一個main函數(shù)(主函數(shù))!C程序從main函數(shù)開始執(zhí)行,并且在main函數(shù)中結(jié)束。int是main函數(shù)的返回值類型,它表明main函數(shù)應該返回一個整數(shù)給程序的調(diào)用者(如操作系統(tǒng))。如果您想了解更多關于main函數(shù)的東西,請點擊下面的鏈接:C/C++誤區(qū)一:voidmain3.注釋/*asimpleprogram*//**/之間的內(nèi)容都是注釋。對程序進行適當?shù)淖⑨尶梢詭椭x者(包括您自己)更快更好地理解您寫的代碼。注釋可以在源程序中的任何地方書寫。/*和*/之間的任何內(nèi)容(包括/*和*/)都會被編譯器忽略掉。注意:/和*必須緊挨在一起,它們之間不能有空格。/*我是注釋*//*我是跨行注釋*//*我也是注釋*/以上的注釋都是合法的;但下面的注釋是非法的,因為沒寫注釋結(jié)束標記*/。/*非法,沒有注釋結(jié)束標記下面這個注釋可能會出乎你的意料:/*我是注釋開始標記/*哦哦,我不是注釋開始標記我是注釋結(jié)束標記,我和第一個/*匹配,而不是和第二個/*匹配。*/上面這個注釋中,注釋結(jié)束標記*/和第一個/*匹配,它們之間的內(nèi)容都被視為注釋。C99中增加了另外一種注釋方式,這種注釋方式使用//作為注釋符,和//處于同一行,并且在//右邊的內(nèi)容都被當作注釋。/和/之間不能有空格。//我是注釋intrigue;//注釋放在這里也是合法的上面的注釋在C99中是合法的,但是在C89中是非法的。也就是說,老舊的編譯器可能不支持//注釋符。VC6支持//,TC2不支持。4.大括號與函數(shù)體C語言中,所有函數(shù)都以大括?。▄})作為界定符。函數(shù)體從開大括弧{開始,以閉大括弧}結(jié)束。在后續(xù)教程中,我會對函數(shù)進行更詳細的講解。5.intnum;這個語句聲明了變量num。這一行末尾的分號(;)表明這一行是一個語句。;是語句的一部分,單獨一個;也是一個合法的C語句。int是C語言中的一個關鍵字,它代表C語言里的一種基本數(shù)據(jù)類型:整型。關鍵字是語言的保留字,不能用作其它用途。例如:我們不能關鍵字來做變量名或者函數(shù)名。標識符是指我們?yōu)樽兞炕蚝瘮?shù)等取的名字。在這個語句中,num就是標識符。C語言中,所有變量在使用前都必須聲明。C89中,變量的聲明必須位于函數(shù)體或者程序塊的開端。例如:intmain(void)/*C89*/{/*函數(shù)體開始*/intdoors;intdogs;doors=5;dogs=3;{/*程序塊開始*/intdig;intdug;dig=6;dug=8;}/*程序塊結(jié)束*/return0;}/*函數(shù)體結(jié)束*/而在C99中,聲明可以位于函數(shù)體或者程序塊的任何地方。但是,變量仍然需要在聲明之后才可使用。例如:intmain(void)/*C99*/{/*函數(shù)體開始*/intdoors;doors=5;{/*程序塊開始*/intdig;dig=6;intdug;dug=8;}/*程序塊結(jié)束*/intdogs;dogs=3;return0;}/*函數(shù)體結(jié)束*/上面的程序在C99中是合法的,但是在C89中卻是非法的。當前支持C99的編譯器不多,所以上面的代碼您的編譯器很有可能編譯不了。故而,為了使我們的代碼具有良好的可移植性,我們應該盡可能少用,甚至不用C99中的新特性。6.賦值num=1;賦值是C語言中的一種基本操作。上面的語句是一個賦值語句,它的含義是:將1賦值給變量num。賦值操作完成后,num的值等于1。7.printf函數(shù)printf("ThisisasimpleCprogram.");printf("Myfavoritenumberis%dbecauseitisfirst.",num);這兩行代碼都調(diào)用了printf函數(shù)。printf是一個標準C函數(shù),也就是說,它是C語言標準函數(shù)庫里定義了的函數(shù)。圓括號()表明printf是一個函數(shù),圓括號里的內(nèi)容會被傳遞給printf函數(shù)。例如,上面第一行代碼把“ThisisasimpleCprogram.”(不包括雙引號)傳遞給printf函數(shù),然后由printf函數(shù)把這些信息顯示于顯示器。是換行符,它提示printf開始新的一行。正因為是換行符,所以不會顯示出來,而是進行了換行。如果上面的語句中沒有,那就不會換行。上面代碼第二行中的%d告訴printf用num的值替換掉%d,并且以整數(shù)形式顯示num的值。%d被稱為占位符,它告訴printf應該在什么地方顯示num的值。%用于提醒printf在此處顯示一個變量的值(本例中是num的值);d告訴printf以十進制整數(shù)的形式顯示num的值。8.return(返回)語句return0;這個return語句是我們程序中的最后一個語句。intmain(void)中的int表示main函數(shù)應該返回一個整數(shù),所以我們要使用return語句來返回一個整數(shù)。如果您想了解更多關于返回值的東西,請點擊下面鏈接,查看文章的第四點。C/C++誤區(qū)一:voidmain上面所說的某些內(nèi)容您暫時可能還不太理解,但是不用害怕,牢牢地把它們記住,然后繼續(xù)往下學吧!隨著學習的深入,就會逐漸搞明白?,F(xiàn)階段只要有這個概念就足夠了。C語言程序?qū)嵗v解(二)首先請看以下代碼,并且和我們的第一個C程序比較比較,看看這個程序新增了什么知識點。/*meter2centimeters.c--以厘米為單位來表示兩米*/#include<stdio.h>intmain(void){intmeters,centimeters;meters=2;centimeters=100*meters;/*100乘以meters*/printf("%d-meterisequalto%dcentimeters.",meters,centimeters);printf("Yes,Isaid%dcentimeters!",100*meters);return0;}下面我們來仔細分析這個小程序。1.文檔這段代碼頭部的注釋標明了文件名和程序的作用,我們把這些注釋稱為文檔。寫文檔是一個很好的習慣,可以幫助我們了解程序的作用。在由多個源文件組成的程序中,文檔顯得更為重要。由于我們目前為止所寫的都是很簡單的程序,您也許還不覺得寫文檔有多大的作用,甚至還覺得浪費時間。但是我們應該養(yǎng)成寫文檔的習慣,這對我們以后寫復雜的程序很有幫助。對于復雜程序,我們應該盡可能把文檔寫得更詳盡??梢詤⒖家韵赂袷剑?****************************************************文件名:meter2centimeters.c*作者:Antiglossat*編寫日期:05-9-90:00*最后修改日期:05-9-90:00*功能:以厘米為單位來表示兩米*算法:1米=100厘米**************************************************/2.多重聲明intmeters,centimeters;上面那句聲明語句聲明了兩個變量。我們可以在一句聲明語句中聲明任意數(shù)目的變量,只要變量名之間用逗號(,)隔開就可以了。例如下面這個語句聲明了4個變量。inta,b,c,d;3.乘法運算C語言中,*是乘法運算符,所以centimeters=100*meters;的意思是:用100乘以變量meters的值(本例中為2),然后把相乘的結(jié)果賦值給變量centimeters。4.printf函數(shù)printf("%d-meterisequalto%dcentimeters.",meters,centimeters);上面這個語句中占位符%d出現(xiàn)了兩次。第一個%d由變量meters的值替換;而第二個%d則由centimeters的值替換。注意:每個變量由逗號(,)隔開;"%d-meterisequalto%dcentimeters."中的雙引號是必須的,而且必須是英文的雙引號,不能是中文的雙引號。printf("Yes,Isaid%dcentimeters!",100*meters);上面這個語句表明,用于替換占位符的不僅僅可以是變量,也可以是表達式(100*meters是一個乘法表達式)。1、將C程序編譯成目標文件,其擴展名為EXE。(錯)2、C語言中,程序中用/*…*/括起來的內(nèi)容是程序的注釋。(對)3、C程序中以冒號作為語句的結(jié)束符。(錯)4、C程序的書寫格式比較自由,一行內(nèi)可寫一個語句,也可以寫多個語句。(對)5、C語言中,強制類型轉(zhuǎn)換后,原變量的值和數(shù)據(jù)類型不變。(對)6、C語言中,當把一個實型數(shù)據(jù)賦給整型變量時系統(tǒng)將自動截掉小數(shù)部分。(對)7、C語言中,在進行混合運算時,數(shù)據(jù)類型由高級向低級轉(zhuǎn)換。(錯)8、C語言中,putchar函數(shù)的功能是把一字節(jié)代碼輸出到標準輸出設備。(對)9、C語言中,字符數(shù)據(jù)用格式說明“%c”來輸出,字符串數(shù)據(jù)用格式說明“%s”來輸出。(對)10、C語言中,輸入數(shù)據(jù)的個數(shù)和類型必須與scanf函數(shù)中的說明符一一對應。(對)11、字符數(shù)據(jù)與整型數(shù)據(jù)可互相賦值。(對)12、C語言中字符串可以分行書寫。(錯)13、二元運算符均可以和賦值運算符構(gòu)成復合的賦值運算符。(對)14、使用(int)a;將float型變量a強制轉(zhuǎn)換成int型,以后a的數(shù)據(jù)類型為float型。(錯)15、一個C語言程序是由_________組成。(C)A.主程序B.子程序C.函數(shù)D.過程16、以下敘述正確的是_________。(D)A.在C程序中,main函數(shù)必須位于程序的最前面。B.C程序的每一行中只能寫一條語句。C.在對一個C程序進行編譯的過程中,可發(fā)現(xiàn)注釋中的拼寫錯誤。D.C語言本身沒有輸入輸出語句。17、C語言中,最簡單的數(shù)據(jù)類型是_________。(B)A.整型、實型、邏輯型。B.整型、實型、字符型。C.整型、字符型、邏輯型。D.整型、實型、邏輯型、字符型。18、_________是C語言提供的合法的數(shù)據(jù)類型關鍵字。(B)A.FloatB.signedC.integerD.Char19、不正確的字符串常量是_________。(A)A.'abc'B."12'12"C."0"D.""20、若有intk=7,x=12;,則能使值為3的表達式是_________。(D)A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5D.(x%=k)-(k%=5)21、為了計算s=10!,則定義變量s時應該使用的數(shù)據(jù)類型是_________。(C)A.intB.unsignedC.longD.以上三種類型均可22、對于int型變量k1,k2,k3,k4,若用以下語句:scanf("%d%d",&k1,&k2);scanf("%d,%d",&k3,&k4);將10賦給k1,k3,將20賦給k2,k4,則應按____格式輸入數(shù)據(jù)。A.1020<CR>1020<CR>B.1020<CR>1020<CR>(D)C.10,20<CR>10,20<CR>D.1020<CR>10,20<CR>23、函數(shù)putchar()可以向終端輸出一個_______。(D)A.整型變量表達式值B.實型變量值C.字符串D.字符或字符型變量值24、有定義語句:intx,y;,若要通過scanf("%d,%d",&x,&y);語句使變量x得到數(shù)值11,變量y得到數(shù)值12,下面四組輸入形式中,正確的是_______。(D)A.1112<CR>B.12,11<CR>C.1112<CR>D.11,<CR>12<CR>25、下列關于C語言用戶標識符的敘述中正確的是_______。(B)A.用戶標識符中可以出現(xiàn)下劃線和中劃線(減號)。B.用戶標識符中不可以出現(xiàn)中劃線,但可以出現(xiàn)下劃線。C.用戶標識符中可以出現(xiàn)下劃線,但不可以放在用戶標識符的開頭。D.用戶標識符中可以出現(xiàn)下劃線和數(shù)字,它們都可以放在用戶標識符的開頭。26、有以下程序段:intm=0,n=0;charc='a';scanf("%d%c%d",&m,&c,&n);printf("%d,%c,%d\n",m,c,n);若從鍵盤上輸入:10A10<CR>,則輸出結(jié)果是_______。(A)A.10,A,10B.10,a,10C.10,a,0D.10,A,027、已知i、j、k為int型變量,若從鍵盤輸入:1,2,3<CR>,使i的值為1,j的值為2,k的值為3,以下選項中正確的輸入語句是_______。(C)A.scanf("%2d%2d%2d",&i,&j,&k);B.scanf("%d%d%d",&i,&j,&k);C.scanf("%d,%d,%d",&i,&j,&k);D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);28、一個C語言的語句至少應包含一個_______。??;29、在一個C源程序中,注釋部分兩側(cè)的分界符分別為__________。\**\30、以下程序的運行結(jié)果為__________。#include<stdio.h>main(){printf("*%f,%4.3f*\n",3.14,3.1415);}*3.140000,3.142*31、以下程序的運行結(jié)果為________________。#include<stdio.h>main(){charc='x';printf("c:dec=%d,oct=%o,hex=%x,ASCII=%c\n",c,c,c,c);//a的ASCII碼為61H}c:dex=120,oct=170,hex=78,ASCII=x32、以下程序的運行結(jié)果為____________。9.300000#include<stdio.h>#include"math.h"main(){inta=1,b=4,c=2;floatx=5.5,y=9.0,z;z=(a+b)/c+sqrt((double)y)*1.2/c+x;printf("%f\n",z);}33、已知字符A的ASCII碼值為65,以下語句的輸出結(jié)果是_________。charch='B';
printf("%c%d\n",ch,ch);B6634、兩個變量交換數(shù)據(jù)時常使用一個中間變量。(對)35、C語言規(guī)定,else總是與它上面最近的if配對。()36、所有關系運算符的運算優(yōu)先級相同。(錯)37、執(zhí)行a=0;if(0);a=3;后a的值為3。(對)38、if(表達式)語句1else語句2結(jié)構(gòu)中,如表達式為a>10,則else的條件隱含為a<10。(錯)39、switch…case結(jié)構(gòu)中條件表達式和常量表達式值可以為float類型。(錯)40、可以用swicth結(jié)構(gòu)實現(xiàn)的程序都可以使用if語句來實現(xiàn)。(對)41、若x、i、j都是int型變量,則執(zhí)行下面表達式i=3,j=i+6,x-=j+=i后x的值為_________。A.2B.15C.10D.3(B)42、執(zhí)行下面語句后i,j,x的值為_________inti,j,x;i++-++j,x=j++-++i;(C)A.0,0,0B.1,1,2C.2,2,-1D.1,2,343、判斷char型變量ch是否為大寫字母的正確表達式是_______。(C)A.A'<=ch<='Z'B.(ch>='A')&(ch<='Z')C.ch>='A')&&(ch<='Z')D.('A'<=ch)AND('Z'>=ch)44、設x、y和z是int型變量,且x=3,y=4,z=5,則下面表達式中值為0的是_______。A.x'&&'y'B.x<=yC.x||y+z&&y-zD.!((x<y)&&!z||1)(D)45、在C語言中,要求運算數(shù)必須是整型的運算符是_______。(D)A./B.++C.!=D.%46、下面程序段的輸出是_______。(C)inta=-1,b=4,k;k=(a++<=0)&&(!b--<=0);printf("%d,%d,%d",k,a,b);0,0,3B.0,1,2C.1,0,3D.1,1,2已知intx=10,y=20,z=30;,以下語句執(zhí)行后x,y,z的值是_______。(B)
if(x>y)z=x;x=y;y=z;printf("%d,%d,%d",x,y,z);A.10,20,30B.20,30,30C.20,30,10D.20,30,2048、當a=1,b=3,c=5,d=4,x=0時,執(zhí)行完下面一段程序后x的值是_______。(A)if(a>b)if(c<d)x=1;elseif(a>c)if(b<d)x=2;elsex=3;elsex=6;elsex=7;A.7B.2C.3D.649、下面程序的輸出是_______。(B)main(){intx=100,a=1,b=20,v1=5,v2=0;if(a<b)if(b!=15)if(!v1)x=1;elseif(v2)x=10;x=-1;printf("%d",x);}A.100B.-1C.1D.1050、以下程序的輸出是_______。(B)main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("\na=%d,b=%d",a,b);}A.a=1,b=0B.a=2,b=1C.a=1,b=1D.a=2,b=251、有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("\n%d,%d\n",k,m);}程序運行后的輸出結(jié)果是_______。(C)A.0,0B.0,1C.1,0D.1,152、有以下程序:main(){intx=13,y=15;printf("%d\n",x%=(y/=2));}執(zhí)行后輸出結(jié)果是_______。(C)A.3B.2C.1D.053、以下程序的運行結(jié)果是_____________________。1,1#include<stdio.h>main(){intz,y,x;x=1;y=2;z=3;x=y--<=x||x+y!=z;printf("%d,%d",x,y);}54、以下程序執(zhí)行后的輸出結(jié)果是__________________。yesmain(){inta=1,b=3,c=5;if(c=a+b)printf("yes\n");elseprintf("no\n");}55、若運行程序時輸入數(shù)據(jù)為:60<CR>,則以下程序執(zhí)行后的輸出結(jié)果是____。606060main(){inta;scanf("%d",&a);if(a>50)printf("%d",a);if(a>40)printf("%d",a);if(a>30)printf("%d",a);}56、以下程序執(zhí)行后的輸出結(jié)果是__________________。0main(){inta=5,b=4,c=3,d;d=(a>b>c);printf("%d\n",d);}57、C語言中,do-while語句構(gòu)成的循環(huán)只能用break語句退出。(錯)58、從語法角度看,for(表達式1;表達式2;表達式3)語句中的3個表達式均可省略。59、由i=-1;while(i<10)i+=2;i++;可知此while循環(huán)的循環(huán)體執(zhí)行次數(shù)為6次。
60、循環(huán)for(;;)的循環(huán)條件始終為真。(對)61、do…while語句的循環(huán)體至少執(zhí)行1次,while和for循環(huán)的循環(huán)體可能一次也執(zhí)行不到。(對)62、break;語句執(zhí)行時退出本層循環(huán),continue;語句結(jié)束本次循環(huán)。(對)63、for循環(huán)、while循環(huán)和dowhile循環(huán)結(jié)構(gòu)之間可以相互轉(zhuǎn)化。(對)64、執(zhí)行下面語句后x的值為_________inti=1,j=2,x=3;x=(i<j<x)&&(i>j>x)&&(i>j<x)||(i<j>x);65、執(zhí)行下面語句后x的值為_________inti=5,x;if(i>0)x=1;elseif(0<i<4)x=2;elseif(5<=i<8)x=3;elseif(i>=8x=4;elsex=5;66、執(zhí)行下面語句后x的值為_________inti=4,x;switch(i<=0?1:i<=3?2:i<=5?3:i<=7?4:5){case1:x=5;break;case2:x=4;break;case3:x=3;break;case4:x=2;break;default:x=1;}67、執(zhí)行下面程序后輸出結(jié)果為_________#include"stdio.h"voidmain(){inti=4,x=0;for(;i<6;i++)x+=i;printf("%d",x);}68、執(zhí)行下面程序后輸出結(jié)果為_________voidmain(){inti=0,x=0;dox-=i++;while(++i<5);printf("%d",x);}69、執(zhí)行下面程序后輸出結(jié)果為_________voidmain(){inti=0;while(i++^7);printf("%d",i);}70、'執(zhí)行下面程序后輸出結(jié)果為_________(C)voidmain(){chara[]="ABCD";inti=0;while(a[++i]!='\0')printf("%c",a[i]);}A."ABCD"B.C.BCDD.ABC71、下列程序的輸出結(jié)果是_______。(B)main(){intk=0,m=0,i,j;for(i=0;i<2;i++){for(j=0;j<3;j++)k++;k-=j;}m=i+j;printf("k=%d,m=%d",k,m);}A.k=0,m=3B.k=0,m=5C.k=1,m=3D.k=1,m=572、下列程序的輸出結(jié)果是_______。(B)main(){intx=9;for(;x>0;x--){if(x%3==0){printf("%d",--x);continue;}}}A.741B.852C.963D.87542173、循環(huán)語句for(a=0,b=0;a<3&&b!=3;a++);_______。(C)A.是無限循環(huán)B.循環(huán)次數(shù)不定C.循環(huán)3次D.循環(huán)4次74、下面程序的運行結(jié)果是_____。(D)main(){inti,b,k=0;for(i=1;i<=5;i++){b=i%2;while(b-->=0)k++;}printf("%d,%d",k,b);}A.3,1B.8,1C.3,0D.8,-275、以下程序執(zhí)行后的輸出結(jié)果是_____。(D)main(){inti,s=0;for(i=1;i<10;i+=2)s+=i+1;printf("%d\n",s);}
A.自然數(shù)1~9的累加和B.自然數(shù)1~10的累加和C.自然數(shù)1~9中奇數(shù)之和D.自然數(shù)1~10中偶數(shù)之和76、以下程序的功能是:按順序讀入10名學生4門課程的成績,計算出每位學生的平均分并輸出,程序如下:(A)main(){intn,k;floatscore,sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){scanf("%f",&score);sum+=score;}ave=sum/4.0;printf("A.sum=0.0;B.sum+=score;C.ave=sum/4.0;D.printf(NO%d:%f\n",n,ave);77、以下程序執(zhí)行后的輸出結(jié)果是_____。(B)#include<stdio.h>main(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei--;}i+=11;a+=i;}printf("%d\n",a);}A.21B.32C.33D.1178、'以下程序若運行時輸入2.0,則輸出結(jié)果為_______________。0.500000main(){floata,b;scanf("%f",&a);if(a<0.0)b=0.0;elseif((a<0.5)&&(a!=2.0))b=1.0/(a+2.0);elseif(a<10.0)b=1.0/a;elseb=10.0;printf("%f\n",b);}79、以下程序執(zhí)行后的輸出結(jié)果是______。132main(){inti,m=0,n=0,k=0;for(i=9;i<=11;i++)switch(i/10){case0:m++;n++;break;case10:n++;break;default:k++;n++;}printf("%d%d%d\n",m,n,k);}80、以下程序執(zhí)行后的輸出結(jié)果是______________。17main(){intx=15;while(x>10&&x<50){x++;if(x/3){x++;break;}elsecontinue;}printf("%d\n",x);}81、下列程序的運行結(jié)果是________。?s=3main(){ints=0,k;for(k=7;k>4;k--){switch(k){case1:case4:case7:s++;break;case2:case3:case6:break;case0:case5:s+=82、下面程序的功能是將從鍵盤輸入的兩個數(shù)由小到大排序輸出。當輸入兩個相等數(shù)時結(jié)束循環(huán),請?zhí)羁胀瓿沙绦?。a!=bmain(){inta,b,t;scanf("%d,%d",&a,&b);while(______________){if(a>b){t=a;a=b;b=t;}printf("%d,%d\n",a,b);scanf("%d,%d",&a,&b);}}83、C語言中,數(shù)組元素的下標是從1開始的,下標不能越界。(錯)
84、C語言中,數(shù)組元素在內(nèi)存中是順序存放的,它們的地址是連續(xù)的。(對)85、C語言中,用格式符“%s”輸入字符數(shù)組時,數(shù)組名前不能加&。(對)86、C語言中, gets()函數(shù)的返回值是用于存放輸入字符串的字符數(shù)組首地址。(錯)87、二維及多維數(shù)組在定義的同時給數(shù)組賦初值時,可以省略數(shù)組的各維長度。(錯)88、使用字符串處理函數(shù)strcmp需要包含頭文件string.h。(對)89、設有inta;charabc[5]="abcd";則a=strlen(“ABC”);執(zhí)行后a的值為5。(錯)90、'以下程序執(zhí)行后輸出結(jié)果是_______。(B)main(){intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};inti,s=0;for(i=0;i<4;i++)s+=aa[i][1];printf("%d\n",s);}A.11B.19C.13D.2091、以下程序的執(zhí)行后輸出結(jié)果是_______。(C)main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}A.456B.258C.369D.78992、以下對一維整型數(shù)組a的正確說明是_______。(D)A.inta(10);B.intn=10,a[n];C.intn;scanf("%d",&n);inta[n];D.#defineSIZE10inta[SIZE];93、有inta[10]={6,7,8,9,10};對以下說明語句的正確理解是_______。(B)A.將5個初值依次賦給a[1]至a[5]B.將5個初值依次賦給a[0]至a[4]C.將5個初值依次賦給a[6]至a[10]D.因為數(shù)組長度與初值的個數(shù)94、下面程序段的運行結(jié)果是_______。(D)chara[7]="abcdef";charb[4]="ABC";strcpy(a,b);printf("%c",a[5]);A.一個空格B.\0C.eD.f95、有下面程序段,則_______。(D)chara[3],b[]="China";a=b;printf("%s",a);A.運行后將輸出ChinaB.運行后將輸出ChC.運行后將輸出ChiD.編譯出錯96、下面程序段是輸出兩個字符串中對應字符相等的字符。請選擇填空。(A)charx[]="programming";chary[]="Fortran";inti=0;while(x[i]!='\0'&&y[i]!='\0'){if(x[i]==y[i])printf("%c",__________);elsei++;}A.x[i++]B.y[++i]C.x[i]D.y[i]97、下面程序_______。(C)main()/*第1行*/{inta[3]={0},i;/*第2行*/(i=0;i<3;i++)scanf("%d",&a[i]);/*第3行*/for(i=0;i<4;i++)a[0]=a[0]+a[i];/*第4行*/("%d\n",a[0]);}A.沒有錯誤B.第3行有錯C.第4行有錯D.第5行有錯98、以下程序的執(zhí)行后輸出結(jié)果是_______。(C)main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}A.456B.258C.369D.78999、以下程序是求矩陣a和b的和,結(jié)果存入矩陣c中并按矩陣形式輸出。請?zhí)羁?。main()a[i][j]+b[i][j]{inta[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}};intb[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};inti,j,c[3][4];for(i=0;i<3;i++)for(j=0;j<4;j++)c[i][j]=______________;for(i=0;i<3;I100、下面程序的運行結(jié)果是_______。aabcd#include"stdio.h"main(){inti=5;charc[6]="abcd";do{c[i]=c[i-1];}while(--i>0);puts(c);}101、C語言中,實參可以是常量、變量或表達式。(對)102、C語言中,實參的個數(shù)、類型和位置必須與形參的定義一一對應。(對)103、C語言中, 編譯預處理后所有的符號常量名和宏名都用相應的字符串替換。(對)104、不論使用何種參數(shù)傳遞方式,形參變量值的改變都不影響實參變量的值。(錯)105、函數(shù)可以嵌套定義,也可以嵌套調(diào)用。(錯)106、宏展開不作語法檢查,展開時不替換關鍵字和常量。(對)107、下面能正確進行字符串賦值操作的是_______。(C)A.chars[5]={"ABCDE"};B.chars[5]={'A','B','C','D','E'};B.char*s;s="ABCDE";D.char*s;scnaf("%s",&s);108、以下正確的函數(shù)定義形式是_______。(A)A.doublefun(intx,inty)B.doublefun(intx;inty)C.doublefun(intx,y)D.doublfun(intx,y;)109、以下程序的正確運行結(jié)果是_______。(D)main(){inta=2,i;for(i=0;i<3;i++)printf("%3d",f(a));}f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}A.777B.71013C.7911D.789110、以下有關宏替換的敘述不正確的是_______。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025農(nóng)村離婚協(xié)議范本
- 足部皸裂病因介紹
- (分析)白玉開采項目立項申請報告
- (2024)新能源智能裝備建設項目可行性研究報告寫作模板(一)
- (2024)電子商務新城可行性研究報告申請建議書(一)
- 山東省菏澤市鄆城縣第一中學2023-2024學年七年級上學期第一次月考生物試題(原卷版)-A4
- 2023-2024學年天津市部分區(qū)高三(上)期末語文試卷
- 2023年鈹項目融資計劃書
- 2023年鞋用乳液膠粘劑項目融資計劃書
- 安全培訓課件-安全管理
- 醫(yī)療健康合作協(xié)議
- 戲劇表演社管理制度
- 水囊引產(chǎn)護理查房
- 2024屆高考語文 語言文字運用 復習課件
- 2023年CQE客訴工程師年度總結(jié)及下年規(guī)劃
- 2023年秋季國家開放大學-02272-數(shù)據(jù)結(jié)構(gòu)(本)期末考試題帶答案
- 有限空間消防水箱應急預案
- 江西省三新協(xié)同教研共同體2023-2024學年高一上學期12月聯(lián)考物理試卷(解析版)
- 籃球原地單手肩上投籃 教案(表格式)
- 2021-2022學年廣東省廣州市天河區(qū)八年級(上)期末英語試卷
- 慶祝澳門回歸24周年主題班會
評論
0/150
提交評論