2021-2022學(xué)年山東省菏澤市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2021-2022學(xué)年山東省菏澤市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2021-2022學(xué)年山東省菏澤市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2021-2022學(xué)年山東省菏澤市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2021-2022學(xué)年山東省菏澤市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡介

2021-2022學(xué)年山東省菏澤市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.字符串”a+b=12\n”的長度為()。

A.6B.7C.8D.9

2.以下敘述正確的是()。

A.表達(dá)式“sizeof(FILE*)==sizeof(int*)”的值為真

B.文件指針的值是一個(gè)整數(shù),它的值一定小于文件字節(jié)數(shù)

C.文件指針的值是所指文件的當(dāng)前讀取位置

D.使用fscanf函數(shù)可以向任意類型的文件中寫入任意數(shù)量的字符

3.

4.有以下程序:#include<stdiO.h>main(){FILE*fp;intk,n,i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);fclose(fp);fp(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);fclose(fp);printf("%d\n,%d\n,k,n);}程序運(yùn)行后的輸出結(jié)果是()。A.1,2B.3,4C.5,6D.123,456

5.

6.若長度為n的線性表采用順序存儲結(jié)構(gòu),在其第i個(gè)位置插入一個(gè)新元素的算法的時(shí)間復(fù)雜度為()。

A.O(0)B.O(1)C.O(n)D.O(n2)

7.設(shè)單鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為已知指針p所指結(jié)點(diǎn)不是尾結(jié)點(diǎn),若在*p之后插入結(jié)點(diǎn)*s,則應(yīng)執(zhí)行下列哪一個(gè)操作______。A.s->link=p;p->link=s;

B.s->link=p->link;p->link=s;

C.s->link=p->link;p=s;

D.p->link=s;s->link=p;

8.為非法的字符串常量()。A.“case”B.“”C.”056”D.‘123’

9.在一個(gè)被調(diào)用函數(shù)中,關(guān)于return語句使用的描述,()是錯(cuò)誤的。

A.被調(diào)用函數(shù)中可以不用return語句

B.被調(diào)用函數(shù)中可以使用多個(gè)return語句

C.被調(diào)用函數(shù)中,如果有返回值,就一定要有return語句

D.被調(diào)用函數(shù)中,一個(gè)return語句可以返回多個(gè)值給調(diào)用函數(shù)

10.若有定義"int(*pt)[3];",則下列說法正確的是()。

A.定義了基類型為int的三個(gè)指針變量

B.定義了基類型為int的具有三個(gè)元素的指針數(shù)組pt

C.定義了一個(gè)名為*pt、具有三個(gè)元素的整型數(shù)組

D.定義了一個(gè)名為pt的指針變量,它可以指向每行有三個(gè)整數(shù)元素的二維數(shù)組

11.設(shè)有inta=15,b=240;,則表達(dá)式(a&b)&b||b的值為______。

A.0B.1C.真D.假

12.下列運(yùn)算符中,運(yùn)算對象必須是整型的是()。

A./B.%=C.=D.&

二、2.填空題(12題)13.長度為n的順序存儲線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【】。

14.以下函數(shù)用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲單元中。請?zhí)羁铡?/p>

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);}

15.若有以下程序:

main()

{

inta[4][4]={{l,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},

{-31,32,-33,0}};

inti,j,s=0;

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

{

if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

}

printf("%d\n",s);

}

執(zhí)行后輸出的結(jié)果是【】。

16.下列循環(huán)的循環(huán)次數(shù)是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

17.軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護(hù)期,詳細(xì)設(shè)計(jì)屬于______中的一個(gè)階段。

18.若給fun函數(shù)的形參s傳送字符串:"abc-6354abc",則函數(shù)的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

19.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長度,請?zhí)羁铡?/p>

FILE*myf;longfl;

myf=【】("test.t","rb");

fseek(myf,(),SEEK_END)fl+ftell(myf);

fclose(myf);

printf("%ld\n",fl);

20.下列程序的運(yùn)行結(jié)果是______。

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

printf("%d,%d",x,y);

}

21.在長度為n的線性表中查找一個(gè)表中不存在的元素,需要的比較次數(shù)為【】。

22.以下程序的運(yùn)行結(jié)果是______。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%51d\n",k);}

23.性表的多種存儲結(jié)構(gòu)中,最簡單的方法是【】。

24.數(shù)據(jù)庫系統(tǒng)的三級模式分別為【】模式、內(nèi)部級模式與外部級模拭。

三、3.程序設(shè)計(jì)題(10題)25.請編寫一個(gè)函數(shù)fun(),它的功能是:根據(jù)以下公式求π的值(要求滿足精度0.005,即某項(xiàng)小于0.005時(shí)停止迭代)。

π/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…

+1*2*3*…*n/(3*5*7*…*(2n+1))

程序運(yùn)行后,如果輸入精度0.0005,則程序輸出3.14…。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<math.h>

doublefun(doubleeps)

{

}

main()

{

doublex;

printf("Inputeps:");

scanf("%1f",&x);

printf("\neps=%1f,PI=%1f\n",x,fun(x));

}

26.某學(xué)生的記錄由學(xué)號、8門課成績和平均分組成,學(xué)號和8門課的成績已在主函數(shù)中給出。請編寫fun()函數(shù),它的功能是:求出該學(xué)生的平均分放在記錄的ave成員中。請自己定義正確的形參。

例如,若學(xué)生的成績是85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)當(dāng)是78.875。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN8

typedefstruct

{charnum[10];

doubles[N];

doubleave;

}STREC;

voidfun()

{

}

