2021年四川省廣安市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2021年四川省廣安市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2021年四川省廣安市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2021年四川省廣安市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2021年四川省廣安市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年四川省廣安市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(12題)1.以下敘述中,不正確的是()。

A.使用staticfloata定義的外部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)

B.使用floatb定義的外部變量存放在內(nèi)存中的動態(tài)存儲區(qū)

C.使用staticfloatc定義的內(nèi)部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)

D.使用floatd定義的內(nèi)部變量存放在內(nèi)存中的動態(tài)存儲區(qū)

2.有以下程序:

程序運行后的輸出結果是()。

A.4321098765B.5678901234C.0987654321D.0987651234

3.下列敘述中錯誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結構必須與邏輯結構一致,

B.數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫設計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎上建立數(shù)據(jù)庫

D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持

4.棧和隊列的共同點是()。

A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同特點

5.以下關于鏈式存儲結構說法錯誤的是()

A.比順序存儲結構的存儲密度小

B.每個節(jié)點是由數(shù)據(jù)域和指針域組成

C.查找結點時鏈式存儲比順序存儲快

D.邏輯上不相鄰的節(jié)點物理上可能相鄰

6.已知8個數(shù)據(jù)元素為(34,76,45,18,26,54,92,65),按照依次插入結點的方法生成一棵二叉排序樹后,最后2層上的結點總數(shù)為______。

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

7.以下選項中的表達式調用庫函數(shù)依次求-4.5的絕對值、-4.0的平方根值、30°角的正弦值和2的3次方值。正確的調用是()

A.abs(-4.5)B.sqrt(-4.0)C.sin(3.1416/6.0)D.paw(2.0,3.0)

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

A.插入排序B.選擇排序C.快速排序D.歸并排序

9.判斷一個單向鏈表中是否存在環(huán)的最佳方法是()

A.兩重遍歷B.快慢指針C.路徑記錄D.哈希表輔助

10.一個長度為99的循環(huán)鏈表,指針A和指針B都指向了鏈表中的同一個節(jié)點,A以步長為1向前移動,B以步長為3向前移動,一共需要同時移動多少步A和B才能再次指向同一個節(jié)點()。

A.99B.100C.101D.49E.50F.51

11.設有定義:charpE]={’1’,‘2’,’3’},*q=p;,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

12.作為信息處理熱點技術之一的“多媒體技術”中的媒體,強調的是()。

A.存儲媒體B.表現(xiàn)媒體C.傳輸媒體D.感覺媒體

二、2.填空題(12題)13.設有定義:FILE*fw;,請將以下打開文件的語句補充完整,以便可以向文本文件readme.txt的最后續(xù)寫內(nèi)容。

fw=fopen("readme.txt",【】);

14.下列程序的輸出結果是【】。

#include<stdio.h>

main()

{charb[]="Helloyou";

b[5]=0;

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

}

15.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和【】3種。

16.下面程序是把從終端讀入的20個字符作為字符串放在字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;chars[21],*p;

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

s[i]=getchar();

s[i]=【】;

p=【】;

while(*p)putchar(【】);

}

17.函數(shù)rewind的作用是

18.以下程序的輸出結果是【】。

main()

{charc=′z′;

printf("%c",c-25);}

19.以下程序運行后的輸出結果是______。

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

20.設順序輸入數(shù)列為:24,30,8,5,1,27,24,26,10,21,9,28,7,13,15。假定每個結點的查找概率相同,若用順序存儲方式組織該數(shù)列,則查找一個數(shù)成功的平均比較次數(shù)為【】;若按二叉排序樹結構組織該數(shù)列,則查找一個數(shù)成功的平均比較次數(shù)為【】。

21.用下面語句調用庫函數(shù)malloc,使單精度型指針p指向具有40個字節(jié)的動態(tài)存儲空間,請?zhí)羁铡?/p>

p=(float*)【】;

22.近年來形成了軟件開發(fā)的多種模式,大致有3種類型:基于瀑布模型的結構化生命周期方法、基于動態(tài)定義需求的【】方法和基于結構的面向對象的軟件開發(fā)方法。

23.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

for(i=1;i<=5;i++)

{t=i+______;s=s+t;}

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

}

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

#include<stdio.h>

fun()

{staticinta=O;

a+=3;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

三、3.程序設計題(10題)25.N名學生的成績己在主函數(shù)中放入一個帶頭節(jié)點的鏈表結構中,h指向鏈表的頭節(jié)點。請編寫函數(shù)fun(),它的功能是:求出平均分,由函數(shù)值返回。

例如,若學生的成績是85,76,69,91,72,64,87,則平均分應當是78.625。

注童:部分源程序給出如下.

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

試題程序:

#include<stdlib.h>

#include<stdio.h>

#defineN8

structslist

{doubles;

structslist*next;

};

typedefstructslistSTREC;

doublefun(STREC*h)

{

}

STREC*creat(double*s)/*創(chuàng)建鏈表*/

{

STREC*h,*p,*q;

inti=0;

h=p=(STREC*)malloc(sizeof(STREC));

p->s=0;

while(i<N)

{q=(STREC*)malloc(sizeof(STREC));

q->s=sIi];i++;p->next=q;p=q;

}

p->next=0;

returnh;

}

outlist(STREC*h)

{

STREC*p;

p=h->next;

printf("head");

do

{printf("->%4.if",p->s);

p=p->next;/*輸出各成績*/

}

while(p!=0)

}

main()

{

doubles[N]={85,76,69,85,91,72,64,

87},ave;

STREC*h;

h=creat(s);

outlist(h);

ave=fun(h);

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

}

