2022-2023學年黑龍江省綏化市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2022-2023學年黑龍江省綏化市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2022-2023學年黑龍江省綏化市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2022-2023學年黑龍江省綏化市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2022-2023學年黑龍江省綏化市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩52頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2022-2023學年黑龍江省綏化市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(12題)1.數據庫DB、數據庫系統DBS、數據庫管理系統DBMS之間的關系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關系

2.有以下程序:#include<stdio.h>main(){intx=10,y=11,z=12;if(y<z)x=y;y=z;z=x;printf(“x=%dy=%dz=%d\n”,x,y,z);}程序運行后的輸出結果是()。

A.x=11y=12z=11

B.x=10y=10z=10

C.x=11y=11z=10

D.x=10y=10z=12

3.程序中對fun函數有如下說明

void*fun();

此說明的含義是:A.fun了數無返回值

B.fun函數的返回值可以是任意的數據類型

C.fun函數的返回值是無值型的指針類型

D.指針fun指向一個函數,該函數無返回值

4.下面不合法的常量數據是()。

A..023E-5B.0x3f7b8a90C.‘\0x6d’D.‘\0123321’

5.若串S=,software,其子串的數目是()。

A.8B.37C.36D.9

6.以下選項中非法的字符常量是A.A.'\101'

B.'\65'

C.”\xff'

D.'\019'

7.有以下程序:#include〈stdio.h〉voidfun(int*s){staticintj=0;do{s[j]=s[j]+s[j+1];}while(++j<2);}main(){inti.a[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=0;i<5;i++)pfintf(“%d”,a[i]);printf(“\n”);}程序運行后的輸出結果是()。A.12345B.23445C.34756D.35745

8.數據處理的最小單位是()。

A.數據B.數據元素C.數據項D.數據結構

9.串的長度是指()。

A.串中所含不同字母的個數B.串中所含字符的個數C.串中所含不同字符的個數D.串中所含非空格字符的個數

10.有以下程序:#include<stdio.h>intchange(int*data){*data=*data%2;return(*data)+1;}main(){intdata=12;change(&data);printf(“%d,”,data);data=change(&data);printf(“%d,”,data);}程序運行后的輸出結果是()。

A.0,0,B.1,2,C.12,13,D.0,1,

11.線處應填入().A.b[i++]B.b[i]++C.b[i+=2]D.b[i]+=2

12.下列程序的輸出結果是()。#includedstdi0.h>#includedstring.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main{intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A.13579B.48579C.48549D.48999

二、2.填空題(12題)13.以下程序運行后輸出的結果是【】。

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{

case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

printf("%d%d\n",a,b);

}

14.若從鍵盤輸入58,則以下程序的輸出結果是【】。

main()

{inta;

scanf(“%d”,&A);

if(a>50)printf(“%d”,A);

if(a>40)printf(“%d”,A);

if(a>30)printf(“%d”,A);

}

15.在關系數據庫中把數據表示成二維表,每一個二維表稱為【】。

16.若有如下程序:

main()