main()

{

STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5);

inti;

fun(&s);

printf("The%s'sstudentdata:\n",s.num)//*輸出學(xué)號*/

for(i=0;i<N;i++)

printf("%4.1f\n",s.s[i]);

/*輸出各科成績*/

printf("\nave=%7.3f\n",s.ave);

/*輸出平均分*/

}

27.請編寫函數(shù)fun,其功能是:計(jì)算并輸出3~n之間(含3和n)所有素?cái)?shù)的平方根之和。

例如,在主函數(shù)中從鍵盤為n輸入100后,輸出為:sum=148.874270。

[注意]要求n的值大于2但不大于100。

[注意]部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

[試題源程序]

#include<math.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doublesum;

printf("\n\nInputn:");

scanf("%d",&n);

sum=fun(n);

printf("kn\nsum=%f\n\n",sum);

}

28.請編寫函數(shù)fun,函數(shù)的功能是:移動(dòng)字符串中的內(nèi)容,移動(dòng)的規(guī)則如下:把第1到第m個(gè)字符,平移到字符串的最后,把第m+l到最后的字符移到字符串的前部。

例如,字符串中原有的內(nèi)容為:ABCDEFGHIJK,m的值為3,則移動(dòng)后,字符串中的內(nèi)容應(yīng)該是:DEFGHIJKABC。

注意:部分源程序在文件PROGl.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

29.請編寫函數(shù)fun(),其功能是;計(jì)算井輸出下列多項(xiàng)式值。

S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)

例如,若主函數(shù)從鍵盤給n輸入8后,則輸出為S-0.662872。

注意;部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序;

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\nInputn:");

scanf("%d",&n);

s=fun(n);

printf("\ns=%f\n",s);

}

30.請編寫一個(gè)函數(shù)fun(),它的功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)為整數(shù)的函數(shù))。

例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<string.h>

longfun(char*p)

{

}

main()

{

chars[6];

longn;

printf("Enterastring:\n");

gets(s);

n=fun(s);

printf("%ld\n",n);

}

31.請編寫一個(gè)函數(shù)voidfun(cbara[],charb[],intn),其功能是:刪除一個(gè)字符申中指定下標(biāo)的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。

例如,輸入一個(gè)字符串world,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為word。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<conio.h>

#defineLEN20

voidfun(chara[],charb[],intn)

{

}

main()