26.函數(shù)fun的功能是:將s所指字符串中除了下標為奇數(shù)、同時ASCII值也為奇數(shù)的字符之外,其余的所有字符都刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為:“ABCDEFGl2345”,其中字符A的ASCII碼值雖為奇數(shù),但所在元素的下標為偶數(shù),因此必需刪除;而字符1的ASCII碼值為奇數(shù),所在數(shù)組中的下標也為奇數(shù),因此不應當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應是:“135”。

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

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

27.請編一個函數(shù)floatfun(doubleh),函數(shù)的功能是對變量h中的值保留兩位小數(shù),并對第三位進行四舍五入(規(guī)定h中的值為正數(shù))。

例如:若h值為8.32433,則函數(shù)返回8.32:若h值為8.32533,則函數(shù)返回8.33。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

floatfun(floath)

{

}

main()

{

floata;

clrscr();

printf("Entera:");

scanf("%f",&a);

printf("Theoriginaldatais:");

printf("%f\n\n",a);

printf("Theresult:%f\n",fun(a));

}

28.請編寫函數(shù)fun(),它的功能是:將帶頭結點單向鏈表按data域由大到小排序(排序時不考慮頭結點),主函數(shù)用隨機函數(shù)為各節(jié)點data域賦值,頭結點data域賦值為0。

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

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

[試題源程序]

#include<stdio.h>

#include<coni0.h>

structas

{

intdata;

structaa*next;

};

voidfun(structaa*p)

{

}

main()

{

inti,n,m=100;

structaa*h=NULL,*s=NULL,

*p=NULL;

clrscr()

s=(structaa*)malloc(siZeof(structaa));

h=s;h->data=0;h->next=NULL;

printf("Pleaseinputn:");

scanf("%d",&n);

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

{

p=(structaa*)malloc(sizeof(structaa));

p->data=rand()%m;P->next=NULL;

printf("%d",P->data);

s->next=p;s=s->next;

}

fun(h);

printf("\n");

for(h=h->next;h!=NULL;h=h->nnext)

printf("%d",h->data);

}

29.N名學生的成績已在主函數(shù)中放入一個帶頭節(jié)點的鏈表結構中,h指向鏈表的頭節(jié)點。請編寫函數(shù)fun(),它的功能是:找出學生的最低分,由函數(shù)值返回。

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

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

試題程序:

#include<stdio.h>

#include<Stdlib.h>

#defineN8

StructSlist

