2023年寧夏回族自治區(qū)銀川市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第1頁
2023年寧夏回族自治區(qū)銀川市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第2頁
2023年寧夏回族自治區(qū)銀川市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第3頁
2023年寧夏回族自治區(qū)銀川市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第4頁
2023年寧夏回族自治區(qū)銀川市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023年寧夏回族自治區(qū)銀川市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.存儲300個16×16點陣的漢字信息需要【】字節(jié)。

2.下列語句的輸出結(jié)果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

3.當執(zhí)行以下程序時,輸入1234567890<回車>,則其中while循環(huán)體將執(zhí)行()次。

#include<stdio.h>

main()

{charch;

while((ch=getchar())=='0')printf("#");

}

4.以下程序的功能是:利用指針向三個整型變量,并通過指針運算找出三個數(shù)中最大值,輸出到屏幕上。請?zhí)羁?/p>

main()

{intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;py=&y;pz=&z;pmax=&max;

if(*pmax<*py)*pmax=*py;

if(*pmax<*pz)*pmax二*pz;

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

5.在程序設(shè)計階段應(yīng)該采取【】和逐步求精的方法,把一個模塊的功能逐步分解,細化為一系列具體的步驟,進而用某種程序設(shè)計語言寫成程序。

6.按"先進后出"原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是【】。

7.若a的值為1,則表達式!a‖++a的值是______。

8.設(shè)x、y、z均為int型變量,請寫出描述“x或y中至少有一個小于z”的表達式______。

9.若有下列定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,則值為3的表達式為:______。

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

二、單選題(10題)11.有以下程序:#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);}程序運行后的輸出結(jié)果是()。

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

12.數(shù)據(jù)庫系統(tǒng)的核心是()。

A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員

13.直接選擇排序的時間復(fù)雜度為()。(n為元素個數(shù))

A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)

14.以下四個選項,不能看作一條語句的是()。

A.{;}B.a=0,b=0,c=0;C.if(a>0);D.if(b==0)m=1;n=2;

15.當一個函數(shù)無返回值時,定義它的函數(shù)類型應(yīng)是()。

A.voidB.intC.任意D.無

16.數(shù)字字符“2”的ASCII碼為十進制數(shù)50,數(shù)字字符“5”的ASCII碼為十進制數(shù)()

A.52B.55C.54D.53

17.有以下程序:#include<stdio.h>intf(intx);main(){intn=1,m;m=f(f(f(n)));printf(“%d\n”,m);}intf(intx){returnx*2;}程序的運行結(jié)果是()。

A.8B.2C.4D.1

18.有下列程序:

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

A.30B.35C.40D.32

19.關(guān)于數(shù)組和指針,以下說法錯誤的是()。

A.數(shù)組名本身就是一個指針,指向數(shù)組內(nèi)存的起始位置

B.既可以讀入數(shù)據(jù)到數(shù)組中,也可以讀入數(shù)據(jù)到未賦初值的指針中

C.可以將指針指向一個同類型的數(shù)組

D.指針可以指向同類型的數(shù)組中的任意一個元素

20.鏈表不具有的特點是A.A.不必事先估計存儲空間

B.可隨機訪問任一元素

C.插入和刪除不需要移動元素

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

三、程序設(shè)計題(10題)21.請編寫函數(shù)proc,其功能是:將str所指字符串中除下標為偶數(shù)、同時ASCIl碼值為奇數(shù)的字符外,其余的字符都刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容為ABCDEFGl2345,其中字符B的ASCIl碼值為偶數(shù),所在元素的下標為奇數(shù),因此必須刪除;而字符A的ASCIl碼值為奇數(shù),所在數(shù)組中的下標為偶數(shù),因此不應(yīng)當刪除。依此類推,最后t所指的數(shù)組中的內(nèi)容應(yīng)是ACEG。

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*str,chart[])

{

}

voidmain