{

charstr1[LEN],str2[LEN];

intn;

clrscr();

printf("Enterthestring:\n");

gets(str1);

printf("Enterthepositionofthestring

deleted:");

scanf("%d",&n);

fun(str1,str2,n);

printf("Thenewstringis:%s\n",

str2);

}

32.請編寫函數(shù)fun,其功能是求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲單元中。

例如,輸入如下整數(shù):87667589610l30l401980431451777則輸出結(jié)果為:6,980

注意:部分源程序在文件PROGl.C文件中。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

33.請編寫函數(shù)fun(),它的功能是計(jì)算:s=(1-In(1)-In(2)-In(3)-…-1n(m))2

s作為函數(shù)值返回。

在C語言中可調(diào)用log(n)函數(shù)求In(n)。log函數(shù)的引用說明是doublelog(doublex)。

例如,若m的值為15,則fun()函數(shù)值為723.570801。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(intm)

{

}

main()

{

clrscr();

printf("%f\n",fun(15));

}

34.請編寫函數(shù)voidfun(intx,intpp[],int*n),它的功能是求出能整除x且不是奇數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過形參n返回。

例如,若x中的值為24,則有6個(gè)數(shù)符合要求,它們是2,4,6,8,12,24。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(intx,intPP[],int*n)

{

}

main()

{

intx,aa[1000],n,i;

clrscr();

printf("\nPleaseenteranintegernumber:

\n");

scanf("%d",&X);

fun(x,aa,&n);

for(i=0;i<n;i++)

printf("%d",aa[i]);

printf("\n");

}

四、單選題(0題)35.在inta=3,int*p=&a;中,*p的值是()

A.變量a的地址值B.無意義C.變量p的地址值D.3

五、單選題(0題)36.鏈表不具有的特點(diǎn)是()。A.A.不必事先估計(jì)存儲空間

B.可隨機(jī)訪問任意元素

C.插入、刪除不需要移動(dòng)元素

D.所需空間與線性表長度成正比

六、單選題(0題)37.若有函數(shù)voidfun(doublea[]。int*n){…}以下敘述中正確的是()。A.調(diào)用fun函數(shù)時(shí)只有數(shù)組執(zhí)行按值傳送,其他實(shí)參和形參之間執(zhí)行按地址傳送

B.形參a和n都是指針變量

C.形參a是一個(gè)數(shù)組名,n是指針變量

D.調(diào)用fun函數(shù)時(shí)將把double型參數(shù)組元素一一對應(yīng)地傳送給形參a數(shù)組

參考答案

1.B

2.A“sizeof(FILE*)=4”,因?yàn)椤癴ile*”為指針,指針變量占用字節(jié)數(shù)為4,所以“sizeof(int*)=4”,選項(xiàng)A正確。文件指針的值是地址,是一個(gè)十六進(jìn)制數(shù),它的值不一定小于文件字節(jié)數(shù),因此選項(xiàng)B錯(cuò)誤。文件指針是所指文件的當(dāng)前讀取位置,而不是文件指針的值,因此選項(xiàng)C錯(cuò)誤?!癷ntfscanf(FILE*Stream,constchar*format,[argument...]);”,fScanf函數(shù)可以向任意類型的文件寫入任意數(shù)量的數(shù)據(jù)(不能超過系統(tǒng)的緩沖區(qū)),寫文件先寫入緩沖區(qū),最后一起寫入文件,因此選項(xiàng)D錯(cuò)誤。故本題答案為A選項(xiàng)。

3.C

4.C此題是考查fprintf和fscanf,其中fprintf是向文件輸出,文件為da2.dat文件,fscanf是向文件輸入,所以根據(jù)程序循環(huán)寫入和寫出.可知答案為C。

5.D

6.C

7.B

8.D

9.D

10.D\n數(shù)組指針是指向數(shù)組的一個(gè)指針,int(*pt)[3]表示一個(gè)指向3個(gè)int元素的數(shù)組的一個(gè)指針。

\n

11.B

12.B

13.n/2性表的任何位置插入一個(gè)元素的概率相等,即概率為p=1/(n+1),則插入一個(gè)元素時(shí)所需移動(dòng)元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。

14.for(I=0;I<t;I++)0for(I=0;I<t;I++),0解析:本題中直接使用指針變量k,但在使用時(shí)要注意對k的指針運(yùn)算,此外,一開始應(yīng)使*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。

15.5858解析:本題中處理二維數(shù)組元素用了兩重循環(huán),外循環(huán)變量i表示數(shù)組的行,內(nèi)層循環(huán)變量j表示數(shù)組的列。在第二重循環(huán)中首先判斷數(shù)組元素的值是否小于0,若是則處理該行的下一個(gè)元素;若不是則判斷a[¨剛的值是否等于0,若等于0則退出內(nèi)層循環(huán)開始處理下一行;其他情況下,把a(bǔ)[i][j]的值加到變量s中。所以本程序段的功能是把每行值為0的元素前面的所有大于0的元素值加到變量s中。

16.00解析:解答本題需要注意表達(dá)式“k=0”,它是賦值表達(dá)式而不是關(guān)系表達(dá)式,不論k為何值,表達(dá)式k=0總會使k為0,所以不能進(jìn)入循環(huán)。

17.軟件開發(fā)軟件開發(fā)解析:軟件生命周期分為3個(gè)時(shí)期共8個(gè)階段:軟件定義期(問題定義、可行性研究和需求分析)、軟件開發(fā)期(系統(tǒng)設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和測試)、軟件維護(hù)期(即運(yùn)行維護(hù)階段)。

18.-6354-6354解析:本題的考查點(diǎn)是函數(shù)的返回值。這個(gè)函數(shù)的目的是提取出由函數(shù)的形參傳送來的字符串中的數(shù)字字符,并通過相應(yīng)字符位置計(jì)算出它們數(shù)值形式的冪,最后返回字符串中的數(shù)字字符的數(shù)值形式,所以函數(shù)的返回值應(yīng)當(dāng)是“-6354”。

19.fopenfopen解析:C語言中的文件分為:ASCII文件與二進(jìn)制文件。文件在使用前打開,使用后要關(guān)閉。打開文件的函數(shù)為:fopen(),調(diào)用形式為:fp=fopen('文件名','使用文件方式');關(guān)閉文件的函數(shù)為:fclose(),調(diào)用形式為:fclose(fp),其中fp為文件指針。

20.22132,2,1,3解析:本題考查++,--運(yùn)算符和條件運(yùn)算符的使用。

“表達(dá)式1?表達(dá)式2:表達(dá)式3”的功能是:表達(dá)式1的值若非0,則計(jì)算表達(dá)式2的值,且表達(dá)式2的值為最終結(jié)果;若表達(dá)式1的值為0,則計(jì)算表達(dá)式3的值,且為最終結(jié)果。

本題中,x=1,y=2時(shí),x<y成立,輸出y的值2;y=2,z=3時(shí),z<y不成立,執(zhí)行y++,輸出2后y值增1,所以最后一個(gè)輸出x的值不變?yōu)?,y的值為增加后的3。

21.nn解析:在長度為n的線性表中查找一個(gè)表中不存在的元素,需要的比較次數(shù)為n。

22.k=5k=5解析:本題主要考查了函數(shù)的遞歸調(diào)用方法。g=0或g=1或g=2是遞歸的終止條件,然后用回代的方法從一個(gè)已知值推出下一個(gè)值,直到計(jì)算出最終結(jié)果。

23.順序存儲順序存儲

24.概念或概念級概念或概念級解析:數(shù)據(jù)庫系統(tǒng)在其內(nèi)部具有三級模式及二級映射,三級模式分別是概念級模式、內(nèi)部級模式和外部級模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶(應(yīng)用)公共數(shù)據(jù)視圖。

內(nèi)模式式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法,如數(shù)據(jù)存儲的文件結(jié)構(gòu)、索引、集簇及hash等存取方式與存取路徑,內(nèi)模式的物理性主要體現(xiàn)在操作系統(tǒng)及文件級上,它還未深入到設(shè)備級上(如磁盤及磁盤操作)。

外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式,它由概念模式推導(dǎo)而出。

25.doublefun(doubleeps){doubles=1.0s1=1.0;intn=1;while(s1>=eps)/*當(dāng)某項(xiàng)大于精度要求時(shí)繼續(xù)求下—項(xiàng)*/{s1=s1*n/(2*n+1);/*求多項(xiàng)式的每—項(xiàng)*/s=s+s1;/*求和*/n++;}return2*s;}doublefun(doubleeps)\r\n{\r\ndoubles=1.0,s1=1.0;\r\nintn=1;\r\nwhile(s1>=eps)/*當(dāng)某項(xiàng)大于精度要求時(shí),繼續(xù)求下—項(xiàng)*/\r\n{s1=s1*n/(2*n+1);/*求多項(xiàng)式的每—項(xiàng)*/\r\ns=s+s1;/*求和*/\r\nn++;\r\n}\r\nreturn2*s;\r\n}解析:從第2項(xiàng)開始以后的每一項(xiàng)都是其前面一項(xiàng)乘以n/(2*n+1),程序中用s1來表示每一項(xiàng),s來表示總和后的結(jié)果。要注意s1,s的初值都為1.0,返回時(shí)要乘以2即return2*s,這跟數(shù)學(xué)思想有關(guān)系,學(xué)習(xí)者理解后就很簡單了。

26.voidfun(STREC*p){inti;p->ave=0.0;for(i=0;i<N;i++)p->ave=p->ave+p->s[i];/*求各門成績的總和*/p->ave=p->ave/N;/*求平均分*/}voidfun(STREC*p)\r\n{\r\ninti;\r\np->ave=0.0;\r\nfor(i=0;i<N;i++)\r\np->ave=p->ave+p->s[i];/*求各門成績的總和*/\r\np->ave=p->ave/N;/*求平均分*/\r\n}解析:本題考查自己定義形參的相關(guān)知識點(diǎn),程序流程是這樣的,在fun()函數(shù)中求出平均分后,返回到主函數(shù)時(shí)平均分也要帶回,所以只能定義一個(gè)指針類型的形參STREC*p,此時(shí),引用成員的方式可以是用指向運(yùn)算符即p->ave和p->s[i],當(dāng)然,也可用(*p).ave和(*p).s[i]。

27.doublefun(intn){intij=0;doubles=0;for(i=3;i<=n;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j==i)s=s+sqrt(i);}returns;}doublefun(intn)\r\n{\r\ninti,j=0;\r\ndoubles=0;\r\nfor(i=3;i<=n;i++)\r\n{\r\nfor(j=2;j<i;j++)\r\nif(i%j==0)\r\nbreak;\r\nif(j==i)\r\ns=s+sqrt(i);\r\n}\r\nreturns;\r\n}