{intx=5,y,*t;t=&x;

y=++(*t);

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

則程序執行后的x值為【】,y的值為【】。

17.數據字典是各類數據描述的集合,它通常包括5個部分,即數據項、數據結構、數據流、______和處理過程。

18.下列程序的輸出結果是______。

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

19.下述程序的輸出結果是【】。

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

{printf("\n%d",fun(9));}

20.問題處理方案的正確而完整的描述稱為______。

21.算法的基本特征主要包括叫個方面,它們分別是可行性、確定性、()和擁有足夠的情報。

22.在面向對象方法中,信息隱蔽是通過對象的______性來實現的。

23.在面向對象方法中,類之間共享屬性和操作的機制稱為______。

24.當循環隊列非空且隊尾指針等于隊頭指針時,說明循環隊列已滿,不能進行入隊運算。這種情況稱為【】。

三、3.程序設計題(10題)25.函數fun的功能是:將s所指字符串中除了下標為偶數、同時ASCII值也為偶數的字符外,其余的全都刪除;串中剩余字符所形成的一含新串放在t所指的數組中。

例如,若s所指字符串中的內容為:“ABCDEFGl23456”,其中字符A的ASCII碼值為奇數,因此應當刪除:其中字符B的ASCII碼值為偶數,但在數組中的下標為奇數,因此也應當刪除;而字符2的ASCII碼值為偶數,所在數組中的下標也為偶數,因此不應當刪除,其他依此類推。最后t所指的數組中的內容應是:“246”。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。

26.請編寫一個函數fun(),它的功能是計算并輸出給定整數n的所有因子(不包括1與自身)的平方和(規定n的值不大于100)。

例如:主函數從鍵盤給輸入n的值為56,則輸出為sum=1113。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

longfun(intn)

{

}

main()

{

intn;

longsum;

printf("Inputn:");

scanf("%d",&n);

sum=fun(n);

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

}

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

s作為函數值返回。

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

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

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(intm)

{

}

main()

{

clrscr();

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

}

28.請編寫函數fun(),其功能是:將s所指字符串中除了下標為奇數、同時ASCII值為偶數的字符外,其余的全部刪除,串中剩余字符所形成的一個新串放在t所指的數組中。

例如,若s所指字符串中的內容為edB2A4Dsdg,其中字符A的ASCII碼值為奇數,因此應當刪除;其中字符B的ASCII碼值為偶數,但在數組中的下標為偶數,因此也應當刪除:而字符2的ASCII碼值為偶數,所在數組中的下標為奇數,因此不應當刪除,其他依此類推。最后t所指的數組中的內容應是d24。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string,h>

voidfun(char*s,chart[])

{

}

main()

{

chars[100],t[100];

clrscr();

printf("\nPleaseenterstringS:");

scanf("%s",s);

fun(s,t);

printf("\nTheresultis:%s\n",t);

}

29.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能是:按分數的高低排列學生的記錄,高分在前。

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

[試題源程序]

#include<stdio.h>

#defineN16

typedefstruct

{

charnum[i0];

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECs[N]={

{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}

};

inti;

FILE*out;

fun(s);

printf("Thedataaftersorted:\n");

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

{

if((i)%4==0)

printf("\n");

printf("%s%4d",s[i].num,s[i].s);

}

printf("\n");

}

30.請編寫一個函數fun(),它的功能是:求出1到m(含m)之內能被7或11整除的所有整數放在數組a中,通過n返回這些數的個數。

例如,若傳給m的值為50,則程序輸出:

7111421X283335424449

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{

}

main()

{

intaa[M],n,k;

clrscr();

fun(50,aa,&n);

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

if((k+1)%20==0)/*每行輸出20個數*/

{printf("%4d",aa[k]);

printf("\n");

}

else

printf("%4d",aa[k]);

printf("\n");

}

31.請編寫一個函數,函數的功能是刪除字符串中的所有空格。

例如,主函數中輸入“asdafaaz67”,則輸出為“asdafaaz67”。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。

32.請編寫函數fun(),其功能是:計算并輸出下列多項式值。

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

例如,若主函數從鍵盤給n輸入12后,則輸出為S=3.775958。

n的值要求大于1但不大于100。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\nlnputn:");

scanf("%d",&n);

s=fun(n);

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

}

33.請編寫函數fun,函數的功能是:統計各年齡段的人數。N個年齡通過調用隨機函數獲得,并放在主函數的age數組中;要求函數把O至9歲年齡段的人數放在d[0]中,把10至19歲年齡段的人數放在d[1],把20至29歲年齡段的人數放在d[2]中,其余依此類推,把100歲(含100)以上年齡的人數都放在d[10]中。結果在主函數中輸出。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。

34.請編寫一個函數fun,它的功能是:找出一維整型數組元素中最大的值和它所在的下標,最大的值和它所在的下標通過形參傳回。數組元素中的值已在主函數中賦予。

主函數中x是數組名,n是x中的數據個數,max存放最大值,index存放最大值所在元素的下標。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。

四、單選題(0題)35.當很頻繁的對序列中部進行插入和刪除操作時,應該選擇使用的容器是()

A.vectorB.listC.dequeD.stack