{

charstr[100],t[100];

system("CLS");

printf("\nPleaseenterstringstr:");

scanf("%S",str);

proc(str,t);

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

22.假定輸入的字符串只包含字母和“#”號,請編寫函數(shù)fun(),它的功能是:刪除字符串中所有的“#”號。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,若字符串中的內(nèi)容為“##w#e1##come###”,刪除后,字符串中的內(nèi)容則應(yīng)當是“welcome”。請勿改動main()函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:

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

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

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

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

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

試題程序:

#includet:stdio.h>

doubleproc(intn)

{

}

voidmain

{

intn;

doubleslim;

printf("\nInputn:");

scanf("%d",&n);

sum=proc(n)。

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

}

24.M名學(xué)生的成績已在主函數(shù)中放入一個帶頭結(jié)點的鏈表結(jié)構(gòu)中,h指向鏈表的帶頭結(jié)點。請編寫函數(shù)proc(),它的功能是:找出學(xué)生的最高分,由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

25.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:將字符串中的前導(dǎo)*號全部刪除,中間和后面的*號不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應(yīng)當是a*bc*def*g****。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

26.請編寫函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值所在的下標,并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

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

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

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

試題程序:

27.請編一個函數(shù)intfun(inta),它的功能是:判斷a是否是素數(shù),若a是素數(shù),返回1;若不是素數(shù),返回0。A的值由主函數(shù)從鍵盤讀入。

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

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

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

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

試題程序:

29.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是實現(xiàn)B=A+AT,即將矩陣A加上A的轉(zhuǎn)置,結(jié)果存放在矩陣B中。計算結(jié)果在main()函數(shù)中輸出。舉例如下。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>voidfun(inta[3][3],intb[3][3]){}voidmain(){ inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; inti,j; system(“CLS”); fun(a,t); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%7d”,t[i][j]); printf(“\n”); }}

30.有一個一維數(shù)組,內(nèi)放10個學(xué)生成績,寫一個函數(shù),求出平均分。

四、2.程序修改題(10題)31.給定程序中函數(shù)fun的功能是:將一個由八進制數(shù)字字符組成的字符串轉(zhuǎn)換為與其值相等的十進制整數(shù)。規(guī)定輸入的字符串最多只能包含5位八進制數(shù)字字符。

例如,若輸入:77777,則輸出將是:32767。

請改正程序中的錯誤,使它能得到正確結(jié)果。

[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

[試題源程序]

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

intfun(char*p)

{

intn;

/**********found**********/

n=*p-'o';

p++;

while(*p!=0){

/**********found**********/

n=n*8+*p-'o';

p++;

}

returnn;

}

main()

{

chars[6];inti;intn;

printf("Enterastring(Ocataldigits):");

gets(s);

if(strlen(s)>5)

{

printf("Error:Stringtoolonger!\n\n");

exit(0);

}

for(i=0;s[i];i++)

if(s[i]<'0'||s[i]>'7')

{

printf("Error:%cnotisocataldigits!\n\n",s[i]);

exit(0);

}

printf("Theoriginalstring:");

puts(s);

n=fun(s);

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

}

32.給定程序MODll.C中函數(shù)fun的功能是:從整數(shù)1到55之間,選出能被3整除、且有一位上的數(shù)是5的那些數(shù),并把這些數(shù)放在b所指的數(shù)組中,這些數(shù)的個數(shù)作為函數(shù)值返回。規(guī)定,函數(shù)中a1放個位數(shù),a2放十位數(shù)。

請改正程序中的錯誤,使它能得出正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

33.下列給定程序中,函數(shù)fun()的功能是:給定n個實數(shù),輸出平均值,并統(tǒng)計平均值以上(含平均值)的實數(shù)個數(shù)。例如,n=8時,輸入193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值為195.838745,在平均值以上的實數(shù)個數(shù)應(yīng)為5。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(floatx[],intn)

/***************found*******************/

ihtj,c=0;floatxa=0.0;

for(j=0;j<n;.j++)

xa+=x[j]/n;

printf("ave=%f\n",xa);

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

if(x[j]>=xa)

c++;

returnc;

}