28.

解析:該程序功能是移動(dòng)字符串中的內(nèi)容,第一個(gè)字符移動(dòng)到最后,后面的字符往前移動(dòng)一位,形成循環(huán)左移。移動(dòng)m個(gè)字符的就是循環(huán)左移m次。

29.doublefun(intn){inti;doubles=0.0;for(i=1;i<=n;i++)s=s+(1.0/(2*i-1)-1.0/(2*i));/*計(jì)算S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-l/2n)*/returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0;\r\nfor(i=1;i<=n;i++)\r\ns=s+(1.0/(2*i-1)-1.0/(2*i));/*計(jì)算S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-l/2n)*/returns;\r\n}解析:本題中s=s+(1.0/(2*i-1)-1,O/(2*i));語句是用C程序去表達(dá)題目中的每一項(xiàng),這是關(guān)鍵,其他問題不難理解。

30.longfun(char*p){longn=0;intflag=1;if(*p=='-')/*負(fù)數(shù)時(shí)置flag為-1*/{p++;flag=-1;}elseif(*p=='+')/*正數(shù)時(shí)置flag為1*/p++;while(*p!='\0'){n=n*10+*p-'0';/*將字符串轉(zhuǎn)成相應(yīng)的整數(shù)*/p++;}returnn*flag;}longfun(char*p)\r\n{\r\nlongn=0;\r\nintflag=1;\r\nif(*p=='-')/*負(fù)數(shù)時(shí)置flag為-1*/\r\n{p++;flag=-1;}\r\nelseif(*p=='+')/*正數(shù)時(shí)置flag為1*/\r\np++;\r\nwhile(*p!='\\0')\r\n{n=n*10+*p-'0';/*將字符串轉(zhuǎn)成相應(yīng)的整數(shù)*/\r\np++;\r\n}\r\nreturnn*flag;\r\n}解析:if()的作用是判斷它是正數(shù)還是負(fù)數(shù)。while()循環(huán)的作用是將字符串轉(zhuǎn)成相應(yīng)的整數(shù)。注意*p是一個(gè)字符如'9','4',并不是一個(gè)數(shù),要將其轉(zhuǎn)成相應(yīng)的數(shù)字必須令其減去'0'(不是'\\0'),即*p-'0'就得到*p這個(gè)字符的相應(yīng)數(shù)字。如'0'-'0'=0,'8'-'0'=8等。必須在程序的前面加#include<stdlib.h>,函數(shù)atol()的作用是將字符串p轉(zhuǎn)成長整型數(shù),它是一個(gè)庫函數(shù)。