{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個節(jié)點的鏈表,各分數(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.of",p->s);p=p->next;}

/*輸/出各分數(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.If\n",min);

}

30.編寫函數(shù)fun(),它的功能是:求出1~1000之內(nèi)能被7或11整除,但不能同時被7和11整除的所有整數(shù),并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。

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

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

[試題源程序]

#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");

}

else

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

}

31.請編寫一個函數(shù)fun,其功能是:將ss所指字符串中所有下標為奇數(shù)位置上的字母轉換為大寫(若該位置上不是字母,則不轉換)。

例如,若輸入“abc4EFg”,則應輸出“aBc4EFg”。

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

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

32.請編寫函數(shù)fun(),該函數(shù)的功能是:將s所指字符串中ASCII值為偶數(shù)的字符刪除,串中剩余字符形成一個新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為ABCDEFGl2345,其中字符B的ASCⅡ碼值為偶數(shù)、…、字符2的ASCⅡ碼值為偶數(shù)、…,都應當刪除,其他依次類推。最后t所指的數(shù)組中的內(nèi)容應是ACEGl35。

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

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

試題程序;

#include<stdio.h>

#include<string.h>

#include<conio.h>

voidfun(char*s,chart[])

{

}

main()

{

chars[100],t[100];

clrscr();

printf(,\nPleaseenterstringS:");

scanf("%s",s);

fun(s,t);

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

}

33.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun(),它的功能是:將字符串中的前導*號全部刪除,中間和后面的*號不刪除。

例如,若字符串中的內(nèi)容為****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容則應當是A*BC*DEF*G*******。

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

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

試題程序;

#include<stdio.h>

#include<conio.h>

voidfun(char*a)

{

}

main()

{

chars[81];

printf("Enterastring:\n");

gets(s);

fun(s);

printf("Thestringafterdeleted:\n");

puts(s);

}

34.請編寫函數(shù)fun(),它的功能是:求出ss所指字符串中指定字符的個數(shù),并返回此值。

例如,若輸入字符串123412132,輸入字符1,則輸出3。

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

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

試題程序:

#include<coio.h>

#include<stdio.h>

#defineM81

intfun(char*ss,charc)

{

}

main()

{chara[M],ch;

clrscr();

printf("\nPleaseenterastring:");

gets(a);

printf("\nPleaseenterachar:");

ch=getchar();

printf("\nThenumberofthecharis:%d\n",fun(a,ch));

}

四、單選題(0題)35.若x,y均定義為int型,z定義為double型,以下不合法的scanf函數(shù)調用語句是()。A.scanf(“%d%lx,%le”,&x,&y,&z);

B.scanf(“%2d*%d%lf”&x,&y,&z);

C.scanf(“%x%*d%o”,&x,&y);

D.scanf(“%x%o%6.2f”,&x,&y,&z)

五、單選題(0題)36.以下選項中合法的c語言常量是()。

A.,C—STR’B.2014.1C.”\l.0D.2EK

六、單選題(0題)37.給定下列代碼:已知n是一個整數(shù):foo()時間復雜度為O(1),上述代碼的時間復雜度是()A.O(logn)B.O(n)C.O(n*log(n))D.O(log(n)^2)

參考答案

1.B

2.B該程序首先給一維數(shù)組賦值,然后三次調用fun函數(shù),其中fun(a,0,3);功能是將一維數(shù)組中第1個元素和第4個元素互換,第2個元素和第3個元素互換;其中fun(a,4,9);功能是將一維數(shù)組中第5個元素和第10個元素互換,第6個和第9個元素互換,第7個元素和第8個元素互換;其中fun(a.O,9);功能是將將一維數(shù)組中第l個元素和第10個元素互換,第2個元素和第9個元素互換……依此類推。因此B選項正確。

3.A解析:本題考查數(shù)據(jù)庫系統(tǒng)的基本概念和知識。數(shù)據(jù)的邏輯結構,是數(shù)據(jù)間關系的描述,它只抽象地反映數(shù)據(jù)元素之間的邏輯關系,而不管其在計算機中的存儲方式。數(shù)據(jù)的存儲結構,又叫物理結構,是邏輯結構在計算機存儲器里的實現(xiàn)。這兩者之間沒有必然的聯(lián)系。因此,選項A的說法是錯誤的。

數(shù)據(jù)庫可以看成是長期存儲在計算機內(nèi)的、大量的、有結構的和可共享的數(shù)據(jù)集合。因此,數(shù)據(jù)庫具有為各種用戶所共享的特點。不同的用戶可以使用同一個數(shù)據(jù)庫,可以取出它們所需要的子集,而且容許子集任意重疊。數(shù)據(jù)庫的根本目標是要解決數(shù)據(jù)的共享問題。因此,選項B的說法是正確的。

數(shù)據(jù)庫設計是在數(shù)據(jù)庫管理系統(tǒng)的支持下,按照應用的要求,設計一個結構合理、使用方便、效率較高的數(shù)據(jù)庫及其應用系統(tǒng)。數(shù)據(jù)庫設計包含兩方面的內(nèi)容:一是結構設計,也就是設計數(shù)據(jù)庫框架或數(shù)據(jù)庫結構;二是行為設計,即設計基于數(shù)據(jù)庫的各類應用程序、事務等。因此,選項C的說法是錯誤的。

數(shù)據(jù)庫系統(tǒng)除了數(shù)據(jù)庫管理軟件之外,還必須有其他相關軟件的支持。這些軟件包括操作系統(tǒng)、編譯系統(tǒng)、應用軟件開發(fā)工具等。對于大型的多用戶數(shù)據(jù)庫系統(tǒng)和網(wǎng)絡數(shù)據(jù)庫系統(tǒng),還需要多用戶系統(tǒng)軟件和網(wǎng)絡系統(tǒng)軟件的支持。因此,選項D的說法是正確的。因此,本題的正確答案是選項A。

4.C解析:棧和隊列都是操作受限制的線性表,只允許在端點插入和刪除。不同點是:棧只允許在表的一端進行插入和刪除操作,而隊列允許在表的一端進行插入操作,而在另一端進行刪除操作。

5.C

6.B

7.C

8.D解析:快速排序的基本思想是,通過一趟排序將排序記錄分割成獨立的兩部

分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,再分別對這兩部分記錄繼

續(xù)進行排序,以達到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依

次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整

個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應有的位置),然后對剩

下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合

成一個新的有序表。

注意:各種排序方法實現(xiàn)過程及實現(xiàn)機制。

9.B

10.A

11.A根據(jù)題目中的定義可以知道sizeof(p),計算的是數(shù)組P中所有元素所占用的字節(jié)數(shù),而不是ch”型數(shù)據(jù)所占字節(jié)數(shù)。

12.D媒體分為感覺媒體、表示媒體、存儲媒體、傳輸媒體和表現(xiàn)媒體五種,“多媒體技術”中的媒體強調的是感覺媒體。

13.aa解析:本題考查的是文件的打開方式。要向文本文件的末尾續(xù)寫內(nèi)容,需要使用方式“a”(追加)打開文件。

14.HelloHello解析:語句b[5]=0;相當于語句b[5]='\\0';且'\\0'為字符串結束標志,輸出時遇到'\\0'就停止輸出。

15.關系模型關系模型解析:數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一層系統(tǒng)管理軟件,是一種系統(tǒng)軟件,是用戶與數(shù)據(jù)庫之間的一個標準接口。其總是基于某種數(shù)據(jù)模型,可以分為層次模型、網(wǎng)狀模型和關系模型。

16.\0's*p++\\0'\r\ns\r\n*p++解析:本題先通過for循環(huán)從鍵盤接收20個字符,然后在串尾賦一空值'\\0'作為串結束標志。再使指針p指向串的首地址。最后通過while循環(huán)對字符串進行掃描并輸出。

17.A

18.aa解析:'z'的ASCII碼值為122,經(jīng)過c-25運算后,得97,以字符形式輸出是a。

19.252137252137解析:本題中先定義了整型變量a、b和c,然后分別給賦值a為25,b為八進制的025,c為十六進制0x25。然后調用pruntf()函數(shù)將a、b和c分別用十進制輸出,且中間用空格隔開,八進制025轉換為十進制的值為21,十六進制的0x25轉換為十進制的值為37,故最后的輸出結果為252137。

20.857/15

21.malloc(40)malloc(40)解析:庫函數(shù)malloc()只有一個參數(shù),就是所需分配內(nèi)存的字節(jié)數(shù),然后返回一個void*指針。本題要求分配40個字節(jié),故直接調用malloc(40)就可以了。

22.原型化原型化

23.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結果來看,s保存的是最終結果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應是t*10。

24.3691236912解析:本題考查最基本的for循環(huán):for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數(shù)為4次,每次a+=3即每次a的值增3,但因為fun函數(shù)中變量a為static類型,所以每次調用完子函數(shù)之后,變量a所做的改變都要保存。

25.doublefun(STREC*h){doubleav=0.0;STREC*p-h->next;/*p直接指向“頭結點”的下一個結點即第—個成績*/while(p!=NULL){aY=ay+p->s;/*求總分數(shù)*/p=p->next;}returnay/N;/*返回平均值*/}doublefun(STREC*h)\r\n{\r\ndoubleav=0.0;\r\nSTREC*p-h->next;/*p直接指向“頭結點”的下一個結點,即第—個成績*/\r\nwhile(p!=NULL)\r\n{aY=ay+p->s;/*求總分數(shù)*/\r\np=p->next;\r\n}\r\nreturnay/N;/*返回平均值*/\r\n}解析:本題是關于鏈表問題,所以,一定要弄清表示出使指針變量p指向下一個“結點”的方法及表示結束的判斷,本題中,因為“頭結點”中沒有數(shù)值,所以程序中讓p直接指向“頭結點”的下一個結點,使用語句STREC*p=h->next,當然也可將p一開始就指向“頭結點”。

26.

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

27.floatfun(floath){longt;t=(h*1000+5)/10;/*單精度數(shù)h乘以1000后再加5相當十對h中的第三位小數(shù)進行四舍五入除以10后將其賦給一個長整型數(shù)時就把第三位小數(shù)后的數(shù)全部截去*/return(float)t/100;/*除以100保留2位小數(shù)*/floatfun(floath)\r\n{\r\nlongt;\r\nt=(h*1000+5)/10;/*單精度數(shù)h乘以1000后再加5,相當十對h中的第三位小數(shù)進行四舍五入\r\n除以10后將其賦給一個長整型數(shù)時就把第三位小數(shù)后的數(shù)全部截去*/\r\nreturn(float)t/100;/*除以100,保留2位小數(shù)*/解析:注意本題要求h的值真正發(fā)生了四舍五入,而不是為了輸出,即不能用printf(“%7.2f”,h)來直接得到結果。由于單精度數(shù)h乘以1000后再加5,此時相當于對h中的第三位小數(shù)進行四舍五入,再將其賦給一個長整型數(shù)時就把第三位小數(shù)后的數(shù)全部截去。注意在return中要將其中一個數(shù)轉成浮點型數(shù)。

28.voidfun(structas*p){inttemp;structas*1st;for(p=p->next;p->next!=NULL;p=p->next)for(1st=p->next;1st!=NULL;1st=1st->next)if(1st->data>p->data){temp=1st->data;1st->data=p->data;p->data=temp;}}voidfun(structas*p)\r\n{\r\ninttemp;\r\nstructas*1st;\r\nfor(p=p->next;p->next!=NULL;p=p->next)\r\nfor(1st=p->next;1st!=NULL;1st=1st->next)\r\nif(1st->data>p->data)\r\n{\r\ntemp=1st->data;\r\n1st->data=p->data;\r\np->data=temp;\r\n}\r\n}解析:本題考查單鏈表的操作。為了交換,需定義中間變量,本題可以采用選擇排序法進行排序?;痉椒ê蛯?shù)組進行排序相似,只不過是通過指針的移動實現(xiàn)對比較次數(shù)的控制和每個結點的訪問,注意循環(huán)結束的控制條件。

29.doublefun(STREC*h){doublemin=h->s;while(h!=NULL)/*通過循環(huán)找到最低分數(shù)*/{if(min>h->s)min=h->s;h=h->next;}returnmin;}doublefun(STREC\u3000*h)\r\n{\r\ndoublemin=h->s;\r\nwhile(h!=NULL)/*通過循環(huán)找到最低分數(shù)*/\r\n{if(min>h->s)\r\nmin=h->s;\r\nh=h->next;\r\n}\r\nreturnmin;\r\n}解析:在本題中,h為—個指向結構體的指針變量,若要引用它所指向的結構體中的某一成員時,要用指向運算符“->”。由于是鏈表,所以要使h逐一往后移動,使用的是h=h->next。

30.voidfun(int*aint*n){intij=0;for(i=1;i<=1000;i++)if((i%7=0||i%11==0)&&i%77!=0)a[j++]=i;*n=j;}voidfun(int*a,int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<=1000;i++)\r\nif((i%7=0||i%11==0)&&i%77!=0)\r\na[j++]=i;\r\n*n=j;\r\n}解析:本題的關鍵是if條件語句及參數(shù)傳遞。本題的設計思路是:(1)利用循環(huán)遍歷1到1000之內(nèi)的整數(shù);(2)利用if語句判斷,把查找到的整數(shù)保存到形參數(shù)組a中;(3)把數(shù)組a中數(shù)組元素的個數(shù)賦值到形參指針n所指的內(nèi)存。注意程序中if語句的判斷條件,本題是找出能被7或11整除但不能同時被7和11整除的所有整數(shù)。能同時被7和11整除的數(shù)一定能被77整除,且不能被7整除的數(shù)不一定就是能被7或11整除的數(shù)。所以,可得出程序中的if語句。

31.

解析:該程序功能是將字符串中所有下標為奇數(shù)位置上的字母轉換為大寫。其中,同一英文字母的大寫和小寫的ASCII碼值相差32,因此,要將小寫字母轉換為大寫字母,只要將其對應的ASCII碼值減去32即可。

32.voidfun(char*schart[]){inti=0;for(;*s!='\0';s++)/*找出ASCII值為奇數(shù)的字符依次存入數(shù)組t中*/if(*s%2==1)t[i++]=*s;t[i]='\0';/*在字符串的末尾口上串結束符*/}voidfun(char*s,chart[])\r\n{\r\ninti=0;\r\nfor(;*s!='\\0';s++)/*找出ASCII值為奇數(shù)的字符依次存入數(shù)組t中*/\r\nif(*s%2==1)\r\nt[i++]=*s;\r\nt[i]='\\0';/*在字符串的末尾口上串結束符*/\r\n}解析:要刪除ASCH值為偶數(shù)的字符,也就是要留下ASCH值為奇數(shù)的字符,由于最終是要求求出剩余字符(BPASCⅡ值為奇數(shù))形成的新串,所以本題程序的算法是從原字符串的頭到尾掃描并找出ASCⅡ值為奇數(shù)的字符依次存入數(shù)組沖。此外,還要注意數(shù)組t的下標變化和下標的初值(初值必須為0,即i=0),t[i++]州的作用是先使用t[i]然后再使自增1。任何字符串的末尾都要有串結束符。這種算法在很多題中都要用到,學習者可以舉一反三地找一些其他相關習題練習一下。

33.voidfun(char*a){char*p=a;while(*P==‘+’)p++;/*指針p指向字符串第一個字母*/for(;*p!=‘\0’;p++a++)*a=*p;/*從第—個字母開始其后的字符都放入指針a所指的字符串中*/*a=‘\0’;/*在字符串最后加上結束標記符*/}voidfun(char*a)\r\n{\r\nchar*p=a;\r\nwhile(*P==‘+’)p++;/*指針p指向字符串第一個字母*/\r\nfor(;*p!=‘\\0’;p++,a++)\r\n*a=*p;/*從第—個字母開始,其后的字符都放入指針a所指的字符串中*/\r\n*a=‘\\0’;/*在字符串最后加上結束標記符*/\r\n}解析:在前面的改錯題和編程題中,相關試題已經(jīng)出現(xiàn)好多次了,我們在此提供另一種解答方法。

#include<string.h>

voidfun(char*a)

{char*p=a;

while(*p==‘*’)p++;

strcpy(a,p);

}

34.intfun(char*sscharc){inti=0;for(;*ss!='\0';ss++)if(*ss==c)i++;/*求出ss所指字符串中指定字符的個數(shù)*/returni;}intfun(char*ss,charc)\r\n{\r\ninti=0;\r\nfor(;*ss!='\\0';ss++)\r\nif(*ss==c)\r\ni++;/*求出ss所指字符串中指定字符的個數(shù)*/\r\nreturni;\r\n}解析:從字符串ss中找出子字符串的方法是:從第1個字符開始,對字符串進行遍歷:若ss串的當前字符等于t串的第1個字符,兩字符串的指針自動加1,繼續(xù)比較下一個字符;若比較至字符串的結尾,則跳出循環(huán);若“串的字符和c串的字符不對應相同,則繼續(xù)對,s串的下一個字符進行處理。本程序是采用逐一比較的方式找出出現(xiàn)的次數(shù)。循環(huán)的作用是在串中從左到右逐一走動,if()的作用是進行判斷是否相同,若與c相同則表示又出現(xiàn)一次.

35.D

36.B所謂常量是指在程序運行的過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。選項A是字符串,但使用單引號,錯誤,選項c,D,為實型常量中指數(shù)形式,但指數(shù)形式e(E)之前必須是數(shù)字,之后必須為整數(shù),錯誤。故答案為B選項。

37.B2021年四川省廣安市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(12題)1.以下敘述中,不正確的是()。

A.使用staticfloata定義的外部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)

