計(jì)算機(jī)二級(jí)題庫(kù)_第1頁(yè)
計(jì)算機(jī)二級(jí)題庫(kù)_第2頁(yè)
計(jì)算機(jī)二級(jí)題庫(kù)_第3頁(yè)
計(jì)算機(jī)二級(jí)題庫(kù)_第4頁(yè)
計(jì)算機(jī)二級(jí)題庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

模擬試題(一)1.填空題請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把從主函數(shù)中輸入的字符串str2接在字符串str1的后面。例如:str1=“Howdo”,str2=“youdo?”,結(jié)果輸出:Howdoyoudo?注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:}答案及評(píng)析:【1】*(p1+i) 【2】*p2 【3】*p2++【解析】填空1:變量i用來(lái)記錄字符串str1的長(zhǎng)度,當(dāng)指針指到字符串str1結(jié)束標(biāo)志符‘\0'時(shí),while循環(huán)結(jié)束,變量i停止累加。填空2:指針p2指向字符串str2,通過(guò)for循環(huán)將字符串str2接在str1后面,循環(huán)結(jié)束的條件是指針p2所指的字符是字符串結(jié)束標(biāo)志符‘\0'。填空3:指針p2最初指向字符串str2的首字符,通過(guò)自加1,使指針p2依次向后移動(dòng),指向str2的各個(gè)字符,實(shí)現(xiàn)將字符串str2接在str1后面的功能。2.改錯(cuò)題下列給定程序中,函數(shù)fun()的作用是:將字符串tt中的小寫(xiě)字母都改為對(duì)應(yīng)的大寫(xiě)字母,其他字符不變。例如,若輸入"edS,dAd",則輸出"EDS,DAD"。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#include<string.h>#include<conio.h>/**********************found***********************/charfun(chartt[]){inti;for(i=0;tt[i];i++){/**********************found***********************/if((tt[i]>='A')&&(tt[i]<='Z'))tt[i]-=32;}return(tt);}main(){inti;chartt[81];clrscr();printf("\nPleaseenterastring:");gets(tt);printf("\nTheresultstringis:\n%s",fun(tt));}答案及評(píng)析:(1)錯(cuò)誤:charfun(chartt[])正確:char*fun(chartt[])(2)錯(cuò)誤:if((tt[i]>='A')&&(tt[i]<='Z'))正確:if((tt[i]>='a')&&(tt[i]<='z'))【解析】錯(cuò)誤1:函數(shù)的返回值是字符串的首地址,是指針類(lèi)型,所以在函數(shù)名前要加'*'號(hào)。錯(cuò)誤2:題目要求將小寫(xiě)字母改為大寫(xiě)字母,所以if語(yǔ)句的判斷條件是小寫(xiě)字母。3.編程題請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p到n-1(p≤n-1)的數(shù)組元素平移到數(shù)組的前面。例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值為6。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為7,8,9,10,10,11,12,13,14,15,1,2,3,4,5,6。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};inti,p,n=15;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\nEnterp:");scanf("%d",&p);fun(a,p,n);printf("\nThedataaftermoving:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");}答案及評(píng)析:voidfun(int*w,intp,intn){inti,j,t;for(i=p;i<=n-1;i++)/*循環(huán)右移n-p次*/{t=w[n-1];for(j=n-2;j>=0;j--)/*實(shí)現(xiàn)循環(huán)右移*/w[j+1]=w[j];w[0]=t;}}【解析】本題采用"循環(huán)右移"的算法。和我們?cè)谇懊娣治龅纳杂胁煌氖?,一個(gè)是整型數(shù)組,一個(gè)是字符型數(shù)組。模擬試題(二)1.填空題請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是求一維數(shù)組x[N]的平均值,并對(duì)所得結(jié)果進(jìn)行四舍五入(保留兩位小數(shù))。例如:當(dāng)x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0},結(jié)果為:avg=15.030000。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:}答案及評(píng)析:【1】sum+=x[i] 【2】avg*1000 【3】(avg+5)/10【解析】填空1:通過(guò)for循環(huán)求出10個(gè)數(shù)的累加和,存于變量sum中。填空2:為了實(shí)現(xiàn)四舍五入保留兩位小數(shù)的功能,應(yīng)將平均值先擴(kuò)大1000倍。填空3:將平均值加上5,再除以10,實(shí)現(xiàn)四舍五入的功能。2.改錯(cuò)題下列給定程序中,函數(shù)fun()的功能是:先從鍵盤(pán)上輸入一個(gè)3行3列的矩陣的各個(gè)元素的值,然后輸出主對(duì)角線元素之積。請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>intfun(){inta[3][3],mul;inti,j;mul=1;for(i=0;i<3;i++){/**********************found***********************/for(i=0;j<3;j++)scanf("%d",&a[i][j]);}for(i=0;i<3;i++)/**********************found***********************/mul=mul*a[i][j];printf("Mul=%d\n",mul);}main(){fun();}答案及評(píng)析:(1)錯(cuò)誤:for(i=0;j<3;j++)正確:for(j=0;j<3;j++)(2)錯(cuò)誤:mul=mul*a[i][j];正確:mul=mul*a[i][i];【解析】錯(cuò)誤1:循環(huán)結(jié)構(gòu)中,要給變量j賦初值0。錯(cuò)誤2:主對(duì)角元素的行號(hào)和列號(hào)相等,所以參加乘法的是a[i][i],而不是a[i][j]。3.編程題學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中。注意:分?jǐn)?shù)低的學(xué)生可能不只一個(gè),函數(shù)返回分?jǐn)?shù)最低學(xué)生的人數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b){}main(){STRECs[N]={{"GA005",82},{"GA003",75},{"GA002",85},{"GA004",78},{"GA001",95},{"GA007",62},{"GA008",60},{"GA006",85},{"GA015",83},{"GA013",94},{"GA012",78},{"GA014",97},{"GA011",60},{"GA017",65},{"GA018",60},{"GA016",74}};STRECh[N];inti,n;FILE*out;n=fun(s,h);printf("The%dlowestscore:\n",n);for(i=0;i<n;i++)printf("%s%4d\n",h[i].num,h[i].s);/*輸出最低分學(xué)生的學(xué)號(hào)和成績(jī)*/printf("\n");out=fopen("out19.dat","w");fprintf(out,"%d\n",n);for(i=0;i<n;i++);fprintf(out,"%4d\n",h[i].s);fclose(out);}答案及評(píng)析:intfun(STREC*a,STREC*b){inti,j=0,min=a[0].s;for(i=0;i<N;i++)if(min>a[i].s)min=a[i].s;/*找出最小值*/for(i=0;i<N;i++)if(min==a[i].s)b[j++]=a[i];/*找出成績(jī)與min相等的學(xué)生的記錄,存入結(jié)構(gòu)體b中*/returnj;/*返回最低成績(jī)的學(xué)生人數(shù)*/}【解析】該程序使用循環(huán)嵌套,第1個(gè)for語(yǔ)句的作用是找出最小值。第2個(gè)循環(huán)的作用是找出與min相等的成績(jī),也即最低成績(jī)的學(xué)生記錄,并存入b中。模擬試題(三)1.填空題請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:從‘a(chǎn)’到‘z’統(tǒng)計(jì)一個(gè)字符串中所有字母字符各自出現(xiàn)的次數(shù),結(jié)果保存在數(shù)組alf中。注意:不區(qū)分大小寫(xiě),不能使用字符串庫(kù)函數(shù)。例如,輸入:“A=abc+5*c”,結(jié)果為:a=2,b=1,c=2。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:}答案及評(píng)析:【1】alf[i]=0 【2】*p+=32 【3】p++【解析】填空1:數(shù)組alf[26]用來(lái)存放字母字符出現(xiàn)的次數(shù),在使用之前需要清零。填空2:題目要求不區(qū)分大小寫(xiě),所以可以先將所有的大寫(xiě)字母都轉(zhuǎn)換為對(duì)應(yīng)的小寫(xiě)字母,然后一并記錄出現(xiàn)的次數(shù)。將大寫(xiě)字母轉(zhuǎn)換為對(duì)應(yīng)的小寫(xiě)字母,只需將ASCII碼加上32就可以了。填空3:指針p指向字符串tt,通過(guò)p自加1來(lái)移動(dòng)指針,訪問(wèn)字符串中的所有字符。2.改錯(cuò)題下列給定程序中函數(shù)fun()的功能是:從低位開(kāi)始取出長(zhǎng)整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。例如,當(dāng)s中的數(shù)為4576235時(shí),t中的數(shù)為4725。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#include<conio.h>/**********************found***********************/intfun(longs,long*t){longs1=10;*t=s%10;while(s>0){/**********************found***********************/s=s%100;*t=s%10*s1+*t;s1=s1*10;}}main(){longs,t;clrscr();printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}答案及評(píng)析:(1)錯(cuò)誤:intfun(longs,long*t)正確:voidfun(longs,long*t)(2)錯(cuò)誤:s=s%100;正確:s=s/100;【解析】錯(cuò)誤1:函數(shù)由指針來(lái)完成參數(shù)的傳遞,所以沒(méi)有返回值,應(yīng)定義函數(shù)的類(lèi)型為void。錯(cuò)誤2:此處要注意特殊運(yùn)算符號(hào)"%"--取余和"/"--整除的區(qū)別。將一個(gè)數(shù)整除100則可得到由其百位數(shù)以上的數(shù)組成的新數(shù)字,將一個(gè)數(shù)整除100取余則可得到由十位數(shù)和個(gè)位數(shù)組成的新數(shù)。3.編程題請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),它的功能是:求出一個(gè)4×M整型二維數(shù)組中最小元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#defineM4#include<stdio.h>fun(inta[][M]){}main(){intarr[4][M]={11,3,9,35,42,-4,24,32,6,48,-32,7,23,34,12,-7};printf("min=%d\n",fun(arr));}答案及評(píng)析:fun(inta[][M]){inti,j,min=a[0][0];for(i=0;i<4;i++)for(j=0;j<M;j++)if(min>a[i][j])min=a[i][j];/*求出二維數(shù)組的最小值*/returnmin;}【解析】此類(lèi)求最大值或最小值的C語(yǔ)言問(wèn)題,我們可以采用逐個(gè)比較的方式。要求數(shù)組中的所有元素走動(dòng)一遍,并從中找出最大、最小值,要注意一開(kāi)始應(yīng)使min存放數(shù)組中的第一個(gè)元素的值??砂粗鹦胁檎乙部砂粗鹆胁檎业姆绞?,本題采用的是逐行查找的方式。即行下標(biāo)在外層循環(huán),列下標(biāo)在內(nèi)層循環(huán),因?yàn)樵谘h(huán)的嵌套中越在內(nèi)層循環(huán),循環(huán)變化就越快。模擬試題(四)1.填空題請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:分類(lèi)統(tǒng)計(jì)一個(gè)字符串中元音字母和其他字符的個(gè)數(shù)(不區(qū)分大小寫(xiě))。例如,輸入aeiouAOUpqrt,結(jié)果為A:2E:1I:1O:2U:2other:4。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:}答案及評(píng)析:【1】bb[i]=0 【2】bb[5]++ 【3】p++;【解析】填空1:數(shù)組bb[6]用來(lái)存放5個(gè)元音字母和其他字符的個(gè)數(shù),在使用之前需要清零。填空2:數(shù)組元素bb[5]用來(lái)存放其他字符的個(gè)數(shù),當(dāng)指針p所指的字符不是元音字母時(shí),則認(rèn)為是其他字符,bb[5]加1。填空3:指針p指向字符串str,通過(guò)p自加1來(lái)移動(dòng)指針,訪問(wèn)字符串中的所有字符。2.改錯(cuò)題下列給定的程序中,函數(shù)fun()的功能是:計(jì)算并輸出k以?xún)?nèi)最大的6個(gè)能被7或11整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為2925。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#include<conio.h>intfun(intk){intm=0,mc=0,j;/**********************found***********************/while(k>=2)&&(mc<6){/**********************found***********************/if((k%7=0)||(k%11=0)){/**********************found***********************/m=k;mc++;}k--;}returnm;}main(){clrscr();printf("%d\n",fun(500));}答案及評(píng)析:(1)錯(cuò)誤:while(k>=2)&&(mc<6)正確:while((k>=2)&&(mc<6))(2)錯(cuò)誤:if((k%7=0)||(k%11=0))正確:if((k%7==0)||(k%11==0))(3)錯(cuò)誤:m=k;正確:m=m+k;【解析】錯(cuò)誤1:C語(yǔ)言規(guī)定while語(yǔ)句后的表達(dá)式兩側(cè)必須要有圓括號(hào)。錯(cuò)誤2:if語(yǔ)句的判斷條件應(yīng)用關(guān)系運(yùn)算符,而不是賦值運(yùn)算符。錯(cuò)誤3:根據(jù)題意,將滿(mǎn)足條件的數(shù)求累加和。3.編程題請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),它的功能是:將ss所指字符串中所有下標(biāo)為偶數(shù)位置的字母轉(zhuǎn)換為小寫(xiě)(若該位置上不是字母,則不轉(zhuǎn)換)。例如,若輸入ABC4efG,則應(yīng)輸出aBc4efg。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*ss){}main(){chartt[81];clrscr();printf("\nPleaseenteranstringwithin80characters:\n");gets(tt);printf("\n\nAfterchanging,thestring\n\%s",tt);fun(tt);printf("\nbecomes\n\%s\n",tt);}答案及評(píng)析:voidfun(char*ss){inti;for(i=0;ss[i]!='\0';i++)/*將ss所指字符串中所有下標(biāo)為偶數(shù)位置的字母轉(zhuǎn)換為小寫(xiě)*/if(i%2==0&&ss[i]>='A'&&ss[i]<='Z')ss[i]=ss[i]+32;}【解析】從C語(yǔ)言的學(xué)習(xí)中我們知道,只要將小寫(xiě)字母減去32則轉(zhuǎn)成大寫(xiě)字母,將大寫(xiě)字母加上32則轉(zhuǎn)成小寫(xiě)字母。該程序是用if語(yǔ)句實(shí)現(xiàn)該功能轉(zhuǎn)化的。模擬試題(五)1.填空題str是全部由小寫(xiě)字母字符和空格字符組成的字符串,由num傳入字符串的長(zhǎng)度。請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:統(tǒng)計(jì)字符串str中的單詞個(gè)數(shù),結(jié)果由變量num傳回。每個(gè)單詞之間都由空格隔開(kāi),并且字符串str開(kāi)始不存在空格。例如:str=“howdoyoudo”,結(jié)果為:num=4。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:}答案及評(píng)析:【1】i<*num 【2】n++ 【3】*num=n【解析】填空1:*num傳入字符串的長(zhǎng)度,所以for循環(huán)中變量i的變化范圍是從0到*num-1。填空2:如果當(dāng)前判斷的字符是小寫(xiě)字母,并且它的下一個(gè)字符是空格或者是字符串結(jié)束標(biāo)記符,則表示當(dāng)前字符是一個(gè)單詞的最后一個(gè)字母,統(tǒng)計(jì)單詞數(shù)的變量n要加上1。填空3:題目要求結(jié)果由變量num傳回,所以要將n的值賦給指針num所指的單元。2.改錯(cuò)題下列給定程序中,fun()函數(shù)的功能是:根據(jù)形參m,計(jì)算下列公式的值。t=1-1/2+1/3-1/4+…+(-1)(m+1)/m例如,若輸入5,則應(yīng)輸出0.783333。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<conio.h>#include<stdio.h>/**********************found***********************/intfun(intm){doublet=1.0,j=1.0;inti;/**********************found***********************/for(i=1;i<m;i++){j=-1*j;t+=j/i;}returnt;}main(){intm;clrscr();printf("\nPleaseenter1integernumber:");scanf("%d",&m);printf("\nTheresultis%lf\n",fun(m));}答案及評(píng)析:(1)錯(cuò)誤:intfun(intm)正確:doublefun(intm)(2)錯(cuò)誤:for(i=1;i<m;i++)正確:for(i=2;i<=m;i++)【解析】錯(cuò)誤:函數(shù)的返回值為實(shí)型數(shù),所以應(yīng)定義為double類(lèi)型。錯(cuò)誤2:根據(jù)題目的公式,參加運(yùn)算的數(shù)應(yīng)從2到m,包括m。3.編程題請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>voidfun(int*a,int*n){}main(){intaa[1000],n,k;clrscr();fun(aa,&n);for(k=0;k<n;k++)if((k+1)%10==0){printf("%5d",aa[k]);printf("\n");/*一行寫(xiě)10個(gè)數(shù)*/}elseprintf("%5d",aa[k]);}答案及評(píng)析:voidfun(int*a,int*n){inti,j=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù),并放入數(shù)組a中*/if((i%5==0||i%13==0)&&i%65!=0)a[j++]=i;*n=j;/*傳回滿(mǎn)足條件的數(shù)的個(gè)數(shù)*/}【解析】注意本題題目是找出能被5或13整除但不能同時(shí)被5和13整除的所有整數(shù)。能同時(shí)被5和13整除的整數(shù)一定能被65整除,且不能被65整除的數(shù)不一定就是能被5或13整除的數(shù)。所以可得出程序中的if()。按運(yùn)算優(yōu)先級(jí)可知(i%5==0||i%13==0),注意,兩邊必須要有小括號(hào)。模擬試題(六)1.填空題str是一個(gè)由數(shù)字和字母字符組成的字符串,由變量num傳入字符串長(zhǎng)度。請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把字符串str中的數(shù)字字符轉(zhuǎn)換成數(shù)字并存放到整型數(shù)組bb中,函數(shù)返回?cái)?shù)組bb的長(zhǎng)度。例如:str=“Bcd123e456hui890”,結(jié)果為:123456890。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:}答案及評(píng)析:【1】s[i]>=′0′&&s[i]<=′9′ 【2】s[i]-′0′ 【3】n【解析】填空1:如果當(dāng)前字符的ASCII碼大于字符′0′的ASCII碼,而小于字符′9′的ASCII碼,則說(shuō)明當(dāng)前字符是數(shù)字字符。填空2:將數(shù)字字符轉(zhuǎn)換為數(shù)字的方法是,用當(dāng)前數(shù)字字符的ASCII碼減去字符′0′的ASCII碼。填空3:題目要求函數(shù)返回?cái)?shù)組bb的長(zhǎng)度,而變量n記錄了數(shù)字字符的個(gè)數(shù),也就是數(shù)組bb的長(zhǎng)度,所以函數(shù)應(yīng)該返回n。2.改錯(cuò)題下列給定程序中,函數(shù)fun()的功能是:從n個(gè)學(xué)生的成績(jī)中統(tǒng)計(jì)出高于平均分的學(xué)生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲(chǔ)單元中。例如輸入8名學(xué)生的成績(jī):8565.56995.5875562.575則高于平均分的學(xué)生人數(shù)為4(平均分為74.312500)。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#include<conio.h>#defineN20intfun(float*s,intn,float*aver){/**********************found***********************/intave,t=0;intcount=0,k,i;for(k=0;k<n;k++)t+=s[k];ave=t/n;for(i=0;i<n;i++)/**********************found***********************/if(s[i]<ave)count++;/**********************found***********************/aver=ave;returncount;}main(){floats[30],aver;intm,i;clrscr();printf("\nPleaseenterm:");scanf("%d",&m);printf("\nPleaseenter%dmark:\n",m);for(i=0;i<m;i++)scanf("%f",s+i);printf("\nThenumberofstudents:%d\n",fun(s,m,&aver));printf("Ave=%f\n",aver);}答案及評(píng)析:(1)錯(cuò)誤:intave,t=0;正確:floatave,t=0.0;(2)錯(cuò)誤:if(s[i]<ave)正確:if(s[i]>ave)(3)錯(cuò)誤:aver=ave;正確:*aver=ave;【解析】錯(cuò)誤1:ave和t分別用來(lái)存放成績(jī)的平均值和總分,應(yīng)為實(shí)型數(shù)。錯(cuò)誤2:根據(jù)題意,找出高于平均分的數(shù),所以此處的關(guān)系運(yùn)算符應(yīng)為">"錯(cuò)誤3:aver是指針,而ave是一個(gè)數(shù),不能將一個(gè)數(shù)賦值給一個(gè)指針,而要用符號(hào)'*'。3.編程題請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),它的功能是:比較兩個(gè)字符串的長(zhǎng)度,(不得調(diào)用C語(yǔ)言提供的求字符串長(zhǎng)度的函數(shù)),函數(shù)返回較短的字符串。若兩個(gè)字符串長(zhǎng)度相等,則返回第1個(gè)字符串。例如,輸入nanjing<CR>nanchang<CR>(<CR>為回車(chē)鍵),函數(shù)將返回nanjing。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>char*fun(char*s,char*t){}main(){chara[20],b[10],*p,*q;inti;printf("Input1thstring:");gets(a);printf("Input2thstring:");gets(b);printf("%s",fun(a,b));}答案及評(píng)析:char*fun(char*s,char*t){inti,j;for(i=0;s[i]!='\0';i++);/*求字符串的長(zhǎng)度*/for(j=0;t[j]!='\0';j++);if(i<=j)/*比較兩個(gè)字符串的長(zhǎng)度*/returns;/*函數(shù)返回較短的字符串,若兩個(gè)字符串長(zhǎng)度相等,則返回第1個(gè)字符串*/elsereturnt;}【解析】本題中,第1個(gè)for循環(huán)的作用是求出s的字符個(gè)數(shù)i,第2個(gè)for循環(huán)的作用是求出t的字符個(gè)數(shù)j,因?yàn)槿魏窝h(huán)都要控制一條語(yǔ)句,所以在每一個(gè)for循環(huán)條件后面必須要有一個(gè)分號(hào)。本題也可用如下技巧:#include<string.h>/*一定要注意在最前面加#include<string.h>*/char*fun(char*s,char*t){if(strlen(s)>=strlen(t)returns;elsereturnt;}模擬試題(七)1.填空題從鍵盤(pán)輸入一組無(wú)符號(hào)整數(shù)并保存在數(shù)組xx[N]中,以整數(shù)0結(jié)束輸入,要求這些數(shù)的最大位數(shù)不超過(guò)4位,其元素的個(gè)。例如:當(dāng)xx[8]={123,11,25,222,42,333,14,5451}時(shí),bb[4]={25,42,333,5451}。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:}答案及評(píng)析:【1】xx[i]%10 【2】bb[n++]=xx[i] 【3】n【解析】填空1:將一個(gè)整數(shù)對(duì)10取余,則得到這個(gè)整數(shù)的個(gè)位數(shù),將一個(gè)整數(shù)除以10再對(duì)10取余,則得到這個(gè)整數(shù)的十位數(shù)。由程序可以看出,變量s保存了整數(shù)的十位數(shù),所以應(yīng)該將整數(shù)的個(gè)位數(shù)保存于變量g中。填空2:當(dāng)整數(shù)的個(gè)位與十位的數(shù)字之和大于5時(shí),則將這個(gè)整數(shù)存于數(shù)組bb中,同時(shí),變量n記錄了滿(mǎn)足條件的無(wú)符號(hào)整數(shù)的個(gè)數(shù)。填空3:題目要求滿(mǎn)足條件的無(wú)符號(hào)整數(shù)的個(gè)數(shù)由fun函數(shù)返回,所以函數(shù)返回n。2.改錯(cuò)題下列給定程序中,函數(shù)fun()的功能是:在字符串str中找出ASCⅡ碼值最小的字符,將其放在第一個(gè)位置上,并將該字符前的原字符向后順序移動(dòng)。例如,調(diào)用fun()函數(shù)之前給字符串輸入fagAgBDh,調(diào)用后字符串中的內(nèi)容為AfaggBDh。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>/**********************found***********************/voidfun(charp){charmin,*q;inti=0;min=p[i];while(p[i]!=0){if(min>p[i]){/**********************found***********************/p=q+i; min=p[i];}i++;}while(q>p){*q=*(q-1);q--;}p[0]=min;}main(){charstr[80];printf("Enterastring:");gets(str);printf("\nTheoriginalstring:");puts(str);fun(str);printf("\nThestringaftermoving:");puts(str);printf("\n\n");}答案及評(píng)析:(1)錯(cuò)誤:voidfun(charp)正確:voidfun(char*p)(2)錯(cuò)誤:p=q+i;正確:q=p+i;【解析】錯(cuò)誤:由于本題中函數(shù)的功能是對(duì)字符串進(jìn)行處理,而不是對(duì)單個(gè)字符進(jìn)行處理,因此,函數(shù)的參數(shù)應(yīng)為字符串指針。錯(cuò)誤2:使指針q指向ASCII碼最小的字符本題解答需要3個(gè)步驟:(1)找到字符串中ASCII碼值最小的字符,并保存。(2)將該字符復(fù)制,并將該字符前面的字符串順次后移。(3)將ASCII碼值最小的字符賦給字符串的第1個(gè)字符。找到ASCII碼值最小的字符可以通過(guò)定義一個(gè)字符min,該字符初始時(shí)等于字符串的第1個(gè)字符,若字符串的下一個(gè)字符小于min,則將下一個(gè)字符賦給min,如此循環(huán)到字符尾,即可得到ASCII碼值最小的字符,同時(shí)令指針q指向最小字符。之后對(duì)最小字符前面的子串順次后移,可采用while語(yǔ)句實(shí)現(xiàn)。此題需要熟練掌握和靈活應(yīng)用C語(yǔ)言的字符與整型變量的關(guān)系以及字符串操作。3.編程題N名學(xué)生的成績(jī)已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:找出學(xué)生的最低分,由函數(shù)值返回。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>#include<stdlib.h>#defineN8structslist{doubles;structslist*next;};typedefstructslistSTREC;doublefun(STREC*h){}STREC*creat(double*s){STREC*h,*p,*q;inti=0;h=p=(STREC*)malloc(sizeof(STREC));p->s=0;while(i<N)/*產(chǎn)生8個(gè)節(jié)點(diǎn)的鏈表,各分?jǐn)?shù)存入鏈表中*/{q=(STREC*)malloc(sizeof(STREC));p->s=s[i];i++;p->next=q;p=q;}p->next=NULL;returnh;/*返回鏈表的首地址*/}outlist(STREC*h){STREC*p;p=h;printf("head");do{printf("->%2.0f",p->s);p=p->next;}/*輸出各分?jǐn)?shù)*/while(p!=NULL);printf("\n\n");}main(){doubles[N]={56,89,76,95,91,68,75,85},min;STREC*h;h=creat(s);outlist(h);min=fun(h);printf("min=%6.1f\n",min);}答案及評(píng)析:doublefun(STREC*h){doublemin=h->s;while(h!=NULL)/*通過(guò)循環(huán)找到最低分?jǐn)?shù)*/{if(min>h->s)min=h->s;h=h->next;}returnmin;}【解析】在本題中,h為一個(gè)指向結(jié)構(gòu)體的指針變量,若要引用它所指向的結(jié)構(gòu)體中的某一成員時(shí),要用指向運(yùn)算符"->"。由于是鏈表,所以要使h逐一往后移動(dòng),使用的是h=h->next。模擬試題(八)1.填空題請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是判斷一個(gè)數(shù)的個(gè)位數(shù)字和百位數(shù)字之和是否等于其十位上的數(shù)字,是則返回“yes!”,否則返回“no!”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:}答案及評(píng)析:【1】n/100%10 【2】″yes!″ 【3】″no!″【解析】填空1:由程序可以知道,變量g保存了整數(shù)的個(gè)位數(shù),變量s保存了整數(shù)的十位數(shù),所以變量b應(yīng)該保存整數(shù)的百位數(shù)。將整數(shù)除以100再對(duì)10取余,則得到這個(gè)整數(shù)的百位數(shù)。填空2:當(dāng)個(gè)位數(shù)字和百位數(shù)字之和等于十位數(shù)字時(shí),則返回″yes!″。填空3:當(dāng)個(gè)位數(shù)字和百位數(shù)字之和不等于十位數(shù)字時(shí),則返回″no!″。2.改錯(cuò)題下列給定的程序中,函數(shù)fun()的功能是:用選擇法對(duì)數(shù)組中的n個(gè)元素按從大到小的順序進(jìn)行排序。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#defineN20voidfun(inta[],intn){inti,j,t,p;/**********************found***********************/for(j=0;j<n-1;j++);{p=j;for(i=j;i<n;i++)if(a[i]>a[p])p=i;t=a[p];a[p]=a[j];/**********************found***********************/a[p]=t;}}main(){inta[N]={11,32,-5,2,14},i,m=5;printf("排序前的數(shù)據(jù):");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");fun(a,m);printf("排序后的順序:");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");}答案及評(píng)析:(1)錯(cuò)誤:for(j=0;j<n-1;j++);正確:for(j=0;j<n-1;j++)(2)錯(cuò)誤:a[p]=t;正確:a[j]=t;【解析】錯(cuò)誤1:根據(jù)C語(yǔ)言語(yǔ)法,for循環(huán)中循環(huán)條件后不加分號(hào),除非做空操作。錯(cuò)誤2:將兩數(shù)進(jìn)行交換的常用語(yǔ)句,借助第三個(gè)變量。3.編程題下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫(xiě)函數(shù)fun(),函數(shù)的功能是:求出數(shù)組周邊元素的平方和并作為函數(shù)值返回給主函數(shù)中的s。例如:若a數(shù)組中的值為a=012791112155221611197910254141則返回主程序后s的值應(yīng)為310。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5intfun(intw[][N]){}main(){inta[N][N]={0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1};inti,j;ints;clrscr();printf("*****Thearray*****\n");for(i=0;i<N;i++){for(j=0;j<N;j++){printf("%4d",a[i][j]);}printf("\n");}s=fun(a);printf("*****THERESULT*****\n");printf("Thesumis:%d\n",s);}答案及評(píng)析:intfun(intw[][N]){inti,j,k=0;ints=0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0||i==N-1||j==0||j==N-1)/*只要下標(biāo)中有一個(gè)為0或N-1,則它一定是周邊元素*/{s=s+w[i][j]*w[i][j];/*將周邊元素求平方和*/}returns;/*返回周邊元素的平方和*/}【解析】該題采用逐一判斷的方式,周邊元素的下標(biāo)一定有一個(gè)是0或N-1,且只要下標(biāo)中有一個(gè)為0或N-1,則它一定是周邊元素。模擬試題(九)1.填空題請(qǐng)補(bǔ)充main函數(shù),該函數(shù)的功能是:從一個(gè)字符串中截取前面若干個(gè)給定長(zhǎng)度的子字符串。其中,str1指向原字符串,截取后的字符存放在str2所指的字符數(shù)組中,n中存放需截取的字符個(gè)數(shù)。例如:當(dāng)str1=“cdefghij”,然后輸入4,則str2=“cdef”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:}答案及評(píng)析:【1】″%d″,&n 【2】str2[i]=str1[i]; 【3】str2【解析】填空1:本題考查對(duì)標(biāo)準(zhǔn)輸入函數(shù)scanf()的調(diào)用格式,由后面的程序可以知道,變量n保存了要截取的字符數(shù),注意在n前面不要忘了取址符‘&'。填空2:截取前n個(gè)字符,就是將字符串str1的前n個(gè)字符依次賦給字符串str2的前n個(gè)字符。填空3:本題考查對(duì)標(biāo)準(zhǔn)輸出函數(shù)printf()的調(diào)用格式,根據(jù)題意,應(yīng)輸出截取后的字符串,即字符串str2。2.改錯(cuò)題下列給定程序中,函數(shù)fun()的功能是:依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#include<conio.h>voidfun(char*s){inti,j;for(i=0,j=0;s[i]!='\0';i++)/**********************found***********************/if((s[i]>='A'&&s[i]<='Z')&&(s[i]>='a'&&s[i]<='z'))s[j++]=s[i];/**********************found***********************/s[j]="\0";}main(){charitem[80];clrscr();printf("\nEnterastring:");gets(item);printf("\n\nThestringis:\%s\n",item);fun(item);printf("\n\nThestringofchangingis:\%s\n",item);}答案及評(píng)析:(1)錯(cuò)誤:if((s[i]>='A'&&s[i]<='Z')&&(s[i]>='a'&&s[i]<='z'))正確:if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z'))(2)錯(cuò)誤:s[j]="\0";正確:s[j]='\0';【解析】錯(cuò)誤1:字母包括小寫(xiě)字母和大寫(xiě)字母,這里是"或"的關(guān)系,所以用"||"運(yùn)算符。錯(cuò)誤2:字符串的結(jié)束標(biāo)志符為字符,而不是字符串。3.編程題下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫(xiě)函數(shù)fun(inta[][N]),該函數(shù)的功能是:使數(shù)組右上半三角元素中的值全部置成0。例如a數(shù)組中的值為a=456179326,則返回主程序后a數(shù)組中的值應(yīng)為000100320注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>#defineN5intfun(inta[][N]){}main(){inta[N][N],i,j;clrscr();printf("*****Thearray*****\n");for(i=0;i<N;i++)/*產(chǎn)生一個(gè)隨機(jī)的5*5矩陣*/{for(j=0;j<N;j++){a[i][j]=rand()%10;printf("%4d",a[i][j]);}printf("\n");}fun(a);printf("THERESULT\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%4d",a[i][j]);printf("\n");}}答案及評(píng)析:intfun(inta[][N]){inti,j;for(i=0;i<N;i++)for(j=i;j<N;j++)a[i][j]=0;/*將數(shù)組右上半三角元素中的值全部置成0*/}【解析】本題旨在考查控制數(shù)組中右上半三角元素的算法,也就是兩個(gè)千篇一律的循環(huán)語(yǔ)句,希望學(xué)習(xí)者能夠掌握消化。模擬試題(十)1.填空題請(qǐng)補(bǔ)充main函數(shù),該函數(shù)的功能是:從鍵盤(pán)輸入一個(gè)字符串并保存在字符str1中,把字符串str1中下標(biāo)為偶數(shù)的字符保存在字符串str2中并輸出。例如,當(dāng)str1=“cdefghij”,則str2=“cegi”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:}答案及評(píng)析:【1】″%s″,str1 【2】%c 【3】str2【解析】填空1:本題考查對(duì)標(biāo)準(zhǔn)輸入函數(shù)scanf()的調(diào)用格式,當(dāng)輸入字符串時(shí),格式控制字符串為″%s″,題目要求輸入的字符串保存在str1中,所以地址表列應(yīng)為字符串的首地址,即為str1。填空2:本題考查對(duì)標(biāo)準(zhǔn)輸出函數(shù)printf()的調(diào)用格式,當(dāng)輸出為字符型變量時(shí),格式控制字符串為″%c″。填空3:題目要求將str1中下標(biāo)為偶數(shù)的字符保存在字符串str2中并輸出,所以printf()函數(shù)的輸出表列是str22.改錯(cuò)題在主函數(shù)中從鍵盤(pán)輸入若干個(gè)數(shù)放入數(shù)組中,用0結(jié)束輸入并放在最后一個(gè)元素中。下列給定程序中,函數(shù)fun()的功能是計(jì)算數(shù)組元素中值為負(fù)數(shù)的平均值(不包括0)。例如:數(shù)組中元素的值依次為43,-47,-21,53,-8,12,0,則程序的運(yùn)行結(jié)果為-25.333333。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<conio.h>#include<stdio.h>doublefun(intx[]){doublesum=0.0;intc=0,i=0;/**********************found***********************/while(x[i]==0){if(x[i]<0){sum=sum+x[i];c++;}i++;}/**********************found***********************/sum=sum\c;returnsum;}main(){intx[1000];inti=0;clrscr();printf("\nPleaseentersomedata(endwith0):");do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%f\n",fun(x));}答案及評(píng)析:(1)錯(cuò)誤:while(x[i]==0)正確:while(x[i]!=0)(2)錯(cuò)誤:sum=sum\c;正確:sum=sum/c;【解析】錯(cuò)誤1:此處考查的是對(duì)循環(huán)條件的理解,當(dāng)被判斷的數(shù)組元素為0時(shí),說(shuō)明這是數(shù)組的最后一個(gè)元素,此時(shí)要跳出循環(huán)。錯(cuò)誤2:C語(yǔ)言中的除法運(yùn)算符是"/",而不是"\"。3.編程題請(qǐng)編寫(xiě)一個(gè)函數(shù)intfun(int*s,intt,int*k),用來(lái)求出數(shù)組的最小元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。例如,輸入如下整數(shù):234345753134436458100321135760則輸出結(jié)果為6,100。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){}main(){inta[10]={234,345,753,134,436,458,100,321,135,760},k;clrscr();fun(a,10,&k);printf("%d,%d\n",k,a[k]);}答案及評(píng)析:intfun(int*s,intt,int*k){inti;*k=0;/*k所指的數(shù)是數(shù)組的下標(biāo)值*/for(i=0;i<t;i++)if(s[*k]>s[i])*k=i;/*找到數(shù)組的最小元素,把該元素的下標(biāo)賦給k所指的數(shù)*/returns[*k];/*返回?cái)?shù)組的最小元素*/}【解析】本題中直接使用指針變量k,但在使用時(shí)要注意對(duì)k的指針運(yùn)算,此外,一開(kāi)始應(yīng)讓*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)公共基礎(chǔ)精選120題一、選擇題(1)下面敘述正確的是______。(C)