main()

{floatx[l00]={193.199,195.673,195.757,

196.051,196.092,196.596,

196.579,196.763};

clrscr();

printf("%d\n",fun(x,8));

}

34.已知一個數(shù)列從第0項開始的前三項分別為0,0,1,以后的各項都是其相鄰的前三項之和。給定程序MODll.C中函數(shù)fun的功能是:計算并輸出該數(shù)列前n項的平方根之和。n的值通過形參傳入。

例如,當n=10時,程序的輸出結(jié)果應(yīng)為:23.197745。

請改正程序中的錯誤,使程序能輸出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

35.給定程序MODll.C中函數(shù)fun的功能是:用下面的公式求π的近似值,直到最后一項的絕對值小于指定的數(shù)(參數(shù)num)為止:

例如,程序運行后,輸入0.0001,則程序輸出3.1414。

請改正程序中的錯誤,使它能輸出正確的結(jié)果。

注意:不要改動smain函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

36.給定程序MODII.C中函數(shù)fun的功能是:把主函數(shù)中輸入的3個數(shù),最大的放在a中,最小的放在c中,中間的放在b中。

例如,輸入的數(shù)為:551234,輸出結(jié)果應(yīng)當是:a=55.0,b=34.0,c=12.0。

請改正程序中的錯誤,使它能得出正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

37.下列給定程序中,函數(shù)fun()的功能是:傳入一個整數(shù)m,計算如下公式的值。

t=1/2-1/3-…-1/m

例如,若輸入5,則應(yīng)輸出-0.283333。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<conio.h>

#include<stdio.h>

doublefun(intm)

{

doublet=l.0;

inti;

for(i=2;i<=m;i++)

/*************found**************/

t=l.0-1/i;

/*************found**************/

}

main()

{intm;

clrscr();

printf("\nPleaseenter1integernumbers

:In");

scanf("%d",&m);

printf("\n\nTheresultis%lfln",

fun(m));

}

38.下列給定程序中,函數(shù)fun()的功能是:對N名學(xué)生的學(xué)習(xí)成績,按從高到低的順序找出前叫m≤10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).

試題程序:

#include<conio.h>

#include<string.h>

#include<stdio.h>

#include<alloc.h>

#defineN10

typedefstructss

{charnum[10];

ints;

}STU;

STU*fun{STUa[],intm)

{STUb[N],*t;

inti,j,k;

/*************found**************/

*t=calloc(m,slzeof(STU));

for(i=0;i<N;i++)b[i]=a[i];

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

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

if(b[i].s>b[j].s)j=i;

/*************found**************/

t[k].num=b[j].num;

t[k].s=b[j]s;

b[j].s=0;

}

returnt;

}

outresult(STUa[],FILE*pf)

{inti;

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

fprintf(pf,"No=%sMark-%d\n",

a[i].num,a[i].s);

fprintf(pf,"\n\n");

}

main()