五、單選題(0題)36.若有定義語句:intX=10;,則表達式x-=x+X的值為A.-20B.-10C.0D.10

六、單選題(0題)37.有以下程序:#include<stdio.h>main(){inta=2,b=3,c=4;a*=16+(b++)-(++c);printf(“%d\n”,a);}程序運行后的輸出結果是()。

A.15B.30C.28D.14

參考答案

1.C(10)C)解析:DB即數據庫(Database),是統一管理的相關數據的集合;DBMS即數據庫管理系統(DatabaseManagementSystem),是位于用戶與操作系統之間的一層數據管理軟件,為用戶或應用程序提供訪問DB的方法;DBS即數據庫系統(DatabaseSystem)由如下5部分組成,數據庫(數據)、數據庫管理系統(軟件)、數據庫管理員(人員)、系統平臺之一——硬件平臺(硬件)、系統平臺之二——軟件平臺(軟件)。

2.Aif條件為真,執行“x=y;”,此時x=11,y=11,z=12;再執行“y=z;z=x;”,此時y=12,z=11,即x=11,y=12,z=11。故本題答案為A選項。

3.D解析:返回指針的函數定義為:返回值類型,函數名(\u3000\u3000),而指向函數的指針定義為:返回值類型(*變量名)(\u3000\u3000)。本題中函數fun返回一個無類型的指針。

4.D選項A是實型常量的指數形式,表示0.023×10-5;選項B是十六進制表示的整型常量;選項C是十六進制表示的轉義字符常量;選項D是字符串常量,應該使用雙引號標注。故本題答案為D選項。

5.B

6.D【答案】D

【知識點】字符常量的考察

【解析】在C語言中要求八進制字符常量的表示為\\ddd形式,但是八進制中只有0~7,7個數字,沒有9這個數字,所以選擇D。

7.D本題考查靜態變量,靜態變量有儲存已經操作過的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案選擇D。

8.C解析:數據處理的最小單位是數據項;由若干數據項組成數據元素;而數據是指能夠被計算機識別、存儲和加工處理的信息載體;數據結構是指數據之間的相互關系和數據運算。故正確答案為選項C)。

9.B解析::串的長度定義為串中字符的數目。所以B)為正確答案。C)答案不正確,因為串中可以含有相同的字符;A)答案不正確,因為串中可能含有相同的字母,而且也可能含有數字等其他非字母字符;D)答案不正確,因為空格也是一種字符,在計算長度時理應將其計算在內。

10.Dchange函數接收一個整型指針data,然后將data指向的數對2求余,求余后的值重新賦給data指向的變量,最后將data指向的變量值加1后返回。注意,此處data指向的數對2求余會改變實參指針指向的值,但返回值并不影響data指向的值。程序第1次調用change函數,傳入實參data的地址,將data的值修改為0(12%2=0),此時輸出data的值是0;再次調用change傳入data的地址,將data的值修改為0(0%2=0),然后將返回值1重新賦給主函數變量data,所以此時輸出data的值是1。綜上,程序輸出0,1,。故本題答案為D選項。

11.D

12.C本題考查do-while循環,在fun函數中,首先定義了靜態變量i=0,do-while循環要實現的功能是以b[0]=b[0]+b[1],b[1]=b[1]+b[2],其他元素不變的規則重新給b數組賦值。在主函數中,通過調用fun函數,按上面的規則對數組a重新賦值,最后輸出數組a。

13.2121解析:外層switch語句后面括號里的x的值為1,所以執行從casel:后面的語句開始執行,而cascl:后面語句也為switch語句,這個switch語句后面括號里的y的值為0,所以從該switch語句里的case0:開始執行即執行a++,這時a的值變為1,執行完畢,遇到break語句,退出內層switch語句,又回到外層switch語句,繼續執行casel:下面的語句即case2:執行完畢后,a自加1變為2,b自加1變為1。所以最后輸出的a和b的值為21。