A.算法的執(zhí)行效率與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)無(wú)關(guān)

B.算法的空間復(fù)雜度是指算法程序中指令(或語(yǔ)句)的條數(shù)

C.算法的有窮性是指算法必須能在執(zhí)行有限個(gè)步驟之后終止

D.以上三種描述都不對(duì)

(2)以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是______。(C)

A.隊(duì)列

B.線性表

C.二叉樹(shù)

D.棧

(3)在一棵二叉樹(shù)上第5層的結(jié)點(diǎn)數(shù)最多是______。(B)

A.8

B.16

C.32

D.15

(4)下面描述中,符合結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格的是______。(A)

A.使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)表示程序的控制邏輯

B.模塊只有一個(gè)入口,可以有多個(gè)出口

C.注重提高程序的執(zhí)行效率

D.不使用goto語(yǔ)句

(5)下面概念中,不屬于面向?qū)ο蠓椒ǖ氖莀_____。(D)

A.對(duì)象

B.繼承

C.類(lèi)

D.過(guò)程調(diào)用

(6)在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開(kāi)發(fā)階段是______。(B)

A.可行性分析

B.需求分析

C.詳細(xì)設(shè)計(jì)

D.程序編碼

(7)在軟件開(kāi)發(fā)中,下面任務(wù)不屬于設(shè)計(jì)階段的是______。(D)