{STUa[N]={{"A01",81},{"A02",89},

{"A03",66},{"A04",87},{"A05",77},

{"A06",90},{"A07",79},{"A08",61},

{"A09",80},{"Al0",71}};

STU*pOrder;

inti,m;

clrscr();

printf("*****THERESULT*****\n");

outresult(a,stdout);

printf("\nGivethenumberofthestudents

whohavebetterscore:");

scanf("%d",&m);

while(m>10)

{printf("lnGivethenumberofthe

studentswhohavebetterscore:");

scanf("%d",%m);

pOrder=fun(a,m);

printf("*****THERESULT*****kn");

printf("Thetop:\n");

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

printf("%s%d\n",pOrder[i].num,

p0rder[i].s);

free(pOrder);

}

39.給定程序MODll.C的功能是:讀入一個英文文本行,將其中每個單詞的第一個字母改成大寫,然后輸出此文本行(這里的“單詞”是指由空格隔開的字符串)。

例如,若輸入:Iamastudenttotaketheexamination.,則應(yīng)輸出:IAmAStudentToTakeTheExamination.。

請改正程序中的錯誤,使程序能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

40.給定程序MODll.C中函數(shù)fun的功能是:求出以下分數(shù)序列的前n項之和。和值通過函數(shù)值返回到main函數(shù)。

例如,若n=5,則應(yīng)輸出:8.391667。

請改正程序中的錯誤,使它能計算出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

五、程序改錯題(2題)41.下列給定程序中,函數(shù)proc()的功能是逐個比較str1,str2兩個字符串對應(yīng)位置中的字符,把比ASCⅡ值大或相等的字符依次存放到str數(shù)組中,形成一個新的字符串。

例如,str1中的字符串為fshADfg,str2中的字符串為sdAEdi,則str中的字符串應(yīng)為sshEdig。

請修改程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

42.下列給定的程序中,函數(shù)proc的功能是:判斷字符ch是,與str所指字符串中的某個字符相同;若相同,則什么也不做,若不同,則將其插在串的最后。請修改程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

//****found****

voidproc(charstr,charch)

{

while(*str&&*str!=ch)str++;

//****found****

if(*str==ch)

{str[0]=ch;

//****found****

str[1]=0:

}

}

voidmain

{

charstr[81],ch;

system("CLS");

printf("\nPleaseenterastring:");

gets(str);

printf("\nPleaseenterthecharacterto

search:");

ch=getchar;

proc(str,ch);

printf("\nTheresultis%s\n",str);

}六、操作題(2題)43.使用VC++打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun()的功能是求出s所指字符串中最后一次出現(xiàn)的t所指字符串的地址,并將此地址通過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;若未找到,則函數(shù)值為NULL。例如,當字符串中的內(nèi)容為“abcdabfabcdx”,t中內(nèi)容為“ab”時,輸出結(jié)果應(yīng)是“abcdx”。當字符串中的內(nèi)容為“abcdabfabcdx”,t中內(nèi)容為“abd”時,則程序輸出未找到信息“Notfound!”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>char*fun(char*s,char*t){ char*p,*r,*a;/*********found*********/ a=Null; while(*s) { p=s;r=t; while(*r)/*********found*********/ if(r==p) {r++;p++;} elsebreak; if(*r=='\0')a=s; s++;} returna;}voidmain(){ chars[l00],t[100],*p; system(“CLS”); printf(“\nPleaseenterstrings:”); scanf(“%s”,s); printf(“\nPleaseentersubstringt:”); scanf(“%s”,t); p=fun(s,t); if(p) printf(“\nTheresultis:%s\n”,p); else printf(“\nNotfound!\n”);}

44.請補充main()函數(shù),該函數(shù)的功能是:從鍵盤輸入一個長整數(shù),如果這個數(shù)是負數(shù),則取它的絕對值,并顯示出來。例如,輸入:-123456,結(jié)果為:123456。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在橫線上填入所編寫的若干表達式或語句。試題程序:

參考答案

1.800800解析:一個16x16點陣的字形碼需要16x16/8=32字節(jié)的存儲空間,所以300個漢字信息需要9600個字節(jié)。

2.aaaaAAAAAaaaaAAAAA解析:函數(shù)strcat(sp,'AAAAA')的作用是將字符中“AAAAA”連接到字符串sp的末尾,并自動覆蓋字符數(shù)組sp末尾的\'\\0\'。

3.00解析:“ch=getchat()”的功能是從終端讀入一個字符賦給變量ch,由于getchar()只能接收一個字符,所以輸入的字符1被賦給ch,即“'1'!='0'”,循環(huán)體不執(zhí)行,直接退出while循環(huán),所以循環(huán)體執(zhí)行的次數(shù)為0。

4.

5.自頂而下自頂而下

6.棧棧解析:考查考生對棧和隊列概念的掌握。按'先進后出'原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是棧;按'先進先出'原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是隊列。

7.11解析:邏輯運算中,非1即0,非0即1,!a=0,++a為邏輯1,所以0和1相或結(jié)果為1。

8.x<z‖y<zx<z‖y<z解析:本題考查邏輯運算符和邏輯表達式。x或y中至少有一個小于z,即x<z或y<z,是“或”的關(guān)系。

9.p+=2*(p++)p+=2,*(p++)解析:由題可知a[2]=3,因此只要使指針p指向a[3],然后再引用指針的值就可以了。

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

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

12.B解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是負責(zé)數(shù)據(jù)庫的建立、使用和維護的軟件。數(shù)據(jù)庫管理系統(tǒng)建立在操作系統(tǒng)之上,實施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應(yīng)用程序的執(zhí)行,最終都必須通過數(shù)據(jù)庫管理系統(tǒng)。另外,數(shù)據(jù)庫管理系統(tǒng)還承擔(dān)著數(shù)據(jù)庫的安全保護工作,按照數(shù)據(jù)庫管理員所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。

13.D

14.D解析:在if后面只能有一條語句,或一條復(fù)合語句,即用花括號將多條語句括起來。選項D)中沒有將兩條語句括起來,不能看成一條語句。

15.A

16.D

17.A第1次調(diào)用為m=f(f(f(1))),第2次調(diào)用為m=f(f(2)),第3次調(diào)用為m=f(4),即返回值為8。故本題答案為A選項。

18.A程序定義一個整型變量y和整型二維數(shù)組x,并對x賦初值。接著調(diào)用函數(shù)fun,在函數(shù)fun中,第1個for循環(huán)將數(shù)組a的第0列和第N-1列的所有元素累加到y(tǒng)中;第2個for循環(huán)將數(shù)組a的第0行的2、3和第N-1行的3、2累加到y(tǒng)中,再將y返回。所以fun函數(shù)的功能是將數(shù)組a的行列下標為0、N-1的所有元素累加起來,即將1,2,3,4,2,3,3,2,4,3,2,1累加,輸出30。本題答案為A選項。

19.BC語言中,數(shù)組名本身就是一個指針,指向數(shù)組內(nèi)存的起始位置,選項A正確;已經(jīng)定義的數(shù)組被分配了內(nèi)存空間,所以可以讀入數(shù)據(jù)到數(shù)組中,未賦初值的指針沒有分配內(nèi)存空間,不可以讀入數(shù)據(jù),選項B錯誤;可以將指針指向一個同類型的數(shù)組,選項C正確;指針指向一個數(shù)組后,可以通過移動指針,指向該數(shù)組中的任意一個元素,選項D正確。故本題答案為B選項。

20.B鏈表是一種特殊的線性表,鏈表的存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)不同,它的存儲區(qū)域可以是任意的存儲單元,對存儲系統(tǒng)中零碎的存儲部分具有更好的應(yīng)用,在給其分配存儲單元時,不必事先估計整個存儲單元的空間大小;由于鏈表的元素是通過指針域的指針相連的,用鏈表存儲數(shù)據(jù)時,對其進行插入和刪除操作時,不需要移動其他元素,只需改變其直接前驅(qū)指針域,使其指向該結(jié)點,并將該結(jié)點的指針域修改為指向其直接后繼結(jié)點即可。當然,不管是鏈表還是順序存儲,所需空間與線性表長度都成正比。在鏈式存儲的鏈表結(jié)構(gòu)中,由于后一結(jié)點數(shù)據(jù)被存儲在哪里,只有通過前一結(jié)點的指針域才知道,因此,訪問時只能是逐個訪問,而不能實現(xiàn)隨機訪問。

21.voidproc(char*str。chart[3])

\n{

\ninti,j=0;

\nfor(i=0;str[i]!=\\O;i++)//從數(shù)組的第一個元素開始,到其最后一個

\n{if(i%2==0str[i]%21=o)//下標為偶數(shù)、同時ASCIl碼值為奇數(shù)的字符

\nt[j++]=str[i];}//如果成立,則把它放到t數(shù)組中

\nt[i]=\\o;//字符串結(jié)束標志為\\0

\n}

\n【解析】題目中要求將字符串str中下標為偶數(shù),同時ASCIl碼值為奇數(shù)的字符放在數(shù)組t中。首先,需要檢查字符串str中下標為偶數(shù)的字符其ASCIl碼值是否為奇數(shù),將符合要求的字符放在數(shù)組t中。最后,為新的字符串數(shù)組添加結(jié)束符。

\n

22.

【解析】在while循環(huán)中,利用if判斷表達式中每一個字符是否為“#”,如果不是,將其復(fù)制到字符串,否則跳過,這就實現(xiàn)了函數(shù)的功能。

(1)首先利用工作指針指向字符串,當指針不指向串尾時,就對字符串進行循環(huán)判斷。

(2)在循環(huán)中利用if判斷表達式字符是否為“#”,如果不是,將其復(fù)制到字符串,否則跳過。

(3)所有字符處理完后,記得在新串s的末尾加上結(jié)束符“ˊ\0ˊ”。

23.\n\tdoubleproc(intn)

\n{

\ninti;

\ndoubles=0.0;//s為其和的變量

\nfor(i=1;i<=n;i+十)

\nS=s+(1.0/(2*i-1)-1.O/(2*i));//計算s

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

\n2n)

\nreturns;//最后把所得到的和返回到主函數(shù)中

\n}

\n【解析】由題目中所給表達式可知,多項式的值為n項表達式的和??梢岳胣次循環(huán)求出n項表達式的值,求和放在變量s中。最后將多項式的值返回到主函數(shù)當中。\n

24.

【解析】要得到學(xué)生的最高分,需要將每一個學(xué)生的成績進行比較。學(xué)生的成績存儲在鏈表中,其結(jié)束標志為最后一個結(jié)點的next指針即NULL。比較每一個學(xué)生的成績,將最高分返回給主函數(shù)。

25.

【解析】題目中要求將字符串中的前導(dǎo)*號全部刪除,首先將指針p移動到第一個不是*的字符,將指針p之后的字符放入原來的字符串中,并為新的字符串添加結(jié)束符。

26.

【解析】本題考查的是for循環(huán)和指針變量。通過for循環(huán)實現(xiàn)對數(shù)組的遍歷,形參iilax和d都是指針型變量,所以引用它們指向的變量時要進行指針運算。先有*max=a[0],在遍歷中如果遇到比max大的元素,則將a[i]賦值給max,下標i賦值給*d。循環(huán)語句用來遍歷數(shù)組元素,然后通過條件語句比較數(shù)組元素找到最大值。

27.\n#include”stdio.h”

\nintfun(inta)

\n{intI;

\nif(a==2)return1;I=2;

\nwhile((a%I)!=0I<=sqrt((float)a))

\nI++;

\nif(a%I==0)

\n{printf(“%disnotaprime!”,a);

\nreturn0;}

\nprintf(“%disaprime!”,a);

\nreturn1;}

\nmain

\n{intx;

\nprintf(“\\npleaseenteranumber:”);

\nscanf(“%d”,&x);

\nprintf(“%d\\n”,fun(x));}

\n

28.

【解析】要將數(shù)字字符串轉(zhuǎn)換為一個整數(shù),首先判斷該字符串的正負號。然后將數(shù)字字符轉(zhuǎn)換為相應(yīng)的數(shù)字,將各個數(shù)字合并為整數(shù)。最后將得到的整數(shù)乘以字符串中的符號。將最后的結(jié)果返回到主函數(shù)中。

29.voidfun(inta[3][3],intb[3][3]){ inti,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉(zhuǎn)置,存放在矩陣b中*/}行列數(shù)相等的二維數(shù)組的轉(zhuǎn)置就是行列互換。即轉(zhuǎn)置后的第i行第j列正好對應(yīng)原矩陣的第j行第i列。本題使用兩層循環(huán)實現(xiàn)矩陣的轉(zhuǎn)置,并將計算結(jié)果存入矩陣b中,外層循環(huán)控制矩陣的行下標,內(nèi)層循環(huán)控制矩陣的列下標。

30.\nfloataverage(floatarray[],intn)

\n{intI;

\nfloataver,sum=array[0];

\nfor(I=1;Isum=sum+array[I];

\naver=sum/n;

\nreturn(aver);}

\nmain

\n{floatave,score[10];

\nintI;

\nfor(I=0;I<10;I++)

\nscanf('%f',&score[I]);

\nave=average(score,10);

\nprintf('%f\\n',ave);}

\n

31.(1)錯誤:*p正確:*p(2)錯誤:'o';正確:'o';(1)錯誤:*p\r\n正確:*p\r\n(2)錯誤:'o';\r\n正確:'o';

32.(1)a2=k/10;(2)returni;(1)a2=k/10;(2)returni;解析:本題中函數(shù)的功能是從整數(shù)1到55之間,選出能被3整除且有一位上的數(shù)是5的數(shù)。其中,涉及整數(shù)個位的截取,以及判斷某范圍內(nèi)能被3整除的判斷條件表達式、循環(huán)。

33.錯誤:缺{正確:加{錯誤:缺{正確:加{解析:本題我們可以拆分成兩個簡單的c語言試題:

(1)求出n個數(shù)的平均值。

(2)將大于平均值的數(shù)字個數(shù)計算出來。可利用循環(huán)和條件選擇語句,對x數(shù)組進行遍歷,若某個值大于平均成績,則將該元素累加計入c中。我們先來摘清楚一個簡單的求10個整數(shù)平均值的例子。

#include'stdio.h'

voidmain()

{

inti,a[10],s=0;

floataver=0.0;

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

{

scanf('%d',&a[i]);

s=s+i;

}

aver=s/10.0;

printf('這十整數(shù)中的平均值為:%f',aver);

}

其實,n個整數(shù)求和也就是10個整數(shù)的拓展,沒什么難的!

34.(1)doublefun(intn)(2)returnsum;(1)doublefun(intn)(2)returnsum;解析:本題中函數(shù)的功能是計算并輸出該數(shù)列前n項的平方根之和sum。解題思路首先根據(jù)題干求得每一項的值,然后再計算數(shù)列前n項的平方根之和。

35.(1)while(fabs(t)>=num)(2)t=s/n;(1)while(fabs(t)>=num)(2)t=s/n;解析:本題中函數(shù)的功能是利用公式計算π的近似值,直到最后一項的絕對值小于指定的數(shù)。本題解題過程參照一般公式題型的求解過程。

36.(1)f1oatk;(2)if(*a<*c)(1)f1oatk;(2)if(*a<*c)解析:本題中函數(shù)的功能是把主函數(shù)中輸入的3個數(shù),最大的放在a中,最小的放在c中。對三個數(shù)進行兩兩比較,實現(xiàn)函數(shù)功能。

37.(1)錯誤:t=1.0-1/i;正確:t-=1.0/i;(2)錯誤:;正確:returnt;(1)錯誤:t=1.0-1/i;正確:t-=1.0/i;\r\n(2)錯誤:;正確:returnt;解析:解答類似題目的思路是我們依然先從數(shù)學(xué)思路著手,即理解數(shù)學(xué)上的規(guī)律,再分析C語言的流程,本題中分母依等差數(shù)列遞增,最好用循環(huán)語句解決。我們先從第1句1/2的表達式來看起:當i從2(必須從2開始)開始循環(huán)的時候,雖然t=1.0-1/i;和t-=1.0/i;的第1個值都是相同的,但隨著循環(huán)的累加,我們就能發(fā)現(xiàn)問題所在了!

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

評論

0/150

提交評論