14.585858585858解析:在程序中,執行scanf()語句后,a被賦值為58。接著執行第一個if語句,因為,a=58>50,執行第一個if語句后面的輸出語句,輸出58;接著執行第二個if語句,因為,a=58>40,執行第二個if語句后面的輸出語句,輸出58;接著執行第三個if語句,因為,a=58>30,執行第三個if語句后面的輸出語句,輸出58,所以最后的輸出為585858。

15.關系或一個關系關系或一個關系解析:在關系數據庫中,把數據表示成二維表,而一個二維表就是一個關系。

16.66

17.數據存儲數據存儲

18.99解析:考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。

19.77解析:本題考查的是函數的遞歸調用。x=0或x=1是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計算出最終結果。

20.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。

21.有窮性有窮性

22.封裝封裝

23.繼承繼承

24.上溢上溢解析:入隊運算是指在循環隊列的隊尾加入一個新元素。這個運算有兩個基本操作:首先將隊尾指針進一(即rear=rear+1),并當rear=m+1時置rear=1;然后將新元素插入隊尾指針指向的位置。當循環隊列非空(s=1)時且隊尾指針等于隊頭指針時,說明循環隊列已滿,不能進行入隊運算,這種情況稱為“上溢”。

25.

解析:該程序功能是將字符串中除了下標為偶數、ASCII值也為偶數的字符外,其余的全都刪除。解題過程利用if條件判斷表達式選擇符合條件的字符,然后將符合條件的字符放入指定的字符串。

26.longfun(intn){inti;longs=0;for(i=2;i<=n-1;i++)/*從2~n-1中找n的所有因子*/if(n%i==0)s+=i*i;/*將所有因子求平方加*/returns;/將平方和返回*/}longfun(intn)\r\n{\r\ninti;\r\nlongs=0;\r\nfor(i=2;i<=n-1;i++)/*從2~n-1中找n的所有因子*/\r\nif(n%i==0)\r\ns+=i*i;/*將所有因子求平方加*/\r\nreturns;/將平方和返回*/\r\n}解析:本題的解題思路是用n逐個去除以2到n-1之間的所有數,如果n能被除盡,則把所得到的一個因子的平方累加到s中去。

27.doublefun(intm){inti;doubles=1.0;for(i=1;i<=m;i++)s=s-log(i);/*計算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);/*計算s=l-In(1)-In(2)-In(3)-…-In(m)*/\r\nreturn(s*s);/*對s求平方并返回*/\r\n}解析:首先,題目要求計算1依次減去1到M的對數,可用從1到M的循環,每次循環都減一個數的對數。該題需要注意,log()函數的形式參數應浩如煙海double型變量,用于循環的基數變量為整數,需要進行強制轉換。最后在返回的時求平方。

28.voidfun(char*schart[]){intij=0;for(i=0;s[i]!='\0';i++)if(i%2!=0&&s[i]%2==0)/*將s所指字符串下標為奇數同時ASCII值為偶數的字符放入數組t中*/t[j++]=s[i];t[j]='\0';/*在字符串最后加上結束標志位*/}voidfun(char*s,chart[])\r\n{\r\ninti,j=0;\r\nfor(i=0;s[i]!='\\0';i++)\r\nif(i%2!=0&&s[i]%2==0)/*將s所指字符串下標為奇數同時ASCII值為偶數的字符放入數組t中*/\r\nt[j++]=s[i];\r\nt[j]='\\0';/*在字符串最后加上結束標志位*/\r\n}解析:本題要求除了下標為奇數同時ASCII值為偶數的字符之外,其他字符都刪除。即題目要求留下下標為奇數同時ASCII值為偶數的字符。C語言中并沒有直接刪除字符的算法,請大家在做題的時候注意。

29.#include<stdi0.h>#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STRECa[]){STRECtmp;intij;for(i=0;i<N;i++)for(j=i+1;j<N;J++)if(a[i].s<a[j].S){tmp=a[i];a[i]=a[j];a[j]=tmp;}}#include<stdi0.h>\r\n#defineN16\r\ntypedefstruct\r\n{\r\ncharnum[10];\r\nints;\r\n}STREC;\r\nintfun(STRECa[])\r\n{\r\nSTRECtmp;\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=i+1;j<N;J++)\r\nif(a[i].s<a[j].S)\r\n{\r\ntmp=a[i];\r\na[i]=a[j];\r\na[j]=tmp;\r\n}\r\n}