A.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

B.給出系統(tǒng)模塊結(jié)構(gòu)

C.定義模塊算法

D.定義需求并建立系統(tǒng)模型

(8)數(shù)據(jù)庫(kù)系統(tǒng)的核心是______。(B)

A.數(shù)據(jù)模型

B.數(shù)據(jù)庫(kù)管理系統(tǒng)

C.軟件工具

D.數(shù)據(jù)庫(kù)

(9)下列敘述中正確的是______。(C)

A.數(shù)據(jù)庫(kù)是一個(gè)獨(dú)立的系統(tǒng),不需要操作系統(tǒng)的支持

B.數(shù)據(jù)庫(kù)設(shè)計(jì)是指設(shè)計(jì)數(shù)據(jù)庫(kù)管理系統(tǒng)

C.數(shù)據(jù)庫(kù)技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)共享的問(wèn)題

D.數(shù)據(jù)庫(kù)系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致

(10)下列模式中,能夠給出數(shù)據(jù)庫(kù)物理存儲(chǔ)結(jié)構(gòu)與物理存取方法的是______。(A)

A.內(nèi)模式

B.外模式

C.概念模式

D.邏輯模式

(11)算法的時(shí)間復(fù)雜度是指______。(C)

A.執(zhí)行算法程序所需要的時(shí)間

