全國計(jì)算機(jī)等級(jí)考試二級(jí)c語言試題分析_第1頁
全國計(jì)算機(jī)等級(jí)考試二級(jí)c語言試題分析_第2頁
全國計(jì)算機(jī)等級(jí)考試二級(jí)c語言試題分析_第3頁
全國計(jì)算機(jī)等級(jí)考試二級(jí)c語言試題分析_第4頁
全國計(jì)算機(jī)等級(jí)考試二級(jí)c語言試題分析_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

全國計(jì)算機(jī)等級(jí)考試〔二級(jí)c語言〕試卷分析一、選擇題(每題140小題,共40分)前面的10道題涉及計(jì)算機(jī)根底學(xué)問〔程等方面學(xué)問〕,在這里就不針對(duì)計(jì)算機(jī)根底學(xué)問局部進(jìn)展分析。11.在C語言程序中,main函數(shù)必需放在其他函數(shù)的最前面每個(gè)后綴為CC語言源程序都可以單獨(dú)進(jìn)展編譯在C語言程序中,只有main函數(shù)才可單獨(dú)進(jìn)展編譯每個(gè)后綴為.C的C語言源程序都應(yīng)當(dāng)包含一個(gè)main函數(shù)【解析】BC語言是一種成功的系統(tǒng)描述語言,具有良好的移植性,每個(gè)后綴為.C的C語言源程序都可以單獨(dú)進(jìn)展編譯;C語言程序中,不管包含多少個(gè)后綴為.Cmain函數(shù),而且main函數(shù)在程序中可以放在任何其他函數(shù)之前或之后。語言中的標(biāo)識(shí)符分為關(guān)鍵字、預(yù)定義標(biāo)識(shí)符和用戶標(biāo)識(shí)符,以下表達(dá)正確的選項(xiàng)是()。預(yù)定義標(biāo)識(shí)符(如庫函數(shù)中的函數(shù)名)可用做用戶標(biāo)識(shí)符,但失去原有含義用戶標(biāo)識(shí)符可以由字母和數(shù)字任意挨次組成在標(biāo)識(shí)符中大寫字母和小寫字母被認(rèn)為是一樣的字符關(guān)鍵字可用做用戶標(biāo)識(shí)符,但失去原有含義【解析】A。用戶標(biāo)識(shí)符不能以數(shù)字開頭,C語言中標(biāo)識(shí)符是區(qū)分大小寫的,關(guān)鍵字不能用做用戶標(biāo)識(shí)符。13.99B。當(dāng)用指數(shù)形式表示浮點(diǎn)數(shù)據(jù)時(shí),E后都要有數(shù)據(jù),并且E的后面數(shù)要為整數(shù);整型常量:0123表示八進(jìn)制整型常量,0xab表示十六進(jìn)制整型常量,123為十進(jìn)制整型常量,123L表示長整型常量,123U表示無符號(hào)整型常量,123UL表示無符號(hào)長整型A沒有這種常量,假設(shè)加上雙引號(hào)是可以表示字符串常量。語言主要是借助以下哪個(gè)功能來實(shí)現(xiàn)程序模塊化?()A.定義函數(shù) B.定義常量和外部變量C.三種根本構(gòu)造語句 D.豐富的數(shù)據(jù)類型【解析】A。C語言是由函數(shù)組成的,函數(shù)是C語言的根本單位。所以可以說C語言主要是借助定義函數(shù)來實(shí)現(xiàn)程序模塊化。以下表達(dá)中錯(cuò)誤的選項(xiàng)是()。非零的數(shù)值型常量有正值和負(fù)值的區(qū)分常量是在程序運(yùn)行過程中值不能被轉(zhuǎn)變的量定義符號(hào)常量必需用類型名來設(shè)定常量的類型用符號(hào)名表示的常量叫符號(hào)常量【解析】C。在C語言中,可以用一個(gè)標(biāo)識(shí)符來表示一個(gè)常量,稱之為符號(hào)常量。符號(hào)常量在使用之前必需先定義,其一般形式為:#define標(biāo)識(shí)符常量。假設(shè)有定義和語句:intab;scanf(“%d,%d“&a&b);項(xiàng)中的輸人數(shù)據(jù),不能把值3賦給變量a、5賦給變量b,5, ,5,45 ,5【解析】C。在輸入3和5之間除逗號(hào)外不能有其他字符。答案BA是可以的,緣由是用scanf函數(shù)輸入時(shí),從左往右對(duì)應(yīng)給值,右邊多余的值不輸入進(jìn)去。語言中char類型數(shù)據(jù)占字節(jié)數(shù)為()。【解析】C。在標(biāo)準(zhǔn)C〔ANSI-C〕char類型數(shù)據(jù)占1個(gè)字節(jié)。A.(3+4)>6 B.(3!=4)>2<=4‖3 D.(3<4)=1B。在一個(gè)表達(dá)式中,括號(hào)的優(yōu)先級(jí)高,先計(jì)算3!=4真即是l1>2為假。假設(shè)以下選項(xiàng)中的變量全部為整型變量,且已正確定義并賦值,則語法正確的switch語句是()。(a+9)}a*b}(a+b)case0:case4:y=a-b;}(a*a+b*b){default:break;case2:y=a-b;break;}D。選項(xiàng)A,switch語句中要求case后面必需是常量,不能是變量;選項(xiàng)Ba*bCcase與后面的數(shù)字用空格隔開。留意switch語句語句完畢的方式:一是見到break執(zhí)行到}自然完畢。有以下程序:#includemain{inta=-2,b=0;while(a++&&++b);printf(“%d,%d\n“,a,b);}程序運(yùn)行后的輸出結(jié)果是()。,3 ,2 ,3 ,2【解析】D。while循環(huán)第一次完畢后a,b取值為:-11;其次次完畢后ab02;第三次沒有執(zhí)行循環(huán)體〔空語句〕,了一下a++是否為真,因a0,所以a++a1,所以a的值變成1&&運(yùn)算符的第一個(gè)表達(dá)式為假時(shí),其次個(gè)表達(dá)式不計(jì)算,所以++b不執(zhí)行,故b的值還是2。所以,最終a,b的值為1,2。設(shè)有定義:x=0=x; B.*p=x; =NULL;D.*p=NULL;【解析】C。對(duì)于指針變量p,假設(shè)沒有把p指向一個(gè)指定的值,則說明指針變量p內(nèi)的值是NULL,即空值,也就是說沒有存放任何存儲(chǔ)空間的地址,所以*p是不能被賦值的。定義指針變量不賦初始值時(shí)默認(rèn)為NULL以下表達(dá)中正確的選項(xiàng)是()。可以用關(guān)系運(yùn)算符比較字符串的大小空字符串不占用內(nèi)存,其內(nèi)存空間大小是0兩個(gè)連續(xù)的單引號(hào)是合法的字符常量兩個(gè)連續(xù)的雙引號(hào)是合法的字符串常量【解析】D。比較兩個(gè)字符串大小用函數(shù)strcomp(s,t)系運(yùn)算符比較字符串的大??;空字符串有完畢符〔\0〕,所以也要占用1字節(jié);兩個(gè)連續(xù)的單引號(hào)是不合法,單引號(hào)中間必需有一個(gè)字符〔一般字符或轉(zhuǎn)義字符〕;兩個(gè)連續(xù)的雙引號(hào)表示的是空字符串。有以下程序:#includemain{rhara=’H’;a=(a>=’A’&&a<=’2’)?(a-’A’+’a’):a;printf(“%c\n“,a);}程序運(yùn)行后的輸出結(jié)果是()?!窘馕觥緿。多元運(yùn)算符問號(hào)前面表達(dá)式為真,所以(a-’A’+’a’)賦值給a,括號(hào)里的運(yùn)算是把大寫字母變成小寫字母,所以答案應(yīng)為選D。有以下程序:#includeintf(intx);main{inta,b=0;for(a=0;a<3;a++){b=b+f(a);putchar(’A’ +b);}}intf(intx){returnx*xl;}程序運(yùn)行后的輸出結(jié)果是()。B。第一次循環(huán)時(shí),b=1B;其次次循環(huán)時(shí),b=3,輸出結(jié)果為D;第三次循環(huán)時(shí),b=8,輸出結(jié)果為I。設(shè)有定義:intx[2][3];,則以下關(guān)于二維數(shù)組X的表達(dá)錯(cuò)誤的選項(xiàng)是[0]可看做是由3個(gè)整型元素組成的一維數(shù)組[0]x[l]是數(shù)組名,分別代表不同的地址常量C.X包含6個(gè)元素D.可以用語句x[0]=0;為數(shù)組全部元素賦初值0【解析】D。對(duì)于二維數(shù)組來說,數(shù)組的名字x是一個(gè)二級(jí)指針常量;第一維表示行地址,比方:x[0]表示第一行的地址,而且是個(gè)地址〔一級(jí)指針〕常量,所以x[0]是不能賦值的。設(shè)變量P是指針變量,語句P=NULL;是給指針變量賦NULL值,它等價(jià)于()。=““; =“0“; =0; =“;【解析】C。在C語言中NULL等價(jià)于整數(shù)0。有以下程序:#include <>main,40},*p=a,j;for(i=0;i<=3;i++){a[i]=*p;p++;}printf(“%d\n“,a[2]);}程序運(yùn)行后的輸出結(jié)果是()?!窘馕觥緼。for循環(huán)中第一次循環(huán)時(shí),a[0]=*p,由于有p=a;當(dāng)于a[0]=*a;依據(jù)一維數(shù)組的定式:a[i]=*(a+i),說明每次循環(huán)是將數(shù)組的當(dāng)前元素賦值給自己,后面每次循環(huán)依此類推。所以,for循環(huán)完畢后,數(shù)組a的值并沒有變化,由于數(shù)組下標(biāo)是由0開頭,所以a[2]的值是30有以下程序:#include<>#defineN3voidfun(inta[][N],intb[]){inti,j;for(i=0;i<N;i++){b[i]=a[i][0];for(j=0;j<N;j++)if(a[i][j]>b[i]) b[i]=a[i][j];}}main{intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;fun(x,y);for(i=0;i<N;i++)printf(“%d,”,y[i]);}程序運(yùn)行后的輸出結(jié)果是()。,4,8, ,6,9,,5,7, ,3,5,B。fun函數(shù)功能是把數(shù)組a的每一行的最大值賦給ba的第一行的最大值是3,其次行的最大值是6,第三行的最大值是9,所以答案是369。有以下程序(strcpy為字符串復(fù)制函數(shù),strcat為字符串連接函數(shù)):#include<>#include<>mainb[10]=“012“,c[10]=“xyz“;strcpy(a+1,b+2);puts(strcat(a,c+1));}程序運(yùn)行后的輸出結(jié)果是()?!窘馕觥緾。第一次執(zhí)行字符串的復(fù)制函數(shù)后,字符串a(chǎn)中的值是a2a字符串變成了a2yz再輸出,所以運(yùn)行結(jié)果為a2yz。此題最主要的是了解字符串名加一個(gè)整型常量所代表的字符串是什么,比方:有chara[10]=“abc“;定義,則字符串a(chǎn)abc;而字符串a(chǎn)+1的值是bca+2的值是c;字符串b+3的值是\0,即不空串。以下選項(xiàng)中,合法的是()。str3[]={’d’,’e’,’b’,’u’,’g’,’\0’};str4;str4=“helloworld“;name[10];name=“china“;A。選項(xiàng)B不能把一個(gè)字符串賦值給一個(gè)字符變量str4選項(xiàng)C和D犯了同樣的錯(cuò)誤是把字符串賦給了數(shù)組名,數(shù)組名是一個(gè)指針常量,常量是不能被賦值的。有以下程序:#include<>main{char*s=“[2]34“;intk=0 while(s[k+1]!=’\0’){k++;if(k%2==0){a=a+(s[k]- a=a+(s[k]-’0’);printf(“k=%da=%d\n“ ,k,a);}程序運(yùn)行后的輸出結(jié)果是()。=6a=11 =3a=14=4a=12 =5a=15C。輸出結(jié)果:k=1a=2k=2a=4k=3a=7k=4a=12有以下程序:#include<>main{chara[5][10]={“one“ ,“two“,“three“,“four“,“five“};chart:for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(a[i][0]>a[j][0]){t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}puts(a[1]);}程序運(yùn)行后的輸出結(jié)果是()?!窘馕觥緼for循環(huán)完成的功能是把二維數(shù)組a的第一列的字母按從小到大排序,其他列的字母不變。排序方法是類冒泡排序。有以下程序:#include<>inta=1,b=2;voidfunl(inta,intb){printf(“%d%d“,a,b);}voidfun2{a=3;b=4;}main{funl(5,6);fun2;printf(“%d%d\n“,a,b);}程序運(yùn)行后的輸出結(jié)果是()。256634612456【解析】B。funl是輸出局部變量的值,fun2是把全局變量的值改34,所以輸出的結(jié)果是5634。當(dāng)全局變量與局部變量同名時(shí),在重疊的作用域中,局部變量起作用〔可憐原則,即誰的作用域小誰就在重疊的作用域中起作用〕有以下程序:#includevoidfunc(intn){staticintnum=1;num=num+n;printf(“%d“ }main{func(3);func(4);printf(“\n“);}程序運(yùn)行后的輸出結(jié)果是()。8 4 5 5【解析】A。第一調(diào)用func函數(shù)時(shí)輸出4,其次次調(diào)用func函數(shù)時(shí)num的值并不會(huì)釋放,仍舊是上次〔第一次調(diào)用func函數(shù)時(shí)〕修改后的4,其次次調(diào)用結(jié)果為8,所以輸出結(jié)果是48。此題考的是靜態(tài)局部變量的作用域與生存期〔存放在靜態(tài)存儲(chǔ)區(qū)〕不一致的狀況,第一次調(diào)用完后,靜態(tài)局部變量num的值為4,存放到靜態(tài)存儲(chǔ)區(qū),函數(shù)func執(zhí)行完畢,其作用域消逝,但存放在靜態(tài)存儲(chǔ)區(qū)的num變量的值4但仍舊不能拿出來用,只能等下次再進(jìn)入作用域時(shí),即第二次調(diào)用函數(shù)func時(shí),又進(jìn)入靜態(tài)局部變量num的作用域,此時(shí),變量num又可以拿出來使用,由于已經(jīng)存在靜態(tài)存儲(chǔ)區(qū),所以不用重定義該變量,可以直接從靜態(tài)存儲(chǔ)區(qū)取出變量num的值〔4〕來使用,所以其次次調(diào)用后,num的值變成了8。有以下程序:#include<>#include<>voidfun(int*pl,int*p2,int*s){s=(int*)malloc(sizeof(int));*s=*pl+*p2;free(s);}main{inta=1,b=40,*q=&a;fun(&a,&b,q);printf(“%d\n“,*q);}程序運(yùn)行后的輸出結(jié)果是()。C。fun函數(shù)功能是開拓內(nèi)存空間〔地址s〕ab的值〔&a、&b將地址復(fù)制給p1p2〕,q的地址并沒有變化,所以應(yīng)當(dāng)還是指向地址a。有以下程序:#include<>structSTU{charname[9];charsex;intscore[2];};voidf(structSTUa[]){structSTUb={“Zhao“ ,’m’,85,90);a[1]=b;}mainSTUc[2]={{“Qian“,’f’,95,92},{“Sun“,’m’98,99}};f(c);c[o].score[1]);c[1].score[1]);}程序運(yùn)行后的輸出結(jié)果是()。,m,85,90,Sun,m,98,99,m,85,90,Qian,f,95,92,f,95,92,Sun,m,98,99,f,95,92,Zhao,m,85,90【解析】D。f函數(shù)是為構(gòu)造體數(shù)組的其次個(gè)元素〔構(gòu)造體類型的元素〕賦值,數(shù)組的第一個(gè)元素沒有變化,所以正確答案應(yīng)選D。以下表達(dá)中錯(cuò)誤的選項(xiàng)是()。A.typedef說明的類型名來定義變量說明的類型名必需使用大寫字母,否則會(huì)出編譯錯(cuò)誤C.typedef可以為根本數(shù)據(jù)類型說明一個(gè)名稱D.typedef說明類型的作用是用一個(gè)的標(biāo)識(shí)符來代表已存在的類型名【解析】Btypedef是用來定義類型,或定義原有類型的別名〔名稱〕typedef說明的類型不是必需用大寫,而是習(xí)慣上用大寫。以下表達(dá)中錯(cuò)誤的選項(xiàng)是()。函數(shù)的返回值類型不能是構(gòu)造體類型,只能是簡潔類型函數(shù)可以返回指向構(gòu)造體變量的指針可以通過指向構(gòu)造體變量的指針訪問所指構(gòu)造體變量的任何成員只要類型一樣,構(gòu)造體變量之間可以整體賦值A(chǔ)。函數(shù)返回值類型可以是簡潔類型和構(gòu)造體類型。假設(shè)有定義語句intb=2;,則表達(dá)式(b<<2)/(3‖b)B。2的二進(jìn)制數(shù)為010,移兩位后的二進(jìn)制數(shù)為01000轉(zhuǎn)成十制數(shù)為8,(3||2)為真即18/1=88。有以下程序:#include<>main{FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen(““,“w+“);for=(i=0;i<6;i++)fpintf(fp ,“%d\n“,a[i]);rewind(fp);for(i=0;i<6;i++)fscanf(fp ,“%d“,&a[5-i]);fclose(fp);for(i=0;i%6;i++)printf(“%d ,“,a[i]);}程序運(yùn)行后的輸出結(jié)果是()。,5,6,1,2,3,,2,3,3,2,1,,2,3,4,5,6,,5,4,3,2,1,D。這個(gè)是對(duì)文件的操作,把數(shù)組的數(shù)寫到文件里,然后再從文件里倒序讀出。所以輸出結(jié)果為654321。二、根本操作題(共18分)str是一個(gè)由數(shù)字和字母字符組成的字符串,由變量num傳入字符串長度。請(qǐng)補(bǔ)充函數(shù)proc,該函數(shù)的功能是:把字符串str中的數(shù)字字符轉(zhuǎn)換成數(shù)字并存放到整型數(shù)組bb中,函數(shù)返回?cái)?shù)組bb的長度。str=“abcl23de45f967“,結(jié)果為:l234567留意:局部源程序給出如下。請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的橫線上填入所編寫的假設(shè)干表達(dá)式或語句。試題程序:#include<>#defineM80intbb[M];intproc(charstr[],intbb[],intnum){inti,n=0;if(【1】){bb[n]=2】;n++;}}return 【3】;}voidmain{charstr[M];intnum=0,n,i;printf(“Enterastring :\n“);gets(str);while(str[num]) n=proc(str,bb,num);printf(“\nbb=“);for(i=0;i<n;i++)printf(“%d“ ,bb[i]);}1】str[i]>=’0’&&str[i]<=’9’【2】str[i]-’O’3】n【解析】題目中要求把字符串str中的數(shù)字字符轉(zhuǎn)換成數(shù)字并存放到整型數(shù)組bb中。首先,應(yīng)推斷字符串str中每個(gè)字符是否是數(shù)字字符。因此,【1】處填“str[i]>=’0’&&str[i]<=’9’”將每一個(gè)數(shù)字字符轉(zhuǎn)化為數(shù)字放在整型數(shù)組bb2“str[i]-’0’;由函數(shù)proc可知,變量n中存放整型數(shù)組bb中的元素個(gè)數(shù),最終要返回到主函數(shù)當(dāng)中,因此,【3n’三、程序改錯(cuò)題(共24分)以下給定程序中,函數(shù)proc的功能是:讀入一個(gè)字符串(長度<20),將該字符串中的全部字符按ASCIl碼升序排序后輸出。例如,輸入opdyedeopy請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。main函數(shù),不得增行或刪行,也不得更改程序的構(gòu)造。試題程序:#include<>#include<>#include//****found****intproc(charstr[]){charc;for(i=0;i<strlen(str)-1;i++)for(j=i+1;j<strlen(str);j++)if(str[i]>str[j]){c=str[j]://****found****str[j]=str[i++];str[i]=c;}}voidmain{charstr[81];system(“CLS“);printf(“\nPleaseenteracharacterstring :“);gets(str);printf(“\nk

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論