31.voidfun{chara[]charb[]intn){intik=0;for(i=0;a[i]!=‘\0’;i++)if(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/b[k++]=a[i];b[k]=‘\0’;/*在字符串最后加上結(jié)束標(biāo)記*/}voidfun{chara[],charb[],intn)\r\n{\r\ninti,k=0;\r\nfor(i=0;a[i]!=‘\\0’;i++)\r\nif(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/\r\nb[k++]=a[i];\r\nb[k]=‘\\0’;/*在字符串最后加上結(jié)束標(biāo)記*/\r\n}解析:本題要求刪除字符串中指定下標(biāo)的字符,即相當(dāng)于把不是指定下標(biāo)的字符留下。所以要用if(i!=n),注意不能寫成“=”運(yùn)算。

32.

解析:(1)該程序功能是求最大元素在數(shù)組中的下標(biāo)。它的解題思路是,用最大值變量max標(biāo)記第一個(gè)待找數(shù)據(jù),逐個(gè)把所有待找數(shù)據(jù)和max進(jìn)行比較,并用pos標(biāo)記其當(dāng)前最大值所在位置,從而找出最大值。(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)“fun(a,10,&k);”中的參數(shù)a存放著給出的整數(shù),fun函數(shù)實(shí)現(xiàn)查找最大元素的下標(biāo)。

33.doublefun(intm){inti;doubles=1.0;for(i=1;i<=m;i++)s=s-log(i);/*計(jì)算s=l-In(1)-In(2)-In(3)-…-In(m)*/return(s*s);/*對s求平方并返回*/}doublefun(intm)\r\n{\r\n\u3000inti;\r\ndoubles=1.0;\r\nfor(i=1;i<=m;i++)\r\ns=s-log(i);/*計(jì)算s=l-In(1)-In(2)-In(3)-…-In(m)*/\r\nreturn(s*s);/*對s求平方并返回*/\r\n}解析:首先,題目要求計(jì)算1依次減去1到M的對數(shù),可用從1到M的循環(huán),每次循環(huán)都減一個(gè)數(shù)的對數(shù)。該題需要注意,log()函數(shù)的形式參數(shù)應(yīng)浩如煙海double型變量,用于循環(huán)的基數(shù)變量為整數(shù),需要進(jìn)行強(qiáng)制轉(zhuǎn)換。最后在返回的時(shí)求平方。

34.voidfun(intxintpp[]int*n){intij=0for(i=2;i<=x;i=i+2)/*i的初始值為2步長為2確保i為偶數(shù)*/if(x%i==0)/*將能整除x的數(shù)存入數(shù)細(xì)pp中*/pp[j++]=i*n=j/*傳回滿足條件的數(shù)的個(gè)數(shù)*/}voidfun(intx,intpp[],int*n)\r\n{\r\ninti,j=0\r\nfor(i=2;i<=x;i=i+2)/*i的初始值為2,步長為2,確保i為偶數(shù)*/\r\nif(x%i==0)/*將能整除x的數(shù)存入數(shù)細(xì)pp中*/\r\npp[j++]=i\r\n*n=j/*傳回滿足條件的數(shù)的個(gè)數(shù)*/\r\n}解析:本題題干信息是;能整除x且不是奇數(shù)的所有整數(shù)。循環(huán)語句中i從2開始且每次增2,所以i始終是偶數(shù)。

35.D

36.B鏈表采用的是鏈?zhǔn)酱鎯Y(jié)構(gòu),它的結(jié)點(diǎn)空間可以動(dòng)態(tài)申請和釋放;它的數(shù)據(jù)元素的邏輯次序靠結(jié)點(diǎn)的指針來指示,插入、刪除不需要移動(dòng)數(shù)據(jù)元素。但是鏈?zhǔn)酱鎯Y(jié)構(gòu)也有不足之處:每個(gè)結(jié)點(diǎn)中的指針域需額外占用存儲空間,它是一種非隨機(jī)存儲結(jié)構(gòu)。

37.B\n本題考查函數(shù)中數(shù)組和指針的傳值,數(shù)組a[]在參數(shù)傳遞時(shí),是傳遞的數(shù)組a的首地址,所以形參a和n都是指針變量。。

\n2021-2022學(xué)年山東省菏澤市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.字符串”a+b=12\n”的長度為()。

A.6B.7C.8D.9

2.以下敘述正確的是()。

A.表達(dá)式“sizeof(FILE*)==sizeof(int*)”的值為真

B.文件指針的值是一個(gè)整數(shù),它的值一定小于文件字節(jié)數(shù)

C.文件指針的值是所指文件的當(dāng)前讀取位置

D.使用fscanf函數(shù)可以向任意類型的文件中寫入任意數(shù)量的字符

3.

4.有以下程序:#include<stdiO.h>main(){FILE*fp;intk,n,i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);fclose(fp);fp(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);fclose(fp);printf("%d\n,%d\n,k,n);}程序運(yùn)行后的輸出結(jié)果是()。A.1,2B.3,4C.5,6D.123,456

5.

6.若長度為n的線性表采用順序存儲結(jié)構(gòu),在其第i個(gè)位置插入一個(gè)新元素的算法的時(shí)間復(fù)雜度為()。

A.O(0)B.O(1)C.O(n)D.O(n2)

7.設(shè)單鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為已知指針p所指結(jié)點(diǎn)不是尾結(jié)點(diǎn),若在*p之后插入結(jié)點(diǎn)*s,則應(yīng)執(zhí)行下列哪一個(gè)操作______。A.s->link=p;p->link=s;

B.s->link=p->link;p->link=s;

C.s->link=p->link;p=s;

D.p->link=s;s->link=p;

8.為非法的字符串常量()。A.“case”B.“”C.”056”D.‘123’

9.在一個(gè)被調(diào)用函數(shù)中,關(guān)于return語句使用的描述,()是錯(cuò)誤的。

A.被調(diào)用函數(shù)中可以不用return語句

B.被調(diào)用函數(shù)中可以使用多個(gè)return語句

C.被調(diào)用函數(shù)中,如果有返回值,就一定要有return語句

D.被調(diào)用函數(shù)中,一個(gè)return語句可以返回多個(gè)值給調(diào)用函數(shù)

10.若有定義"int(*pt)[3];",則下列說法正確的是()。

A.定義了基類型為int的三個(gè)指針變量

B.定義了基類型為int的具有三個(gè)元素的指針數(shù)組pt