B.算法程序的長(zhǎng)度

C.算法執(zhí)行過(guò)程中所需要的基本運(yùn)算次數(shù)

D.算法程序中的指令條數(shù)

(12)下列敘述中正確的是______。(A)

A.線性表是線性結(jié)構(gòu)

B.棧與隊(duì)列是非線性結(jié)構(gòu)

C.線性鏈表是非線性結(jié)構(gòu)

D.二叉樹(shù)是線性結(jié)構(gòu)

(13)設(shè)一棵完全二叉樹(shù)共有699個(gè)結(jié)點(diǎn),則在該二叉樹(shù)中的葉子結(jié)點(diǎn)數(shù)為_(kāi)_____。(B)

A.349

B.350

C.255

D.351

(14)結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是______。(B)

A.程序的規(guī)模

B.程序的易讀性

C.程序的執(zhí)行效率

D.程序的可移植性

(15)在軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是______。(D)

A.概要設(shè)計(jì)

B.詳細(xì)設(shè)計(jì)

C.可行性分析

D.需求分析

(16)數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識(shí)的圖符不屬于數(shù)據(jù)流圖合法圖符的是______。(A)

A.控制流

B.加工

C.數(shù)據(jù)存儲(chǔ)

D.源和潭

(17)軟件需求分析階段的工作,可以分為四個(gè)方面:需求獲取、需求分析、編寫(xiě)需求規(guī)格說(shuō)明書(shū)以及______。(B)