30.voidfun(intmint*aint*n){intij=0;for(i=1;i<=m;i++)if(i%7==0||i%11==0)/*求出1到m(含m)之內能被7或11整除的所有整數放在數組a中*/a[j++]=i;*n=j;/*返回這些數的個數*/}voidfun(intm,int*a,int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<=m;i++)\r\nif(i%7==0||i%11==0)/*求出1到m(含m)之內能被7或11整除的所有整數放在數組a中*/\r\na[j++]=i;\r\n*n=j;/*返回這些數的個數*/\r\n}解析:本題要找出能被7或11整除的所有整數,注意數學中的“或”和C語言中的“或”的區別,但在此處,if條件語句中用了“||”運算符,若要找能同時被7和11整除的所有整數則在if()中應用“&&”運算符。

31.

解析:該程序功能是刪除字符串中的所有空格。本題的解題思路是首先利用一個指向字符串的指針,查找不是空格的字符,然后將不是空格的字符賦值到字符串,如果是空格,則跳過該字符,這樣就實現了空格字符的刪除。

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

33.

解析:該程序功能是統計各年齡段的人數。本題中采用的是多if選擇語句,實現了不同年齡段的分支選擇。

34.

解析:該程序功能是求一維整型數組元素中最大的值和它所在的下標。其中,求最大元素的方法:用最大值變量nax標記第一個待找數據,逐個把所有待找數據和max進行比較,并用max標記其當前最大值及其所在位置,從而找出最大值。

35.B

36.B解析:x-=x+x可化為:x=x-(x+x),由于x初始值為10,所以計算后,x=10-20=-10,因此選B)。

37.C單目運算符“++”的優先級高于賦值運算符。表達式“a*=16+(b++)-(++C);”可轉化為“a=a*(16+b-(c+1));b=b+1;”,代入值計算可得a=28。故本題答案為C選項。2022-2023學年黑龍江省綏化市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(12題)1.數據庫DB、數據庫系統DBS、數據庫管理系統DBMS之間的關系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關系

2.有以下程序:#include<stdio.h>main(){intx=10,y=11,z=12;if(y<z)x=y;y=z;z=x;printf(“x=%dy=%dz=%d\n”,x,y,z);}程序運行后的輸出結果是()。

A.x=11y=12z=11

B.x=10y=10z=10

C.x=11y=11z=10

D.x=10y=10z=12

3.程序中對fun函數有如下說明

void*fun();

此說明的含義是:A.fun了數無返回值

B.fun函數的返回值可以是任意的數據類型

C.fun函數的返回值是無值型的指針類型

D.指針fun指向一個函數,該函數無返回值

4.下面不合法的常量數據是()。

A..023E-5B.0x3f7b8a90C.‘\0x6d’D.‘\0123321’

5.若串S=,software,其子串的數目是()。

A.8B.37C.36D.9

6.以下選項中非法的字符常量是A.A.'\101'

B.'\65'

C.”\xff'

D.'\019'

7.有以下程序:#include〈stdio.h〉voidfun(int*s){staticintj=0;do{s[j]=s[j]+s[j+1];}while(++j<2);}main(){inti.a[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=0;i<5;i++)pfintf(“%d”,a[i]);printf(“\n”);}程序運行后的輸出結果是()。A.12345B.23445C.34756D.35745

8.數據處理的最小單位是()。

A.數據B.數據元素C.數據項D.數據結構

9.串的長度是指()。

A.串中所含不同字母的個數B.串中所含字符的個數C.串中所含不同字符的個數D.串中所含非空格字符的個數

10.有以下程序:#include<stdio.h>intchange(int*data){*data=*data%2;return(*data)+1;}main(){intdata=12;change(&data);printf(“%d,”,data);data=change(&data);printf(“%d,”,data);}程序運行后的輸出結果是()。

A.0,0,B.1,2,C.12,13,D.0,1,