B.使用floatb定義的外部變量存放在內(nèi)存中的動態(tài)存儲區(qū)

C.使用staticfloatc定義的內(nèi)部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)

D.使用floatd定義的內(nèi)部變量存放在內(nèi)存中的動態(tài)存儲區(qū)

2.有以下程序:

程序運行后的輸出結果是()。

A.4321098765B.5678901234C.0987654321D.0987651234

3.下列敘述中錯誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結構必須與邏輯結構一致,

B.數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫設計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎上建立數(shù)據(jù)庫

D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持

4.棧和隊列的共同點是()。

A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同特點

5.以下關于鏈式存儲結構說法錯誤的是()

A.比順序存儲結構的存儲密度小

B.每個節(jié)點是由數(shù)據(jù)域和指針域組成

C.查找結點時鏈式存儲比順序存儲快

D.邏輯上不相鄰的節(jié)點物理上可能相鄰

6.已知8個數(shù)據(jù)元素為(34,76,45,18,26,54,92,65),按照依次插入結點的方法生成一棵二叉排序樹后,最后2層上的結點總數(shù)為______。

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

7.以下選項中的表達式調用庫函數(shù)依次求-4.5的絕對值、-4.0的平方根值、30°角的正弦值和2的3次方值。正確的調用是()

A.abs(-4.5)B.sqrt(-4.0)C.sin(3.1416/6.0)D.paw(2.0,3.0)

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