A.階段性報(bào)告

B.需求評(píng)審

C.總結(jié)

D.都不正確

(18)下述關(guān)于數(shù)據(jù)庫(kù)系統(tǒng)的敘述中正確的是______。(A)

A.數(shù)據(jù)庫(kù)系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫(kù)系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫(kù)系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類(lèi)型的一致

D.數(shù)據(jù)庫(kù)系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

(19)關(guān)系表中的每一橫行稱(chēng)為一個(gè)______。(A)

A.元組

B.字段

C.屬性

D.碼

(20)數(shù)據(jù)庫(kù)設(shè)計(jì)包括兩個(gè)方面的設(shè)計(jì)內(nèi)容,它們是______。(A)

A.概念設(shè)計(jì)和邏輯設(shè)計(jì)

B.模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì)

C.內(nèi)模式設(shè)計(jì)和物理設(shè)計(jì)

D.結(jié)構(gòu)特性設(shè)計(jì)和行為特性設(shè)計(jì)

(21)算法的空間復(fù)雜度是指______。(D)

A.算法程序的長(zhǎng)度

B.算法程序中的指令條數(shù)

C.算法程序所占的存儲(chǔ)空間

D.算法執(zhí)行過(guò)程中所需要的存儲(chǔ)空間

(22)下列關(guān)于棧的敘述中正確的是______。(D)