C.定義了一個(gè)名為*pt、具有三個(gè)元素的整型數(shù)組

D.定義了一個(gè)名為pt的指針變量,它可以指向每行有三個(gè)整數(shù)元素的二維數(shù)組

11.設(shè)有inta=15,b=240;,則表達(dá)式(a&b)&b||b的值為______。

A.0B.1C.真D.假

12.下列運(yùn)算符中,運(yùn)算對象必須是整型的是()。

A./B.%=C.=D.&

二、2.填空題(12題)13.長度為n的順序存儲線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【】。

14.以下函數(shù)用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲單元中。請?zhí)羁铡?/p>

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);}

15.若有以下程序:

main()

{

inta[4][4]={{l,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},

{-31,32,-33,0}};

inti,j,s=0;

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

{

if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

}

printf("%d\n",s);

}

執(zhí)行后輸出的結(jié)果是【】。

16.下列循環(huán)的循環(huán)次數(shù)是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

17.軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護(hù)期,詳細(xì)設(shè)計(jì)屬于______中的一個(gè)階段。

18.若給fun函數(shù)的形參s傳送字符串:"abc-6354abc",則函數(shù)的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

19.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長度,請?zhí)羁铡?/p>

FILE*myf;longfl;

myf=【】("test.t","rb");

fseek(myf,(),SEEK_END)fl+ftell(myf);

fclose(myf);

printf("%ld\n",fl);

20.下列程序的運(yùn)行結(jié)果是______。

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

printf("%d,%d",x,y);

}

21.在長度為n的線性表中查找一個(gè)表中不存在的元素,需要的比較次數(shù)為【】。

22.以下程序的運(yùn)行結(jié)果是______。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%51d\n",k);}

23.性表的多種存儲結(jié)構(gòu)中,最簡單的方法是【】。

24.數(shù)據(jù)庫系統(tǒng)的三級模式分別為【】模式、內(nèi)部級模式與外部級模拭。

三、3.程序設(shè)計(jì)題(10題)25.請編寫一個(gè)函數(shù)fun(),它的功能是:根據(jù)以下公式求π的值(要求滿足精度0.005,即某項(xiàng)小于0.005時(shí)停止迭代)。

π/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…

+1*2*3*…*n/(3*5*7*…*(2n+1))

程序運(yùn)行后,如果輸入精度0.0005,則程序輸出3.14…。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<math.h>

doublefun(doubleeps)

{

}

main()

{

doublex;

printf("Inputeps:");

scanf("%1f",&x);

printf("\neps=%1f,PI=%1f\n",x,fun(x));

}

26.某學(xué)生的記錄由學(xué)號、8門課成績和平均分組成,學(xué)號和8門課的成績已在主函數(shù)中給出。請編寫fun()函數(shù),它的功能是:求出該學(xué)生的平均分放在記錄的ave成員中。請自己定義正確的形參。

例如,若學(xué)生的成績是85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)當(dāng)是78.875。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN8

typedefstruct

{charnum[10];

doubles[N];

doubleave;

}STREC;

voidfun()

{

}

main()

{

STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5);

inti;

fun(&s);

printf("The%s'sstudentdata:\n",s.num)//*輸出學(xué)號*/

for(i=0;i<N;i++)

printf("%4.1f\n",s.s[i]);

/*輸出各科成績*/

printf("\nave=%7.3f\n",s.ave);

/*輸出平均分*/

}

27.請編寫函數(shù)fun,其功能是:計(jì)算并輸出3~n之間(含3和n)所有素?cái)?shù)的平方根之和。

例如,在主函數(shù)中從鍵盤為n輸入100后,輸出為:sum=148.874270。

[注意]要求n的值大于2但不大于100。

[注意]部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

[試題源程序]

#include<math.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doublesum;

printf("\n\nInputn:");

scanf("%d",&n);

sum=fun(n);

printf("kn\nsum=%f\n\n",sum);

}

28.請編寫函數(shù)fun,函數(shù)的功能是:移動(dòng)字符串中的內(nèi)容,移動(dòng)的規(guī)則如下:把第1到第m個(gè)字符,平移到字符串的最后,把第m+l到最后的字符移到字符串的前部。

例如,字符串中原有的內(nèi)容為:ABCDEFGHIJK,m的值為3,則移動(dòng)后,字符串中的內(nèi)容應(yīng)該是:DEFGHIJKABC。

注意:部分源程序在文件PROGl.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

29.請編寫函數(shù)fun(),其功能是;計(jì)算井輸出下列多項(xiàng)式值。

S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)

例如,若主函數(shù)從鍵盤給n輸入8后,則輸出為S-0.662872。

注意;部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序;

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\nInputn:");

scanf("%d",&n);

s=fun(n);

printf("\ns=%f\n",s);

}

30.請編寫一個(gè)函數(shù)fun(),它的功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)為整數(shù)的函數(shù))。

例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<string.h>

longfun(char*p)

{

}

main()

{

chars[6];

longn;

printf("Enterastring:\n");

gets(s);

n=fun(s);

printf("%ld\n",n);

}

31.請編寫一個(gè)函數(shù)voidfun(cbara[],charb[],intn),其功能是:刪除一個(gè)字符申中指定下標(biāo)的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。

例如,輸入一個(gè)字符串world,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為word。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<conio.h>

#defineLEN20

voidfun(chara[],charb[],intn)

{

}

main()