A.插入排序B.選擇排序C.快速排序D.歸并排序

9.判斷一個單向鏈表中是否存在環(huán)的最佳方法是()

A.兩重遍歷B.快慢指針C.路徑記錄D.哈希表輔助

10.一個長度為99的循環(huán)鏈表,指針A和指針B都指向了鏈表中的同一個節(jié)點,A以步長為1向前移動,B以步長為3向前移動,一共需要同時移動多少步A和B才能再次指向同一個節(jié)點()。

A.99B.100C.101D.49E.50F.51

11.設有定義:charpE]={’1’,‘2’,’3’},*q=p;,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

12.作為信息處理熱點技術之一的“多媒體技術”中的媒體,強調的是()。

A.存儲媒體B.表現(xiàn)媒體C.傳輸媒體D.感覺媒體

二、2.填空題(12題)13.設有定義:FILE*fw;,請將以下打開文件的語句補充完整,以便可以向文本文件readme.txt的最后續(xù)寫內(nèi)容。

fw=fopen("readme.txt",【】);

14.下列程序的輸出結果是【】。

#include<stdio.h>

main()

{charb[]="Helloyou";

b[5]=0;

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

}

15.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和【】3種。

16.下面程序是把從終端讀入的20個字符作為字符串放在字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;chars[21],*p;

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