A.在棧中只能插入數(shù)據(jù)

B.在棧中只能刪除數(shù)據(jù)

C.棧是先進(jìn)先出的線性表

D.棧是先進(jìn)后出的線性表

(23)在深度為5的滿(mǎn)二叉樹(shù)中,葉子結(jié)點(diǎn)的個(gè)數(shù)為_(kāi)_____。(C)

A.32

B.31

C.16

D.15

(24)對(duì)建立良好的程序設(shè)計(jì)風(fēng)格,下面描述正確的是______。(A)

A.程序應(yīng)簡(jiǎn)單、清晰、可讀性好

B.符號(hào)名的命名要符合語(yǔ)法

C.充分考慮程序的執(zhí)行效率

D.程序的注釋可有可無(wú)

(25)下面對(duì)對(duì)象概念描述錯(cuò)誤的是______。(A)

A.任何對(duì)象都必須有繼承性

B.對(duì)象是屬性和方法的封裝體

C.對(duì)象間的通訊靠消息傳遞

D.操作是對(duì)象的動(dòng)態(tài)性屬性

(26)下面不屬于軟件工程的3個(gè)要素的是______。(D)

A.工具

B.過(guò)程

C.方法

D.環(huán)境

(27)程序流程圖(PFD)中的箭頭代表的是______。(B)