11.線處應填入().A.b[i++]B.b[i]++C.b[i+=2]D.b[i]+=2

12.下列程序的輸出結果是()。#includedstdi0.h>#includedstring.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main{intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A.13579B.48579C.48549D.48999

二、2.填空題(12題)13.以下程序運行后輸出的結果是【】。

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{

case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

printf("%d%d\n",a,b);

}

14.若從鍵盤輸入58,則以下程序的輸出結果是【】。

main()

{inta;

scanf(“%d”,&A);

if(a>50)printf(“%d”,A);

if(a>40)printf(“%d”,A);

if(a>30)printf(“%d”,A);

}

15.在關系數據庫中把數據表示成二維表,每一個二維表稱為【】。

16.若有如下程序:

main()

{intx=5,y,*t;t=&x;

y=++(*t);

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

則程序執行后的x值為【】,y的值為【】。

17.數據字典是各類數據描述的集合,它通常包括5個部分,即數據項、數據結構、數據流、______和處理過程。

18.下列程序的輸出結果是______。

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

19.下述程序的輸出結果是【】。

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

{printf("\n%d",fun(9));}

20.問題處理方案的正確而完整的描述稱為______。

21.算法的基本特征主要包括叫個方面,它們分別是可行性、確定性、()和擁有足夠的情報。

22.在面向對象方法中,信息隱蔽是通過對象的______性來實現的。

23.在面向對象方法中,類之間共享屬性和操作的機制稱為______。

24.當循環隊列非空且隊尾指針等于隊頭指針時,說明循環隊列已滿,不能進行入隊運算。這種情況稱為【】。

三、3.程序設計題(10題)25.函數fun的功能是:將s所指字符串中除了下標為偶數、同時ASCII值也為偶數的字符外,其余的全都刪除;串中剩余字符所形成的一含新串放在t所指的數組中。

例如,若s所指字符串中的內容為:“ABCDEFGl23456”,其中字符A的ASCII碼值為奇數,因此應當刪除:其中字符B的ASCII碼值為偶數,但在數組中的下標為奇數,因此也應當刪除;而字符2的ASCII碼值為偶數,所在數組中的下標也為偶數,因此不應當刪除,其他依此類推。最后t所指的數組中的內容應是:“246”。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。

26.請編寫一個函數fun(),它的功能是計算并輸出給定整數n的所有因子(不包括1與自身)的平方和(規定n的值不大于100)。

例如:主函數從鍵盤給輸入n的值為56,則輸出為sum=1113。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

longfun(intn)

{

}

main()

{

intn;

longsum;

printf("Inputn:");

scanf("%d",&n);

sum=fun(n);

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

}

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

s作為函數值返回。

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

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

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(intm)

{

}

main()

{

clrscr();

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

}

28.請編寫函數fun(),其功能是:將s所指字符串中除了下標為奇數、同時ASCII值為偶數的字符外,其余的全部刪除,串中剩余字符所形成的一個新串放在t所指的數組中。

例如,若s所指字符串中的內容為edB2A4Dsdg,其中字符A的ASCII碼值為奇數,因此應當刪除;其中字符B的ASCII碼值為偶數,但在數組中的下標為偶數,因此也應當刪除:而字符2的ASCII碼值為偶數,所在數組中的下標為奇數,因此不應當刪除,其他依此類推。最后t所指的數組中的內容應是d24。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string,h>

voidfun(char*s,chart[])

{

}

main()

{

chars[100],t[100];

clrscr();

printf("\nPleaseenterstringS:");

scanf("%s",s);

fun(s,t);

printf("\nTheresultis:%s\n",t);

}

29.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能是:按分數的高低排列學生的記錄,高分在前。

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

[試題源程序]

#include<stdio.h>

#defineN16

typedefstruct

{

charnum[i0];

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECs[N]={

{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}

};

inti;

FILE*out;

fun(s);

printf("Thedataaftersorted:\n");

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

{

if((i)%4==0)

printf("\n");

printf("%s%4d",s[i].num,s[i].s);

}

printf("\n");

}

30.請編寫一個函數fun(),它的功能是:求出1到m(含m)之內能被7或11整除的所有整數放在數組a中,通過n返回這些數的個數。

例如,若傳給m的值為50,則程序輸出:

7111421X283335424449

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{

}

main()

{

intaa[M],n,k;

clrscr();

fun(50,aa,&n);

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

if((k+1)%20==0)/*每行輸出20個數*/

{printf("%4d",aa[k]);

printf("\n");

}

else

printf("%4d",aa[k]);

printf("\n");

}

31.請編寫一個函數,函數的功能是刪除字符串中的所有空格。

例如,主函數中輸入“asdafaaz67”,則輸出為“asdafaaz67”。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。

32.請編寫函數fun(),其功能是:計算并輸出下列多項式值。

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

例如,若主函數從鍵盤給n輸入12后,則輸出為S=3.775958。

n的值要求大于1但不大于100。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\nlnputn:");

scanf("%d",&n);

s=fun(n);

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

}