s[i]=getchar();

s[i]=【】;

p=【】;

while(*p)putchar(【】);

}

17.函數(shù)rewind的作用是

18.以下程序的輸出結果是【】。

main()

{charc=′z′;

printf("%c",c-25);}

19.以下程序運行后的輸出結果是______。

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

20.設順序輸入數(shù)列為:24,30,8,5,1,27,24,26,10,21,9,28,7,13,15。假定每個結點的查找概率相同,若用順序存儲方式組織該數(shù)列,則查找一個數(shù)成功的平均比較次數(shù)為【】;若按二叉排序樹結構組織該數(shù)列,則查找一個數(shù)成功的平均比較次數(shù)為【】。

21.用下面語句調用庫函數(shù)malloc,使單精度型指針p指向具有40個字節(jié)的動態(tài)存儲空間,請?zhí)羁铡?/p>

p=(float*)【】;

22.近年來形成了軟件開發(fā)的多種模式,大致有3種類型:基于瀑布模型的結構化生命周期方法、基于動態(tài)定義需求的【】方法和基于結構的面向對象的軟件開發(fā)方法。

23.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

for(i=1;i<=5;i++)

{t=i+______;s=s+t;}

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

}

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

#include<stdio.h>

fun()

{staticinta=O;

a+=3;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

三、3.程序設計題(10題)25.N名學生的成績己在主函數(shù)中放入一個帶頭節(jié)點的鏈表結構中,h指向鏈表的頭節(jié)點。請編寫函數(shù)fun(),它的功能是:求出平均分,由函數(shù)值返回。

例如,若學生的成績是85,76,69,91,72,64,87,則平均分應當是78.625。

注童:部分源程序給出如下.

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

試題程序:

#include<stdlib.h>

#include<stdio.h>

#defineN8

structslist

{doubles;

structslist*next;

};

typedefstructslistSTREC;

doublefun(STREC*h)

{

}

STREC*creat(double*s)/*創(chuàng)建鏈表*/

{

STREC*h,*p,*q;

inti=0;

h=p=(STREC*)malloc(sizeof(STREC));

p->s=0;

while(i<N)

{q=(STREC*)malloc(sizeof(STREC));

q->s=sIi];i++;p->next=q;p=q;

}

p->next=0;

returnh;

}

outlist(STREC*h)

{

STREC*p;

p=h->next;

printf("head");

do

{printf("->%4.if",p->s);

p=p->next;/*輸出各成績*/

}

while(p!=0)

}

main()

{

doubles[N]={85,76,69,85,91,72,64,

87},ave;

STREC*h;

h=creat(s);

outlist(h);

ave=fun(h);

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

}

26.函數(shù)fun的功能是:將s所指字符串中除了下標為奇數(shù)、同時ASCII值也為奇數(shù)的字符之外,其余的所有字符都刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為:“ABCDEFGl2345”,其中字符A的ASCII碼值雖為奇數(shù),但所在元素的下標為偶數(shù),因此必需刪除;而字符1的ASCII碼值為奇數(shù),所在數(shù)組中的下標也為奇數(shù),因此不應當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應是:“135”。

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

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

27.請編一個函數(shù)floatfun(doubleh),函數(shù)的功能是對變量h中的值保留兩位小數(shù),并對第三位進行四舍五入(規(guī)定h中的值為正數(shù))。

例如:若h值為8.32433,則函數(shù)返回8.32:若h值為8.32533,則函數(shù)返回8.33。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

floatfun(floath)

{

}

main()

{

floata;

clrscr();

printf("Entera:");

scanf("%f",&a);

printf("Theoriginaldatais:");

printf("%f\n\n",a);

printf("Theresult:%f\n",fun(a));

}

28.請編寫函數(shù)fun(),它的功能是:將帶頭結點單向鏈表按data域由大到小排序(排序時不考慮頭結點),主函數(shù)用隨機函數(shù)為各節(jié)點data域賦值,頭結點data域賦值為0。

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

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

[試題源程序]

#include<stdio.h>

#include<coni0.h>

structas

{

intdata;

structaa*next;

};

voidfun(structaa*p)

{

}

main()

{

inti,n,m=100;

structaa*h=NULL,*s=NULL,

*p=NULL;

clrscr()

s=(structaa*)malloc(siZeof(structaa));

h=s;h->data=0;h->next=NULL;

printf("Pleaseinputn:");

scanf("%d",&n);

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

{

p=(structaa*)malloc(sizeof(structaa));

p->data=rand()%m;P->next=NULL;

printf("%d",P->data);

s->next=p;s=s->next;

}

fun(h);

printf("\n");

for(h=h->next;h!=NULL;h=h->nnext)

printf("%d",h->data);

}

29.N名學生的成績已在主函數(shù)中放入一個帶頭節(jié)點的鏈表結構中,h指向鏈表的頭節(jié)點。請編寫函數(shù)fun(),它的功能是:找出學生的最低分,由函數(shù)值返回。

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

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

試題程序:

#include<stdio.h>

#include<Stdlib.h>

#defineN8

StructSlist