A.數(shù)據(jù)流

B.控制流

C.調(diào)用關(guān)系

D.組成關(guān)系

(28)在數(shù)據(jù)管理技術(shù)的發(fā)展過(guò)程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫(kù)系統(tǒng)階段。其中數(shù)據(jù)獨(dú)立性最高的階段是______。(A)

A.數(shù)據(jù)庫(kù)系統(tǒng)

B.文件系統(tǒng)

C.人工管理

D.數(shù)據(jù)項(xiàng)管理

(29)用樹(shù)形結(jié)構(gòu)來(lái)表示實(shí)體之間聯(lián)系的模型稱(chēng)為_(kāi)_____。(B)

A.關(guān)系模型B.層次模型

C.網(wǎng)狀模型D.數(shù)據(jù)模型

(30)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)能實(shí)現(xiàn)的專(zhuān)門(mén)關(guān)系運(yùn)算包括______。(B)

A.排序、索引、統(tǒng)計(jì)

B.選擇、投影、連接

C.關(guān)聯(lián)、更新、排序

D.顯示、打印、制表

(31)算法一般都可以用哪幾種控制結(jié)構(gòu)組合而成______。(D)

A.循環(huán)、分支、遞歸

B.順序、循環(huán)、嵌套

C.循環(huán)、遞歸、選擇

D.順序、選擇、循環(huán)

(32)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指______。(B)

A.數(shù)據(jù)所占的存儲(chǔ)空間量

B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的表示

C.數(shù)據(jù)在計(jì)算機(jī)中的順序存儲(chǔ)方式

D.存儲(chǔ)在外存中的數(shù)據(jù)

(33)設(shè)有下列二叉樹(shù):ABCDEF

對(duì)此二叉樹(shù)中序遍歷的結(jié)果為_(kāi)_____。(B)

A.ABCDEF

B.DBEAFC

C.ABDECF

D.DEBFCA

(34)在面向?qū)ο蠓椒ㄖ校粋€(gè)對(duì)象請(qǐng)求另一對(duì)象為其服務(wù)的方式是通過(guò)發(fā)送______。(D)

D.消息

A.調(diào)用語(yǔ)句

B.命令

C.口令

(35)檢查軟件產(chǎn)品是否符合需求定義的過(guò)程稱(chēng)為_(kāi)_____。(A)

A.確認(rèn)測(cè)試

B.集成測(cè)試

C.驗(yàn)證測(cè)試

D.驗(yàn)收測(cè)試

(36)下列工具中屬于需求分析常用工具的是______。(D)

A.PAD

B.PFD

C.N-S

D.DFD

(37)下面不屬于軟件設(shè)計(jì)原則的是______。(C)

A.抽象

B.模塊化

C.自底向上

D.信息隱蔽

(38)索引屬于______。(B)

A.模式

B.內(nèi)模式

C.外模式

D.概念模式

(39)在關(guān)系數(shù)據(jù)庫(kù)中,用來(lái)表示實(shí)體之間聯(lián)系的是______。(D)

A.樹(shù)結(jié)構(gòu)

B.網(wǎng)結(jié)構(gòu)

C.線性表

D.二維表

(40)將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體與聯(lián)系都可以表示成______。(B)

A.屬性B.關(guān)系

C.鍵D.域

(41)在下列選項(xiàng)中,哪個(gè)不是一個(gè)算法一般應(yīng)該具有的基本特征______。(C)

A.確定性

B.可行性

C.無(wú)窮性

D.擁有足夠的情報(bào)

(42)希爾排序法屬于哪一種類(lèi)型的排序法______。(B)

A.交換類(lèi)排序法

B.插入類(lèi)排序法

C.選擇類(lèi)排序法

D.建堆排序法

(43)下列關(guān)于隊(duì)列的敘述中正確的是______。(C)

A.在隊(duì)列中只能插入數(shù)據(jù)

B.在隊(duì)列中只能刪除數(shù)據(jù)

C.隊(duì)列是先進(jìn)先出的線性表

D.隊(duì)列是先進(jìn)后出的線性表

(44)對(duì)長(zhǎng)度為N的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為_(kāi)_____。(B)

A.N+1

B.N

C.(N+1)/2

D.N/2

(45)信息隱蔽的概念與下述哪一種概念直接相關(guān)______。(B)

A.軟件結(jié)構(gòu)定義

B.模塊獨(dú)立性