33.請編寫函數fun,函數的功能是:統計各年齡段的人數。N個年齡通過調用隨機函數獲得,并放在主函數的age數組中;要求函數把O至9歲年齡段的人數放在d[0]中,把10至19歲年齡段的人數放在d[1],把20至29歲年齡段的人數放在d[2]中,其余依此類推,把100歲(含100)以上年齡的人數都放在d[10]中。結果在主函數中輸出。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。

34.請編寫一個函數fun,它的功能是:找出一維整型數組元素中最大的值和它所在的下標,最大的值和它所在的下標通過形參傳回。數組元素中的值已在主函數中賦予。

主函數中x是數組名,n是x中的數據個數,max存放最大值,index存放最大值所在元素的下標。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。

四、單選題(0題)35.當很頻繁的對序列中部進行插入和刪除操作時,應該選擇使用的容器是()

A.vectorB.listC.dequeD.stack

五、單選題(0題)36.若有定義語句:intX=10;,則表達式x-=x+X的值為A.-20B.-10C.0D.10

六、單選題(0題)37.有以下程序:#include<stdio.h>main(){inta=2,b=3,c=4;a*=16+(b++)-(++c);printf(“%d\n”,a);}程序運行后的輸出結果是()。

A.15B.30C.28D.14

參考答案

1.C(10)C)解析:DB即數據庫(Database),是統一管理的相關數據的集合;DBMS即數據庫管理系統(DatabaseManagementSystem),是位于用戶與操作系統之間的一層數據管理軟件,為用戶或應用程序提供訪問DB的方法;DBS即數據庫系統(DatabaseSystem)由如下5部分組成,數據庫(數據)、數據庫管理系統(軟件)、數據庫管理員(人員)、系統平臺之一——硬件平臺(硬件)、系統平臺之二——軟件平臺(軟件)。

2.Aif條件為真,執行“x=y;”,此時x=11,y=11,z=12;再執行“y=z;z=x;”,此時y=12,z=11,即x=11,y=12,z=11。故本題答案為A選項。

3.D解析:返回指針的函數定義為:返回值類型,函數名(\u3000\u3000),而指向函數的指針定義為:返回值類型(*變量名)(\u3000\u3000)。本題中函數fun返回一個無類型的指針。

4.D選項A是實型常量的指數形式,表示0.023×10-5;選項B是十六進制表示的整型常量;選項C是十六進制表示的轉義字符常量;選項D是字符串常量,應該使用雙引號標注。故本題答案為D選項。

5.B

6.D【答案】D

【知識點】字符常量的考察

【解析】在C語言中要求八進制字符常量的表示為\\ddd形式,但是八進制中只有0~7,7個數字,沒有9這個數字,所以選擇D。

7.D本題考查靜態變量,靜態變量有儲存已經操作過的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案選擇D。

8.C解析:數據處理的最小單位是數據項;由若干數據項組成數據元素;而數據是指能夠被計算機識別、存儲和加工處理的信息載體;數據結構是指數據之間的相互關系和數據運算。故正確答案為選項C)。