{

charstr1[LEN],str2[LEN];

intn;

clrscr();

printf("Enterthestring:\n");

gets(str1);

printf("Enterthepositionofthestring

deleted:");

scanf("%d",&n);

fun(str1,str2,n);

printf("Thenewstringis:%s\n",

str2);

}

32.請編寫函數(shù)fun,其功能是求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲單元中。

例如,輸入如下整數(shù):87667589610l30l401980431451777則輸出結(jié)果為:6,980

注意:部分源程序在文件PROGl.C文件中。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

33.請編寫函數(shù)fun(),它的功能是計(jì)算:s=(1-In(1)-In(2)-In(3)-…-1n(m))2

s作為函數(shù)值返回。

在C語言中可調(diào)用log(n)函數(shù)求In(n)。log函數(shù)的引用說明是doublelog(doublex)。

例如,若m的值為15,則fun()函數(shù)值為723.570801。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(intm)

{

}

main()

{

clrscr();

printf("%f\n",fun(15));

}

34.請編寫函數(shù)voidfun(intx,intpp[],int*n),它的功能是求出能整除x且不是奇數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過形參n返回。

例如,若x中的值為24,則有6個(gè)數(shù)符合要求,它們是2,4,6,8,12,24。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(intx,intPP[],int*n)

{

}

main()

{

intx,aa[1000],n,i;

clrscr();

printf("\nPleaseenteranintegernumber:

\n");

scanf("%d",&X);

fun(x,aa,&n);

for(i=0;i<n;i++)

printf("%d",aa[i]);

printf("\n");

}

四、單選題(0題)35.在inta=3,int*p=&a;中,*p的值是()

A.變量a的地址值B.無意義C.變量p的地址值D.3

五、單選題(0題)36.鏈表不具有的特點(diǎn)是()。A.A.不必事先估計(jì)存儲空間

B.可隨機(jī)訪問任意元素

C.插入、刪除不需要移動(dòng)元素

D.所需空間與線性表長度成正比

六、單選題(0題)37.若有函數(shù)voidfun(doublea[]。int*n){…}以下敘述中正確的是()。A.調(diào)用fun函數(shù)時(shí)只有數(shù)組執(zhí)行按值傳送,其他實(shí)參和形參之間執(zhí)行按地址傳送

B.形參a和n都是指針變量

C.形參a是一個(gè)數(shù)組名,n是指針變量

D.調(diào)用fun函數(shù)時(shí)將把double型參數(shù)組元素一一對應(yīng)地傳送給形參a數(shù)組

參考答案

1.B

2.A“sizeof(FILE*)=4”,因?yàn)椤癴ile*”為指針,指針變量占用字節(jié)數(shù)為4,所以“sizeof(int*)=4”,選項(xiàng)A正確。文件指針的值是地址,是一個(gè)十六進(jìn)制數(shù),它的值不一定小于文件字節(jié)數(shù),因此選項(xiàng)B錯(cuò)誤。文件指針是所指文件的當(dāng)前讀取位置,而不是文件指針的值,因此選項(xiàng)C錯(cuò)誤?!癷ntfscanf(FILE*Stream,constchar*format,[argument...]);”,fScanf函數(shù)可以向任意類型的文件寫入任意數(shù)量的數(shù)據(jù)(不能超過系統(tǒng)的緩沖區(qū)),寫文件先寫入緩沖區(qū),最后一起寫入文件,因此選項(xiàng)D錯(cuò)誤。故本題答案為A選項(xiàng)。

3.C

4.C此題是考查fprintf和fscanf,其中fprintf是向文件輸出,文件為da2.dat文件,fscanf是向文件輸入,所以根據(jù)程序循環(huán)寫入和寫出.可知答案為C。

5.D

6.C

7.B

8.D

9.D

10.D\n數(shù)組指針是指向數(shù)組的一個(gè)指針,int(*pt)[3]表示一個(gè)指向3個(gè)int元素的數(shù)組的一個(gè)指針。

\n

11.B

12.B

13.n/2性表的任何位置插入一個(gè)元素的概率相等,即概率為p=1/(n+1),則插入一個(gè)元素時(shí)所需移動(dòng)元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。

14.for(I=0;I<t;I++)0for(I=0;I<t;I++),0解析:本題中直接使用指針變量k,但在使用時(shí)要注意對k的指針運(yùn)算,此外,一開始應(yīng)使*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。

15.5858解析:本題中處理二維數(shù)組元素用了兩重循環(huán),外循環(huán)變量i表示數(shù)組的行,內(nèi)層循環(huán)變量j表示數(shù)組的列。在第二重循環(huán)中首先判斷數(shù)組元素的值是否小于0,若是則處理該行的下一個(gè)元素;若不是則判斷a[¨剛的值是否等于0,若等于0則退出內(nèi)層循環(huán)開始處理下一行;其他情況下,把a(bǔ)[i][j]的值加到變量s中。所以本程序段的功能是把每行值為0的元素前面的所有大于0的元素值加到變量s中。

16.00解析:解答本題需要注意表達(dá)式“k=0”,它是賦值表達(dá)式而不是關(guān)系表達(dá)式,不論k為何值,表達(dá)式k=0總會使k為0,所以不能進(jìn)入循環(huán)。

17.軟件開發(fā)軟件開發(fā)解析:軟件生命周期分為3個(gè)時(shí)期共8個(gè)階段:軟件定義期(問題定義、可行性研究和需求分析)、軟件開發(fā)期(系統(tǒng)設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和測試)、軟件維護(hù)期(即運(yùn)行維護(hù)階段)。

18.-6354-6354解析:本題的考查點(diǎn)是函數(shù)的返回值。這個(gè)函數(shù)的目的是提取出由函數(shù)的形參傳送來的字符串中的數(shù)字字符,并通過相應(yīng)字符位置計(jì)算出它們數(shù)值形式的冪,最后返回字符串中的數(shù)字字符的數(shù)值形式,所以函數(shù)的返回值應(yīng)當(dāng)是“-6354”。

19.fopenfopen解析:C語言中的文件分為:ASCII文件與二進(jìn)制文件。文件在使用前打開,使用后要關(guān)閉。打開文件的函數(shù)為:fopen(),調(diào)用形式為:fp=fopen('文件名','使用文件方式');關(guān)閉文件的函數(shù)為:fclose(),調(diào)用形式為:fclose(fp),其中fp為文件指針。

20.22132,2,1,3解析:本題考查++,--運(yùn)算符和條件運(yùn)算符的使用。

“表達(dá)式1?表達(dá)式2:表達(dá)式3”的功能是:表達(dá)式1的值若非0,則計(jì)算表達(dá)式2的值,且表達(dá)式2的值為最終結(jié)果;若表達(dá)式1的值為0,則計(jì)算表達(dá)式3的值,且為最終結(jié)果。

本題中,x=1,y=2時(shí),x<y成立,輸出y的值2;y=2,z=3時(shí),z<y不成立,執(zhí)行y++,輸出2后y值增1,所以最后一個(gè)輸出x的值不變?yōu)?,y的值為增加后的3。

21.nn解析:在長度為n的線性表中查找一個(gè)表中不存在的元素,需要的比較次數(shù)為n。

22.k=5k=5解析:本題主要考查了函數(shù)的遞歸調(diào)用方法。g=0或g=1或g=2是遞歸的終止條件,然后用回代的方法從一個(gè)已知值推出下一個(gè)值,直到計(jì)算出最終結(jié)果。

23.順序存儲順序存儲

24.概念或概念級概念或概念級解析:數(shù)據(jù)庫系統(tǒng)在其內(nèi)部具有三級模式及二級映射,三級模式分別是概念級模式、內(nèi)部級模式和外部級模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶(應(yīng)用)公共數(shù)據(jù)視圖。

內(nèi)模式式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法,如數(shù)據(jù)存儲的文件結(jié)構(gòu)、索引、集簇及hash等存取方式與存取路徑,內(nèi)模式的物理性主要體現(xiàn)在操作系統(tǒng)及文件級上,它還未深入到設(shè)備級上(如磁盤及磁盤操作)。

外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式,它由概念模式推導(dǎo)而出。

25.doublefun(doubleeps){doubles=1.0s1=1.0;intn=1;while(s1>=eps)/*當(dāng)某項(xiàng)大于精度要求時(shí)繼續(xù)求下—項(xiàng)*/{s1=s1*n/(2*n+1);/*求多項(xiàng)式的每—項(xiàng)*/s=s+s1;/*求和*/n++;}return2*s;}doublefun(doubleeps)\r\n{\r\ndoubles=1.0,s1=1.0;\r\nintn=1;\r\nwhile(s1>=eps)/*當(dāng)某項(xiàng)大于精度要求時(shí),繼續(xù)求下—項(xiàng)*/\r\n{s1=s1*n/(2*n+1);/*求多項(xiàng)式的每—項(xiàng)*/\r\ns=s+s1;/*求和*/\r\nn++;\r\n}\r\nreturn2*s;\r\n}解析:從第2項(xiàng)開始以后的每一項(xiàng)都是其前面一項(xiàng)乘以n/(2*n+1),程序中用s1來表示每一項(xiàng),s來表示總和后的結(jié)果。要注意s1,s的初值都為1.0,返回時(shí)要乘以2即return2*s,這跟數(shù)學(xué)思想有關(guān)系,學(xué)習(xí)者理解后就很簡單了。

26.voidfun(STREC*p){inti;p->ave=0.0;for(i=0;i<N;i++)p->ave=p->ave+p->s[i];/*求各門成績的總和*/p->ave=p->ave/N;/*求平均分*/}voidfun(STREC*p)\r\n{\r\ninti;\r\np->ave=0.0;\r\nfor(i=0;i<N;i++)\r\np->ave=p->ave+p->s[i];/*求各門成績的總和*/\r\np->ave=p->ave/N;/*求平均分*/\r\n}解析:本題考查自己定義形參的相關(guān)知識點(diǎn),程序流程是這樣的,在fun()函數(shù)中求出平均分后,返回到主函數(shù)時(shí)平均分也要帶回,所以只能定義一個(gè)指針類型的形參STREC*p,此時(shí),引用成員的方式可以是用指向運(yùn)算符即p->ave和p->s[i],當(dāng)然,也可用(*p).ave和(*p).s[i]。

27.doublefun(intn){intij=0;doubles=0;for(i=3;i<=n;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j==i)s=s+sqrt(i);}returns;}doublefun(intn)\r\n{\r\ninti,j=0;\r\ndoubles=0;\r\nfor(i=3;i<=n;i++)\r\n{\r\nfor(j=2;j<i;j++)\r\nif(i%j==0)\r\nbreak;\r\nif(j==i)\r\ns=s+sqrt(i);\r\n}\r\nreturns;\r\n}

28.

解析:該程序功能是移動(dòng)字符串中的內(nèi)容,第一個(gè)字符移動(dòng)到最后,后面的字符往前移動(dòng)一位,形成循環(huán)左移。移動(dòng)m個(gè)字符的就是循環(huán)左移m次。

29.doublefun(intn){inti;doubles=0.0;for(i=1;i<=n

溫馨提示

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

最新文檔

評論

0/150

提交評論