C.模塊類(lèi)型劃分

D.模擬耦合度

(46)面向?qū)ο蟮脑O(shè)計(jì)方法與傳統(tǒng)的的面向過(guò)程的方法有本質(zhì)不同,它的基本原理是______。(C)

A.模擬現(xiàn)實(shí)世界中不同事物之間的聯(lián)系

B.強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而不強(qiáng)調(diào)概念

C.使用現(xiàn)實(shí)世界的概念抽象地思考問(wèn)題從而自然地解決問(wèn)題

D.鼓勵(lì)開(kāi)發(fā)者在軟件開(kāi)發(fā)的絕大部分中都用實(shí)際領(lǐng)域的概念去思考

(47)在結(jié)構(gòu)化方法中,軟件功能分解屬于下列軟件開(kāi)發(fā)中的階段是______。(C)

A.詳細(xì)設(shè)計(jì)

B.需求分析

C.總體設(shè)計(jì)

D.編程調(diào)試

(48)軟件調(diào)試的目的是______。(B)

A.發(fā)現(xiàn)錯(cuò)誤

B.改正錯(cuò)誤

C.改善軟件的性能

D.挖掘軟件的潛能

(49)按條件f對(duì)關(guān)系R進(jìn)行選擇,其關(guān)系代數(shù)表達(dá)式為_(kāi)_____。(C)

A.R|X|R

B.R|X|Rf

C.бf(R)

D.∏f(R)

(50)數(shù)據(jù)庫(kù)概念設(shè)計(jì)的過(guò)程中,視圖設(shè)計(jì)一般有三種設(shè)計(jì)次序,以下各項(xiàng)中不對(duì)的是______。(D)

A.自頂向下

B.由底向上

C.由內(nèi)向外

D.由整體到局部

(51)在計(jì)算機(jī)中,算法是指______。(C)

A.查詢(xún)方法

B.加工方法

C.解題方案的準(zhǔn)確而完整的描述

D.排序方法

(52)棧和隊(duì)列的共同點(diǎn)是______。(C)

A.都是先進(jìn)后出

B.都是先進(jìn)先出

C.只允許在端點(diǎn)處插入和刪除元素

D.沒(méi)有共同點(diǎn)

(53)已知二叉樹(shù)后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是______。(A)

A.cedba

B.acbed

C.decab

D.deabc

(54)在下列幾種排序方法中,要求內(nèi)存量最大的是______。(D)

A.插入排序

B.選擇排序

C.快速排序

D.歸并排序

(55)在設(shè)計(jì)程序時(shí),應(yīng)采納的原則之一是______。(A)

A.程序結(jié)構(gòu)應(yīng)有助于讀者理解

B.不限制goto語(yǔ)句的使用

C.減少或取消注解行

D.程序越短越好

(56)下列不屬于軟件調(diào)試技術(shù)的是______。(B)

A.強(qiáng)行排錯(cuò)法

B.集成測(cè)試法

C.回溯法

D.原因排除法

(57)下列敘述中,不屬于軟件需求規(guī)格說(shuō)明書(shū)的作用的是______。(D)

A.便于用戶(hù)、開(kāi)發(fā)人員進(jìn)行理解和交流

B.反映出用戶(hù)問(wèn)題的結(jié)構(gòu),可以作為軟件開(kāi)發(fā)工作的基礎(chǔ)和依據(jù)

C.作為確認(rèn)測(cè)試和驗(yàn)收的依據(jù)

D.便于開(kāi)發(fā)人員進(jìn)行需求分析

(58)在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示______。(C)A.控制程序的執(zhí)行順序

B.模塊之間的調(diào)用關(guān)系

C.數(shù)據(jù)的流向

D.程序的組成成分

(59)SQL語(yǔ)言又稱(chēng)為_(kāi)_____。(C)

A.結(jié)構(gòu)化定義語(yǔ)言

B.結(jié)構(gòu)化控制語(yǔ)言

C.結(jié)構(gòu)化查詢(xún)語(yǔ)言

D.結(jié)構(gòu)化操縱語(yǔ)言

(60)視圖設(shè)計(jì)一般有3種設(shè)計(jì)次序,下列不屬于視圖設(shè)計(jì)的是______。(B)

A.自頂向下

B.ABCDEF(61)數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無(wú)關(guān)的是數(shù)據(jù)的______。(C)

A.存儲(chǔ)結(jié)構(gòu)

B.物理結(jié)構(gòu)

C.邏輯結(jié)構(gòu)

D.物理和存儲(chǔ)結(jié)構(gòu)

(62)棧底至棧頂依次存放元素A、B、C、D,在第五個(gè)元素E入棧前,棧中元素可以出棧,則出棧序列可能是______。(D)

A.ABCED

B.DBCEA

C.CDABE

D.DCBEA

(63)線性表的順序存儲(chǔ)結(jié)構(gòu)和線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)分別是______。(B)

A.順序存取的存儲(chǔ)結(jié)構(gòu)、順序存取的存儲(chǔ)結(jié)構(gòu)

B.隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)、順序存取的存儲(chǔ)結(jié)構(gòu)

C.隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)、隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)

D.任意存取的存儲(chǔ)結(jié)構(gòu)、任意存取的存儲(chǔ)結(jié)構(gòu)

(64)在單鏈表中,增加頭結(jié)點(diǎn)的目的是______。(A)

A.方便運(yùn)算的實(shí)現(xiàn)

B.使單鏈表至少有一個(gè)結(jié)點(diǎn)

C.標(biāo)識(shí)表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置

D.說(shuō)明單鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)

(65)軟件設(shè)計(jì)包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過(guò)程設(shè)計(jì),其中軟件的過(guò)程設(shè)計(jì)是指______。(B)

A.模塊間的關(guān)系

B.系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過(guò)程描述

C.軟件層次結(jié)構(gòu)

D.軟件開(kāi)發(fā)過(guò)程

(66)為了避免流程圖在描述程序邏輯時(shí)的靈活性,提出了用方框圖來(lái)代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱(chēng)為_(kāi)_____。(B)

A.PAD圖

B.N-S圖

C.結(jié)構(gòu)圖

D.數(shù)據(jù)流圖

(67)數(shù)據(jù)處理的最小單位是______。(C)

A.數(shù)據(jù)

B.數(shù)據(jù)元素

C.數(shù)據(jù)項(xiàng)

D.數(shù)據(jù)結(jié)構(gòu)

(68)下列有關(guān)數(shù)據(jù)庫(kù)的描述,正確的是______。(C)

A.數(shù)據(jù)庫(kù)是一個(gè)DBF文件

B.數(shù)據(jù)庫(kù)是一個(gè)關(guān)系

C.數(shù)據(jù)庫(kù)是一個(gè)結(jié)構(gòu)化的數(shù)據(jù)集合

D.數(shù)據(jù)庫(kù)是一組文件

(69)單個(gè)用戶(hù)使用的數(shù)據(jù)視圖的描述稱(chēng)為_(kāi)_____。(

溫馨提示

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

評(píng)論

0/150

提交評(píng)論