{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個節(jié)點的鏈表,各分數(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.of",p->s);p=p->next;}

/*輸/出各分數(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.If\n",min);

}

30.編寫函數(shù)fun(),它的功能是:求出1~1000之內(nèi)能被7或11整除,但不能同時被7和11整除的所有整數(shù),并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。

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

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

[試題源程序]

#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");

}

else

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

}

31.請編寫一個函數(shù)fun,其功能是:將ss所指字符串中所有下標為奇數(shù)位置上的字母轉換為大寫(若該位置上不是字母,則不轉換)。

例如,若輸入“abc4EFg”,則應輸出“aBc4EFg”。

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

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

32.請編寫函數(shù)fun(),該函數(shù)的功能是:將s所指字符串中ASCII值為偶數(shù)的字符刪除,串中剩余字符形成一個新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為ABCDEFGl2345,其中字符B的ASCⅡ碼值為偶數(shù)、…、字符2的ASCⅡ碼值為偶數(shù)、…,都應當刪除,其他依次類推。最后t所指的數(shù)組中的內(nèi)容應是ACEGl35。

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

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

試題程序;

#include<stdio.h>

#include<string.h>

#include<conio.h>

voidfun(char*s,chart[])

{

}

main()

{

chars[100],t[100];

clrscr();

printf(,\nPleaseenterstringS:");

scanf("%s",s);

fun(s,t);

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

}

33.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun(),它的功能是:將字符串中的前導*號全部刪除,中間和后面的*號不刪除。

例如,若字符串中的內(nèi)容為****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容則應當是A*BC*DEF*G*******。

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

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

試題程序;

#include<stdio.h>

#include<conio.h>

voidfun(char*a)

{

}

main()

{

chars[81];

printf("Enterastring:\n");

gets(s);

fun(s);

printf("Thestringafterdeleted:\n");

puts(s);

}

34.請編寫函數(shù)fun(),它的功能是:求出ss所指字符串中指定字符的個數(shù),并返回此值。

例如,若輸入字符串123412132,輸入字符1,則輸出3。

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

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

試題程序:

#include<coio.h>

#include<stdio.h>

#defineM81

intfun(char*ss,charc)

{

}

main()

{chara[M],ch;

clrscr();

printf("\nPleaseenterastring:");

gets(a);

printf("\nPleaseenterachar:");

ch=getchar();

printf("\nThenumberofthecharis:%d\n",fun(a,ch));

}

四、單選題(0題)35.若x,y均定義為int型,z定義為double型,以下不合法的scanf函數(shù)調用語句是()。A.scanf(“%d%lx,%le”,&x,&y,&z);

B.scanf(“%2d*%d%lf”&x,&y,&z);

C.scanf(“%x%*d%o”,&x,&y);

D.scanf(“%x%o%6.2f”,&x,&y,&z)

五、單選題(0題)36.以下選項中合法的c語言常量是()。

A.,C—STR’B.2014.1C.”\l.0D.2EK

六、單選題(0題)37.給定下列代碼:已知n是一個整數(shù):foo()時間復雜度為O(1),上述代碼的時間復雜度是()A.O(logn)B.O(n)C.O(n*log(n))D.O(log(n)^2)

參考答案

1.B

2.B該程序首先給一維數(shù)組賦值,然后三次調用fun函數(shù),其中fun(a,0,3);功能是將一維數(shù)組中第1個元素和第4個元素互換,第2個元素和第3個元素互換;其中fun(a,4,9);功能是將一維數(shù)組中第5個元素和第10個元素互換,第6個和第9個元素互換,第7個元素和第8個元素互換;其中fun(a.O,9);功能是將將一維數(shù)組中第l個元素和第10個元素互換,第2個元素和第9個元素互換……依此類推。因此B選項正確。

3.A解析:本題考查數(shù)據(jù)庫系統(tǒng)的基本概念和知識。數(shù)據(jù)的邏輯結構,是數(shù)據(jù)間關系的描述,它只抽象地反映數(shù)據(jù)元素之間的邏輯關系,而不管其在計算機中的存儲方式。數(shù)據(jù)的存儲結構,又叫物理結構,是邏輯結構在計算機存儲器里的實現(xiàn)。這兩者之間沒有必然的聯(lián)系。因此,選項A的說法是錯誤的。

數(shù)據(jù)庫可以看成是長期存儲在計算機內(nèi)的、大量的、有結構的和可共享的數(shù)據(jù)集合。因此,數(shù)據(jù)庫具有為各種用戶所共享的特點。不同的用戶可以使用同一個數(shù)據(jù)庫,可以取出它們所需要的子集,而且容許子集任意重疊。數(shù)據(jù)庫的根本目標是要解決數(shù)據(jù)的共享問題。因此,選項B的說法是正確的。

數(shù)據(jù)庫設計是在數(shù)據(jù)庫管理系統(tǒng)的支持下,按照應用的要求,設計一個結構合理、使用方便、效率較高的數(shù)據(jù)庫及其應用系統(tǒng)。數(shù)據(jù)庫設計包含兩方面的內(nèi)容:一是結構設計,也就是設計數(shù)據(jù)庫框架或數(shù)據(jù)庫結構;二是行為設計,即設計基于數(shù)據(jù)庫的各類應用程序、事務等。因此,選項C的說法是錯誤的。

數(shù)據(jù)庫系統(tǒng)除了數(shù)據(jù)庫管理軟件之外,還必須有其他相關軟件的支持。這些軟件包括操作系統(tǒng)、編譯系統(tǒng)、應用軟件開發(fā)工具等。對于大型的多用戶數(shù)據(jù)庫系統(tǒng)和網(wǎng)絡數(shù)據(jù)庫系統(tǒng),還需要多用戶系統(tǒng)軟件和網(wǎng)絡系統(tǒng)軟件的支持。因此,選項D的說法是正確的。因此,本題的正確答案是選項A。

4.C解析:棧和隊列都是操作受限制的線性表,只允許在端點插入和刪除。不同點是:棧只允許在表的一端進行插入和刪除操作,而隊列允許在表的一端進行插入操作,而在另一端進行刪除操作。

5.C

6.B

7.C

8.D解析:快速排序的基本思想是,通過一趟排序將排序記錄分割成獨立的兩部

分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,再分別對這兩部分記錄繼

續(xù)進行排序,以達到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依

次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整

個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應有的位置),然后對剩

下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合

成一個新的有序表。

注意:各種排序方法實現(xiàn)過程及實現(xiàn)機制。

9.B

10.A

11.A根據(jù)題目中的定義可以知道sizeof(p),計算的是數(shù)組P中所有元素所占用的字節(jié)數(shù),而不是ch”型數(shù)據(jù)所占字節(jié)數(shù)。

12.D媒體分為感覺媒體、表示媒體、存儲媒體、傳輸媒體和表現(xiàn)媒體五種,“多媒體技術”中的媒體強調的是感覺媒體。

13.aa解析:本題考查的是文件的打開方式。要向文本文件的末尾續(xù)寫內(nèi)容,需要使用方式“a”(追加)打開文件。

14.HelloHello解析:語句b[5]=0;相當于語句b[5]='\\0';且'\\0'為字符串結束標志,輸出時遇到'\\0'就停止輸出。

15.關系模型關系模型解析:數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一層系統(tǒng)管理軟件,是一種系統(tǒng)軟件,是用戶與數(shù)據(jù)庫之間的一個標準接口。其總是基于某種數(shù)據(jù)模型,可以分為層次模型、網(wǎng)狀模型和關系模型。

16.\0's*p++\\0'\r\ns\r\n*p++解析:本題先通過for循環(huán)從鍵盤接收20個字符,然后在串尾賦一空值'\\0'作為串結束標志。再使指針p指向串的首地址。最后通過while循環(huán)對字符串進行掃描并輸出。

17.A

18.aa解析:'z'的ASCII碼值為122,經(jīng)過c-25運算后,得97,以字符形式輸出是a。

19.252137252137解析:本題中先定義了整型變量a、b和c,然后分別給賦值a為25,b為八進制的025,c為十六進制0x25。然后調用pruntf()函數(shù)將a、b和c分別用十進制輸出,且中間用空格隔開,八進制025轉換為十進制的值為21,十六進制的0x25轉換為十進制的值為37,故最后的輸出結果為252137。

20.857/15

21.malloc(40)malloc(40)解析:庫函數(shù)malloc()只有一個參數(shù),就是所需分配內(nèi)存的字節(jié)數(shù),然后返回一個void*指針。本題要求分配40個字節(jié),故直接調用malloc(40)就可以了。

22.原型化原型化

23.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結果來看,s保存的是最終結果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應是t*10。

24.3691236912解析:本題考查最基本的for循環(huán):for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數(shù)為4次,每次a+=3即每次a的值增3,但因為fun函數(shù)中變量a為static類型,所以每次調用完子函數(shù)之后,變量a所做的改變都要保存。

25.doublefun(STREC*h){doubleav=0.0;STREC*p-h->next;/*p直接指向“頭結點”的下一個結點即第—個成績*/while(p!=NULL){aY=ay+p->s;/*求總分數(shù)*/p=p->next;}returnay/N;/*返回平均值*/}doublefun(STREC*h)\r\n{\r\ndoubleav=0.0;\r\nSTREC*p-h->next;/*p直接指向“頭結點”的下一個結點,即第—個成績*/\r\nwhile(p!=NULL)\r\n{aY=ay+p->s;/*求總分數(shù)*/\r\np=p->next;\r\n}\r\nreturnay/N;/*返回平均值*/\r\n}解析:本題是關于鏈表問題,所以,一定要弄清表示出使指針變量p指向下一個“結點”的方法及表示結束的判斷,本題中,因為“頭結點”中沒有數(shù)值,所以程序中讓p直接指向“頭結點”的下一個結點,使用語句STREC*p=h->next,當然也可將p一開始就指向“頭結點”。

26.

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

27.floatfun(floath){longt;t=(h*1000+5)/10;/*單精度數(shù)h乘以1000后再加5相當十對h中的第三位小數(shù)進行四舍五入除以10后將其賦給一個長整型數(shù)時就把第三位小數(shù)后的數(shù)全部截去*/return(float)t/100;/*除以100保留2位小數(shù)*/floatfun(floath)\r\n{\r\nlongt;\r\nt=(h*1000+5)/10;/*單精度數(shù)h乘以1000后再加5,相當十對h中的第三位小數(shù)進行四舍五入\r\n除以10后將其賦給一個長整型數(shù)時就把第三位小數(shù)后的數(shù)全部截去*/\r\nreturn(float)t/100;/*除以100,保留2位小數(shù)*/解析:注意本題要求h的值真正發(fā)生了四舍五入,而不是為了輸出,即不能用printf(“%7.2f”,h)來直接得到結果。由于單精度數(shù)h乘以1000后再加5,此時相當于對h中的第三位小數(shù)進行四舍五入,再將其賦給一個長整型數(shù)時就把第三位小數(shù)后的數(shù)全部截去。注意在return中要將其中一個數(shù)轉成浮點型數(shù)。

28.voidfun(structas*p){inttemp;structas*1st;for(p=p->next;p->next!=NULL;p=p->next)for(1st=p->next;1st!=NULL;1st=1st->next)if(1st->data>p->data){temp=1st->data;1st->data=p->data;p->data=temp;}}voidfun(structas*p)\r\n{\r\ninttemp;\r\nstructas*1st;\r\nfor(p=p->next;p->next!

溫馨提示

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

評論

0/150

提交評論