9.B解析::串的長度定義為串中字符的數目。所以B)為正確答案。C)答案不正確,因為串中可以含有相同的字符;A)答案不正確,因為串中可能含有相同的字母,而且也可能含有數字等其他非字母字符;D)答案不正確,因為空格也是一種字符,在計算長度時理應將其計算在內。

10.Dchange函數接收一個整型指針data,然后將data指向的數對2求余,求余后的值重新賦給data指向的變量,最后將data指向的變量值加1后返回。注意,此處data指向的數對2求余會改變實參指針指向的值,但返回值并不影響data指向的值。程序第1次調用change函數,傳入實參data的地址,將data的值修改為0(12%2=0),此時輸出data的值是0;再次調用change傳入data的地址,將data的值修改為0(0%2=0),然后將返回值1重新賦給主函數變量data,所以此時輸出data的值是1。綜上,程序輸出0,1,。故本題答案為D選項。

11.D

12.C本題考查do-while循環,在fun函數中,首先定義了靜態變量i=0,do-while循環要實現的功能是以b[0]=b[0]+b[1],b[1]=b[1]+b[2],其他元素不變的規則重新給b數組賦值。在主函數中,通過調用fun函數,按上面的規則對數組a重新賦值,最后輸出數組a。

13.2121解析:外層switch語句后面括號里的x的值為1,所以執行從casel:后面的語句開始執行,而cascl:后面語句也為switch語句,這個switch語句后面括號里的y的值為0,所以從該switch語句里的case0:開始執行即執行a++,這時a的值變為1,執行完畢,遇到break語句,退出內層switch語句,又回到外層switch語句,繼續執行casel:下面的語句即case2:執行完畢后,a自加1變為2,b自加1變為1。所以最后輸出的a和b的值為21。

14.585858585858解析:在程序中,執行scanf()語句后,a被賦值為58。接著執行第一個if語句,因為,a=58>50,執行第一個if語句后面的輸出語句,輸出58;接著執行第二個if語句,因為,a=58>40,執行第二個if語句后面的輸出語句,輸出58;接著執行第三個if語句,因為,a=58>30,執行第三個if語句后面的輸出語句,輸出58,所以最后的輸出為585858。

15.關系或一個關系關系或一個關系解析:在關系數據庫中,把數據表示成二維表,而一個二維表就是一個關系。

16.66

17.數據存儲數據存儲

18.99解析:考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。

19.77解析:本題考查的是函數的遞歸調用。x=0或x=1是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計算出最終結果。

20.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。

21.有窮性有窮性

22.封裝封裝

23.繼承繼承

24.上溢上溢解析:入隊運算是指在循環隊列的隊尾加入一個新元素。這個運算有兩個基本操作:首先將隊尾指針進一(即rear=rear+1),并當rear=m+1時置rear=1;然后將新元素插入隊尾指針指向的位置。當循環隊列非空(s=1)時且隊尾指針等于隊頭指針時,說明循環隊列已滿,不能進行入隊運算,這種情況稱為“上溢”。

25.

解析:該程序功能是將字符串中除了下標為偶數、ASCII值也為偶數的字符外,其余的全都刪除。解題過程利用if條件判斷表達式選擇符合條件的字符,然后將符合條件的字符放入指定的字符串。

26.longfun(intn){inti;longs=0;for(i=2;i<=n-1;i++)/*從2~n-1中找n的所有因子*/if(n%i==0)s+=i*i;/*將所有因子求平方加*/returns;/將平方和返回*/}longfun(intn)\r\n{\r\ninti;\r\nlongs=0;\r\nfor(i=2;i<=n-1;i++)/*從2~n-1中找n的所有因子*/\r\nif(n%i==0)\r\ns+=i*i;/*將所有因子求平方加*/\r\nreturns;/將平方和返回*/\r\n}解析:本題的解題思路是用n逐個去除以2到n-1之間的所有數,如果n能被除盡,則把所得到的一個因子的平方累加到s中去。

27.doublefun(intm){inti;doubles=1.0;for(i=1;i<=m;i++)s=s-log(i);/*計算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);/*計算s=l-In(1)-In(2)-In(3)-…-In(m)*/\r\n

溫馨提示

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

評論

0/150

提交評論