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

下載本文檔

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

文檔簡介

2022-2023學(xué)年山西省大同市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

2.以下敘述中錯(cuò)誤的是()。

A.向量屬于線性結(jié)構(gòu)B.二叉鏈表是二叉樹的存儲(chǔ)結(jié)構(gòu)C.棧和隊(duì)列是線性表D.循環(huán)鏈表是循環(huán)隊(duì)列的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

3.指針可以用來表示數(shù)組元素,若已知語句:inta[3][7];則下列表示中正確的是()。

A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)

4.對(duì)于順序存儲(chǔ)的線性表,訪問結(jié)點(diǎn)和增加、刪除結(jié)點(diǎn)的時(shí)間復(fù)雜度為()。

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

5.

6.對(duì)于關(guān)鍵字值序列(12,13,11,18,60,15,7,18,25,100)

A.100B.12C.60D.15

7.相對(duì)于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

8.若用一個(gè)大小為6的數(shù)值來實(shí)現(xiàn)循環(huán)隊(duì)列,且當(dāng)前rear和front的值分別為0和3,當(dāng)從隊(duì)列中刪除一個(gè)元素,再加入兩個(gè)元素后,rear和front的值分別為()。

A.1和5B.2和4C.4和2D.5和1

9.有如下形式的函數(shù):intfun(inta[4][5],int*p[10],intn){…}調(diào)用函數(shù)之前需要對(duì)函數(shù)進(jìn)行說明,即所謂的函數(shù)向前引用說明,以下對(duì)fun函數(shù)說明正確的是()。A.intfun(intb[][5],int*r[],intm);

B.intfun(inta[4][],int*p[10],intn);

C.intfun(inta[][],int*p[],intn);

D.intfun(inta[],int*p[],intn);

10.有以下程序:#include<stdio.h>main(){inta=2,b;b=a<<2;printf("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是()。A.2B.4C.6D.8

11.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20][{"One*World","One*Dream!"},*p=str[1];prinft("%d,",strlen(p));printf("%s\n",p);}程序運(yùn)行后的輸出結(jié)果是()。A.9,0ne*WorldB.9,0ne*Dream!C.10,One*Dream!D.10,Ome*World

12.

二、2.填空題(12題)13.軟件是程序、數(shù)據(jù)和【】的集合。

14.下面程序的輸出是【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

15.若要使指針p指向一個(gè)double類型的動(dòng)態(tài)存儲(chǔ)單元,請(qǐng)?zhí)羁铡?/p>

p=【】malloc(sizeof(double));

16.已知存儲(chǔ)結(jié)構(gòu)如下所示,請(qǐng)?zhí)羁铡?/p>

datanext

structlink{chardata;

【】;

}node;

17.算法的復(fù)雜度主要包括空間復(fù)雜度和______復(fù)雜度。

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

19.以下程序運(yùn)行后的輸出結(jié)果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}

20.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

21.以下程序的輸出結(jié)果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

22.下面程序的運(yùn)行結(jié)果是【】。

main()

{unsigneda=0112,x;

x=a>>3;

printf("x=%o",x);

}

23.軟件工程的出現(xiàn)是由于【】。

24.在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè)______。

三、3.程序設(shè)計(jì)題(10題)25.請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p~n-1(p<n-1)的數(shù)組元素平移到數(shù)組的前面。

例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值為6。移動(dòng)后,一維數(shù)組的內(nèi)容應(yīng)為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。

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

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

[試題源程序]

#inciude<stdio.h>

#defineN80

voidfun(int*w,intp,intn)

{

}

main()

{

inta[N]=(i,2,3,4,5,6,7,8,9,10,11,12,13,14,15);

inti,P,n=15;

printf("Theoriginaldata:\n");

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

printf("%3d",a[i]);

printf("\n\nEnterp:");

scanf("%d",&p);

fun(a,P,n);

printf("\nThedataaftermoving:\n");

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

printf("%3d",a[i]);

printf("\n\n");

}

26.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生數(shù)據(jù)放在c所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,低于平均分的學(xué)生人數(shù)通過形參m傳回,平均分通過函數(shù)值返回。

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

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

試題程序:

#include<stdio.h>

#defineN12

typedefstruct

{charnum[10];

doubleS;

}STREC;

doublefun(STREC*a,STREC*b,STREC*C,int*n,int*m)

{

}

main()

{

STRECs[N]={{“GA05”,65},{“GA03”,86},

{“GA02”,76},{“GA04”,95},{“GA01”,93},

{“GA07”,78},{“GA08”,68},{“GA06”,88},

{“GA09”,60},{“GAll”,54},{“GAl2”,56},

{“GAl0”,98}};

STRECh[N],l[N],t;

FILE*out;

inti,j,m,n;

doubleave;

ave=fun(S,h,l,&n,&m);

printf("The%dstudentdatawhichishigherthan%7.3f:\n",n,ave);

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

printf("%s%4.lf\n",h[i].num,

h[i].s);

printf("\n");

printf("The%dStudentdatawhichiSlowerthan%7.3f:\n",m,ave);

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

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

printf("\n");

ut=fopen("out26.dat","w");

fprintf(out,"%d\n%7.3f\n",n,ave);

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

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

if(h[i].s<h[j].s)

{t=h[i];h[i]=h[i];h[j]=t;}

/*分?jǐn)?shù)從現(xiàn)到低排列*/

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

fprintf(out,“%4.1f\n",h[i].s);

fprintf(out,"%d\n%7.3f\n",m,ave);

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

for(j=i+1;i<m;j++)

if(l[i].s<l[j].s)

{t=l[i];l[i]=l[j];l[j]=t;}

/*分?jǐn)?shù)從高到低排列*/

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

fprintf(out,"%4.1f\n",l[i].s);

fclose(out);

}

27.編寫函數(shù)fun,它的功能是:求小于形參n同時(shí)能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。

例如若n為1000時(shí),程序輸出應(yīng)為:s=153.909064。

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

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

28.函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的百位和個(gè)位上,b中的十位和個(gè)位數(shù)依次放在變量c的千位和十位上。

例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=1425。

注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件in.dat中的數(shù)據(jù)不得修改。

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

29.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun,它的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。

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

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

30.請(qǐng)編寫一個(gè)函數(shù)unsignedfun(unsignedw),w是一個(gè)大于10的無符號(hào)整數(shù),若w是n(n≥2)位的整數(shù),則函數(shù)求出w的后n-1位的數(shù)作為函數(shù)值返回。

例如:w值為5923,則函數(shù)返回923;若w值為923,則函數(shù)返回23。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

unsignedfun(unsignedw)

{

}

main()

{

unsignedx;

clrscr();

printf("Enteraunsignedinteger

number:");

scanf("%u",&x);

printf("Theoriginaldatais:%u\n",x);

if(x<10)

printf("Dataerror!");

else

printf("Theresult:%u\n",fun(x));

}

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

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

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

[試題源程序]

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

}

32.編寫函數(shù)fun(),它的功能是:計(jì)算和輸出下列級(jí)數(shù)的和。

S=1/(1×2)+1/(2×3)+…+1/(n×(n+1))

例如,當(dāng)n=10時(shí),函數(shù)值為0.909091。

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

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

試題程序;

#include<conio.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

clrscr();

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

}

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

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

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

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

試題程序:

#include<stdio.h>

#include<string.h>

#defineN80

voidfun(char*w,intm)

{

}

main()

{

chara[N]="ABCDEFGHIJK";

intm;

printf("Theoriginastring:\n");

puts(a);

printf("\n\nEnterm:");

scanf("%d",&m);

fun(a,m);

printf("\nThestringaftermoving:\n");

puts(a);

printf("\n\n");

}

34.編寫函數(shù)fun,其功能是:根據(jù)以下公式求P的值,結(jié)果由函數(shù)值帶回。m與n為兩個(gè)正整數(shù)且要求m>n。

例如:m=12,n=8時(shí),運(yùn)行結(jié)果為495.000000。

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

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

四、單選題(0題)35.程序運(yùn)行后的輸出結(jié)果是()。#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}A.1.1.3B.2.2.3C.1.2.3D.3.3.3

五、單選題(0題)36.堆排序是一種()排序。

A.插入B.選擇C.交換D.歸并

六、單選題(0題)37.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄

B.數(shù)據(jù)行

C.數(shù)據(jù)塊

D.字符(字節(jié))序列

參考答案

1.C解析:程序流程圖是人們對(duì)解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號(hào)表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項(xiàng)中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

2.D循環(huán)鏈表是線性表的一種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),循環(huán)隊(duì)列是隊(duì)列的一種順序存儲(chǔ)結(jié)構(gòu)。因此D選項(xiàng)敘述錯(cuò)誤。本題答案為D選項(xiàng)。

3.D

4.C

5.D

6.C

7.D解析:文件系統(tǒng)所管理的數(shù)據(jù)文件基本上是分散的、相互獨(dú)立的,因此相對(duì)于數(shù)據(jù)庫系統(tǒng),以此為基礎(chǔ)的數(shù)據(jù)處理存在3個(gè)缺點(diǎn),數(shù)據(jù)冗余大、數(shù)據(jù)的不一致性、程序與數(shù)據(jù)的相互依賴(簡稱為數(shù)據(jù)依賴)。注意:文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)各自的特點(diǎn),人工管理階段及數(shù)據(jù)庫系統(tǒng)三代的特點(diǎn)。

8.B

9.A題干中函數(shù)的定義指出了函數(shù)名為fun,返回值的數(shù)據(jù)類型為int。函數(shù)包含3個(gè)參數(shù),第1個(gè)參數(shù)是整型的二維數(shù)組,第2個(gè)參數(shù)是整型數(shù)組,第3個(gè)參數(shù)是整型變量。在定義二維數(shù)組時(shí),必須指定第二維的長度,所以選項(xiàng)B、C、D錯(cuò)誤,選項(xiàng)A正確。本題答案為A選項(xiàng)。

10.D本題考查運(yùn)算符“<<”,b=a<<2,是左移2位,a=2,即b=2*2*2=8。

11.C本題輸出兩個(gè)結(jié)果,第一個(gè)是求字符串的長度。第二個(gè)是輸出的字符串,數(shù)組的下標(biāo)是從0開始的,所以當(dāng)str取1的時(shí)候,應(yīng)為“One*Dream!”。

12.B

13.文檔文檔解析:計(jì)算機(jī)軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。

14.DDBBCCDDBBCC解析:C語言對(duì)枚舉的定義規(guī)定:在枚舉中聲明的各個(gè)枚舉元素,如果沒有明確指出某個(gè)枚舉元素的值,它的上一個(gè)元素存在并有明確值的情況下,這個(gè)枚舉元素的值為其上一個(gè)元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=em2+1=1+1=2,進(jìn)而可知,在printf()打印函數(shù)中,要打印的數(shù)組元素是aa[3]、aa[1]、aa[2],因此最后的打印結(jié)果應(yīng)當(dāng)為“DDBBCC”。

15.(double*)(double*)解析:一般用malloc函數(shù)為變量分配存儲(chǔ)單元時(shí),要在前面用強(qiáng)制類型轉(zhuǎn)換符說明該存儲(chǔ)單元中數(shù)據(jù)的類型。本題要為指向雙精度浮點(diǎn)型數(shù)據(jù)的指針變量p分配存儲(chǔ)單元,因此用(double*)說明。

16.strucklink*nextstrucklink*next解析:結(jié)構(gòu)體變量構(gòu)成鏈表要求結(jié)構(gòu)體中必須有一個(gè)指向該結(jié)構(gòu)體變量自身的指針用來指明鏈表的下一個(gè)結(jié)點(diǎn)。注意:結(jié)構(gòu)體變量的定義及其成員變量的引用。

17.時(shí)間時(shí)間解析:算法的復(fù)雜度主要指時(shí)間復(fù)雜度和空間復(fù)雜度。

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

19.6262解析:本題考查的是宏定義。帶參數(shù)的宏定義是按#indefine命令行中指定的字符串從左到右進(jìn)行轉(zhuǎn)換。本題中替換的式子為:6+8*6+8,代入i,j的值得到62。

20.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

21.JD

22.x=11x=11解析:在對(duì)無符號(hào)數(shù)的右移是高位補(bǔ)0。

23.軟件危機(jī)的出現(xiàn)軟件危機(jī)的出現(xiàn)

24.關(guān)系關(guān)系解析:關(guān)系模型用;維表表示,則每個(gè);維表代表一種關(guān)系。

25.voidfun(int*wintpintn){intiJt;for(i=p;i<=n-i;i++){t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;}}voidfun(int*w,intp,intn)\r\n{\r\ninti,J,t;\r\nfor(i=p;i<=n-i;i++)\r\n{\r\nt=w[n-1];\r\nfor(j=n-2;j>=0;j--)\r\nw[j+1]=w[j];\r\nw[0]=t;\r\n}\r\n}

26.doublefun(STREC*aSTREC*bSTREC*Cint*nint*m){inti;doubleav=0.0;*n=0;*m=0;for(i=0;i<N;i++)av=av+a[i].S;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中并統(tǒng)計(jì)人數(shù)*/*n=*n+l;}else{c[*m]=a[i];/*將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中并統(tǒng)計(jì)人數(shù)*/*m=*m+1;}returnav;/*返回平均分*/}doublefun(STREC\u3000*a,STREC*b,STREC*C,int*n,int*m)\r\n{\r\ninti;\r\ndoubleav=0.0;\r\n*n=0;\r\n*m=0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].S;\r\nav=av/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(av<=a[i].s)\r\n{\r\nb[*n]=a[i];/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中,并統(tǒng)計(jì)人數(shù)*/\r\n*n=*n+l;\r\n}\r\nelse\r\n{\r\nc[*m]=a[i];/*將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中,并統(tǒng)計(jì)人數(shù)*/\r\n*m=*m+1;\r\n}\r\nreturnav;/*返回平均分*/\r\n}解析:本題中第1個(gè)循環(huán)的作用求出所有分?jǐn)?shù)的總和,只有進(jìn)行了av=av/N后才得到平均值(我們在前面的程序中碰到過類似問題)。第2個(gè)循環(huán)的作用是將高于等于平均分的學(xué)生存/kb所指存儲(chǔ)單元中,將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中。同一結(jié)構(gòu)體變量之間可以互相賦值。

本程序中直接用*n,*m來分別表示b,c的下標(biāo),注意開始時(shí)要給*n,*m賦0,且使用時(shí)不能少*號(hào)。因?yàn)閱为?dú)的n,m是一個(gè)指針變量,而我們要用的是它所指向的那個(gè)存儲(chǔ)單元中的值。

27.

解析:該程序功能是求解同時(shí)能被3與7整除的所有自然數(shù)之和的平方根。解題過程,首先利用if條件表達(dá)式“if(i%3==0&&i%7==0)”求能同時(shí)被3與7整除的數(shù),然后在此基礎(chǔ)上利用C語言中的sqrt語句求平方根。

28.*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);解析:該程序功能是將正整數(shù)a、b合并形成一個(gè)新整數(shù)。本題類型首先要考慮整數(shù)的位數(shù)分離,然后要進(jìn)行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開,改變排列順序后,再組合成新的數(shù)字。

29.

解析:該程序功能是把高于或等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)返回值返回。解題過程首先求得平均分,然后將所有成績與平均分進(jìn)行比較,如果大于或等于平均分,存入指定數(shù)組。

30.unsignedfun(unsignedw){if(w>=10000)returnw%10000;/*求出n位整數(shù)w的后n-1位的數(shù)*/if(w>=1000)returnw%1000;if(w>=100)returnw%100;if(w>=10)returnw%10;}unsignedfun(unsignedw)\r\n{\r\nif(w>=10000)\r\nreturnw%10000;/*求出n位整數(shù)w的后n-1位的數(shù)*/\r\nif(w>=1000)\r\nreturnw%1000;\r\nif(w>=100)\r\nreturnw%100;\r\nif(w>=10)\r\nreturnw%10;\r\n}解析:我們首先應(yīng)該明白無符號(hào)整數(shù)的定義形式,若它大于10000(5位)時(shí),將10000對(duì)它求余則結(jié)果為后4位;當(dāng)它大于1000(4位)時(shí),將1000對(duì)它求余則結(jié)果為后3位,花此類推。特別注意這里所有if()的順序不能顛倒。

31.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}解析:本題的關(guān)鍵是if條件語句及參數(shù)傳遞。本題的設(shè)計(jì)思路是:(1)利用循環(huán)遍歷1到1000之內(nèi)的整數(shù);(2)利用if語句判斷,把查找到的整數(shù)保存到形參數(shù)組a中;(3)把數(shù)組a中數(shù)組元素的個(gè)數(shù)賦值到形參指針n所指的內(nèi)存。注意程序中if語句的判斷條件,本題是找出能被7或11整除但不能同時(shí)被7和11整除的所有整數(shù)。能同時(shí)被7和11整除的數(shù)一定能被77整除,且不能被7整除的數(shù)不一定就是能被7或11整除的數(shù)。所以,可得出程序中的if語句。

32.doublefun(intn){inti;doubles=0.0;for(i=l;i<=n;i++)s=s+l.0/(i*(i+l));/*求級(jí)數(shù)的和*/returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0;\r\nfor(i=l;i<=n;i++)\r\ns=s+l.0/(i*(i+l));/*求級(jí)數(shù)的和*/\r\nreturns;\r\n}解析:解決數(shù)學(xué)序列的問題,我們的思路依然是“數(shù)學(xué)先行”,即先看清楚題目的數(shù)學(xué)邏輯,然后再根據(jù)C語言來“翻譯”出來。本題中,每一項(xiàng)的值都是n*(n+1)的倒數(shù)。當(dāng)輸入n時(shí),從1開始循環(huán),注意,此處for(i=1;i

33.voidfun(char*wintm){intij;chart;for(i=1;i<=m;i++)/*進(jìn)行m次的循環(huán)左移*/{t=w[0];for(j=1/w[j]!='\0';j++)/*從第2個(gè)字符開始以后的每個(gè)字符都依次前移一個(gè)字符*/w[j-1]=w[j];w[j-1]=t;/*將第1個(gè)字符放到最后一個(gè)字符中*/}}voidfun(char*w,intm)\r\n{\r\ninti,j;\r\nchart;\r\nfor(i=1;i<=m;i++)/*進(jìn)行m次的循環(huán)左移*/\r\n{t=w[0];\r\nfor(j=1/w[j]!='\\0';j++)/*從第2個(gè)字符開始以后的每個(gè)字符都依次前移一個(gè)字符*/\r\nw[j-1]=w[j];\r\nw[j-1]=t;/*將第1個(gè)字符放到最后一個(gè)字符中*/\r\n}\r\n}解析:我們在學(xué)習(xí)C語言的時(shí)候,應(yīng)該廣泛地應(yīng)用到循環(huán)的方法,本題應(yīng)采用“循環(huán)左移”的算法。即從第2個(gè)字符開始以后的每個(gè)字符都依次前移一個(gè)字符,而原來的第1個(gè)字符放在串中的最后一個(gè)字符。當(dāng)要平移m個(gè)字符時(shí),則要進(jìn)行m次的循環(huán)左移。內(nèi)嵌的循環(huán)的作用是完成從第2個(gè)字符開始以后的每個(gè)字符都依次前移一個(gè)字符,w[j-1]=t的作用是將第1個(gè)字符放到最后一個(gè)字符中。

34.

解析:(1)該程序功能是對(duì)組合數(shù)公式求值。它的解題思路,可以分解為以下幾步:求m!→求n!→求(m-n)!→求組合數(shù)的值。

(2)從已給部分源程序的main主函數(shù)開始入手,主函數(shù)中的“printf(“P=%f\n”,fun(12,8));”語句中“fun(12,8)”將12、8傳遞給fun中的m與n,fun函數(shù)實(shí)現(xiàn)對(duì)組合數(shù)的求佰。

35.D

36.B解析:堆排序是一種選擇排序。選擇排序有直接選擇排序和堆排序兩種。

37.D解析:C語言中的文件是流式文件。流式文件是一種無結(jié)構(gòu)文件,即整個(gè)文件是一串字符流或二進(jìn)制流。文件的存取以字符或字節(jié)為單位。2022-2023學(xué)年山西省大同市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

2.以下敘述中錯(cuò)誤的是()。

A.向量屬于線性結(jié)構(gòu)B.二叉鏈表是二叉樹的存儲(chǔ)結(jié)構(gòu)C.棧和隊(duì)列是線性表D.循環(huán)鏈表是循環(huán)隊(duì)列的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

3.指針可以用來表示數(shù)組元素,若已知語句:inta[3][7];則下列表示中正確的是()。

A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)

4.對(duì)于順序存儲(chǔ)的線性表,訪問結(jié)點(diǎn)和增加、刪除結(jié)點(diǎn)的時(shí)間復(fù)雜度為()。

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

5.

6.對(duì)于關(guān)鍵字值序列(12,13,11,18,60,15,7,18,25,100)

A.100B.12C.60D.15

7.相對(duì)于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

8.若用一個(gè)大小為6的數(shù)值來實(shí)現(xiàn)循環(huán)隊(duì)列,且當(dāng)前rear和front的值分別為0和3,當(dāng)從隊(duì)列中刪除一個(gè)元素,再加入兩個(gè)元素后,rear和front的值分別為()。

A.1和5B.2和4C.4和2D.5和1

9.有如下形式的函數(shù):intfun(inta[4][5],int*p[10],intn){…}調(diào)用函數(shù)之前需要對(duì)函數(shù)進(jìn)行說明,即所謂的函數(shù)向前引用說明,以下對(duì)fun函數(shù)說明正確的是()。A.intfun(intb[][5],int*r[],intm);

B.intfun(inta[4][],int*p[10],intn);

C.intfun(inta[][],int*p[],intn);

D.intfun(inta[],int*p[],intn);

10.有以下程序:#include<stdio.h>main(){inta=2,b;b=a<<2;printf("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是()。A.2B.4C.6D.8

11.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20][{"One*World","One*Dream!"},*p=str[1];prinft("%d,",strlen(p));printf("%s\n",p);}程序運(yùn)行后的輸出結(jié)果是()。A.9,0ne*WorldB.9,0ne*Dream!C.10,One*Dream!D.10,Ome*World

12.

二、2.填空題(12題)13.軟件是程序、數(shù)據(jù)和【】的集合。

14.下面程序的輸出是【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

15.若要使指針p指向一個(gè)double類型的動(dòng)態(tài)存儲(chǔ)單元,請(qǐng)?zhí)羁铡?/p>

p=【】malloc(sizeof(double));

16.已知存儲(chǔ)結(jié)構(gòu)如下所示,請(qǐng)?zhí)羁铡?/p>

datanext

structlink{chardata;

【】;

}node;

17.算法的復(fù)雜度主要包括空間復(fù)雜度和______復(fù)雜度。

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

19.以下程序運(yùn)行后的輸出結(jié)果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}

20.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

21.以下程序的輸出結(jié)果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

22.下面程序的運(yùn)行結(jié)果是【】。

main()

{unsigneda=0112,x;

x=a>>3;

printf("x=%o",x);

}

23.軟件工程的出現(xiàn)是由于【】。

24.在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè)______。

三、3.程序設(shè)計(jì)題(10題)25.請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p~n-1(p<n-1)的數(shù)組元素平移到數(shù)組的前面。

例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值為6。移動(dòng)后,一維數(shù)組的內(nèi)容應(yīng)為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。

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

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

[試題源程序]

#inciude<stdio.h>

#defineN80

voidfun(int*w,intp,intn)

{

}

main()

{

inta[N]=(i,2,3,4,5,6,7,8,9,10,11,12,13,14,15);

inti,P,n=15;

printf("Theoriginaldata:\n");

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

printf("%3d",a[i]);

printf("\n\nEnterp:");

scanf("%d",&p);

fun(a,P,n);

printf("\nThedataaftermoving:\n");

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

printf("%3d",a[i]);

printf("\n\n");

}

26.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生數(shù)據(jù)放在c所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,低于平均分的學(xué)生人數(shù)通過形參m傳回,平均分通過函數(shù)值返回。

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

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

試題程序:

#include<stdio.h>

#defineN12

typedefstruct

{charnum[10];

doubleS;

}STREC;

doublefun(STREC*a,STREC*b,STREC*C,int*n,int*m)

{

}

main()

{

STRECs[N]={{“GA05”,65},{“GA03”,86},

{“GA02”,76},{“GA04”,95},{“GA01”,93},

{“GA07”,78},{“GA08”,68},{“GA06”,88},

{“GA09”,60},{“GAll”,54},{“GAl2”,56},

{“GAl0”,98}};

STRECh[N],l[N],t;

FILE*out;

inti,j,m,n;

doubleave;

ave=fun(S,h,l,&n,&m);

printf("The%dstudentdatawhichishigherthan%7.3f:\n",n,ave);

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

printf("%s%4.lf\n",h[i].num,

h[i].s);

printf("\n");

printf("The%dStudentdatawhichiSlowerthan%7.3f:\n",m,ave);

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

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

printf("\n");

ut=fopen("out26.dat","w");

fprintf(out,"%d\n%7.3f\n",n,ave);

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

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

if(h[i].s<h[j].s)

{t=h[i];h[i]=h[i];h[j]=t;}

/*分?jǐn)?shù)從現(xiàn)到低排列*/

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

fprintf(out,“%4.1f\n",h[i].s);

fprintf(out,"%d\n%7.3f\n",m,ave);

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

for(j=i+1;i<m;j++)

if(l[i].s<l[j].s)

{t=l[i];l[i]=l[j];l[j]=t;}

/*分?jǐn)?shù)從高到低排列*/

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

fprintf(out,"%4.1f\n",l[i].s);

fclose(out);

}

27.編寫函數(shù)fun,它的功能是:求小于形參n同時(shí)能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。

例如若n為1000時(shí),程序輸出應(yīng)為:s=153.909064。

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

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

28.函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的百位和個(gè)位上,b中的十位和個(gè)位數(shù)依次放在變量c的千位和十位上。

例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=1425。

注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件in.dat中的數(shù)據(jù)不得修改。

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

29.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun,它的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。

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

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

30.請(qǐng)編寫一個(gè)函數(shù)unsignedfun(unsignedw),w是一個(gè)大于10的無符號(hào)整數(shù),若w是n(n≥2)位的整數(shù),則函數(shù)求出w的后n-1位的數(shù)作為函數(shù)值返回。

例如:w值為5923,則函數(shù)返回923;若w值為923,則函數(shù)返回23。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

unsignedfun(unsignedw)

{

}

main()

{

unsignedx;

clrscr();

printf("Enteraunsignedinteger

number:");

scanf("%u",&x);

printf("Theoriginaldatais:%u\n",x);

if(x<10)

printf("Dataerror!");

else

printf("Theresult:%u\n",fun(x));

}

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

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

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

[試題源程序]

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

}

32.編寫函數(shù)fun(),它的功能是:計(jì)算和輸出下列級(jí)數(shù)的和。

S=1/(1×2)+1/(2×3)+…+1/(n×(n+1))

例如,當(dāng)n=10時(shí),函數(shù)值為0.909091。

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

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

試題程序;

#include<conio.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

clrscr();

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

}

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

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

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

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

試題程序:

#include<stdio.h>

#include<string.h>

#defineN80

voidfun(char*w,intm)

{

}

main()

{

chara[N]="ABCDEFGHIJK";

intm;

printf("Theoriginastring:\n");

puts(a);

printf("\n\nEnterm:");

scanf("%d",&m);

fun(a,m);

printf("\nThestringaftermoving:\n");

puts(a);

printf("\n\n");

}

34.編寫函數(shù)fun,其功能是:根據(jù)以下公式求P的值,結(jié)果由函數(shù)值帶回。m與n為兩個(gè)正整數(shù)且要求m>n。

例如:m=12,n=8時(shí),運(yùn)行結(jié)果為495.000000。

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

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

四、單選題(0題)35.程序運(yùn)行后的輸出結(jié)果是()。#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}A.1.1.3B.2.2.3C.1.2.3D.3.3.3

五、單選題(0題)36.堆排序是一種()排序。

A.插入B.選擇C.交換D.歸并

六、單選題(0題)37.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄

B.數(shù)據(jù)行

C.數(shù)據(jù)塊

D.字符(字節(jié))序列

參考答案

1.C解析:程序流程圖是人們對(duì)解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號(hào)表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項(xiàng)中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

2.D循環(huán)鏈表是線性表的一種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),循環(huán)隊(duì)列是隊(duì)列的一種順序存儲(chǔ)結(jié)構(gòu)。因此D選項(xiàng)敘述錯(cuò)誤。本題答案為D選項(xiàng)。

3.D

4.C

5.D

6.C

7.D解析:文件系統(tǒng)所管理的數(shù)據(jù)文件基本上是分散的、相互獨(dú)立的,因此相對(duì)于數(shù)據(jù)庫系統(tǒng),以此為基礎(chǔ)的數(shù)據(jù)處理存在3個(gè)缺點(diǎn),數(shù)據(jù)冗余大、數(shù)據(jù)的不一致性、程序與數(shù)據(jù)的相互依賴(簡稱為數(shù)據(jù)依賴)。注意:文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)各自的特點(diǎn),人工管理階段及數(shù)據(jù)庫系統(tǒng)三代的特點(diǎn)。

8.B

9.A題干中函數(shù)的定義指出了函數(shù)名為fun,返回值的數(shù)據(jù)類型為int。函數(shù)包含3個(gè)參數(shù),第1個(gè)參數(shù)是整型的二維數(shù)組,第2個(gè)參數(shù)是整型數(shù)組,第3個(gè)參數(shù)是整型變量。在定義二維數(shù)組時(shí),必須指定第二維的長度,所以選項(xiàng)B、C、D錯(cuò)誤,選項(xiàng)A正確。本題答案為A選項(xiàng)。

10.D本題考查運(yùn)算符“<<”,b=a<<2,是左移2位,a=2,即b=2*2*2=8。

11.C本題輸出兩個(gè)結(jié)果,第一個(gè)是求字符串的長度。第二個(gè)是輸出的字符串,數(shù)組的下標(biāo)是從0開始的,所以當(dāng)str取1的時(shí)候,應(yīng)為“One*Dream!”。

12.B

13.文檔文檔解析:計(jì)算機(jī)軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。

14.DDBBCCDDBBCC解析:C語言對(duì)枚舉的定義規(guī)定:在枚舉中聲明的各個(gè)枚舉元素,如果沒有明確指出某個(gè)枚舉元素的值,它的上一個(gè)元素存在并有明確值的情況下,這個(gè)枚舉元素的值為其上一個(gè)元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=em2+1=1+1=2,進(jìn)而可知,在printf()打印函數(shù)中,要打印的數(shù)組元素是aa[3]、aa[1]、aa[2],因此最后的打印結(jié)果應(yīng)當(dāng)為“DDBBCC”。

15.(double*)(double*)解析:一般用malloc函數(shù)為變量分配存儲(chǔ)單元時(shí),要在前面用強(qiáng)制類型轉(zhuǎn)換符說明該存儲(chǔ)單元中數(shù)據(jù)的類型。本題要為指向雙精度浮點(diǎn)型數(shù)據(jù)的指針變量p分配存儲(chǔ)單元,因此用(double*)說明。

16.strucklink*nextstrucklink*next解析:結(jié)構(gòu)體變量構(gòu)成鏈表要求結(jié)構(gòu)體中必須有一個(gè)指向該結(jié)構(gòu)體變量自身的指針用來指明鏈表的下一個(gè)結(jié)點(diǎn)。注意:結(jié)構(gòu)體變量的定義及其成員變量的引用。

17.時(shí)間時(shí)間解析:算法的復(fù)雜度主要指時(shí)間復(fù)雜度和空間復(fù)雜度。

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

19.6262解析:本題考查的是宏定義。帶參數(shù)的宏定義是按#indefine命令行中指定的字符串從左到右進(jìn)行轉(zhuǎn)換。本題中替換的式子為:6+8*6+8,代入i,j的值得到62。

20.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

21.JD

22.x=11x=11解析:在對(duì)無符號(hào)數(shù)的右移是高位補(bǔ)0。

23.軟件危機(jī)的出現(xiàn)軟件危機(jī)的出現(xiàn)

24.關(guān)系關(guān)系解析:關(guān)系模型用;維表表示,則每個(gè);維表代表一種關(guān)系。

25.voidfun(int*wintpintn){intiJt;for(i=p;i<=n-i;i++){t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;}}voidfun(int*w,intp,intn)\r\n{\r\ninti,J,t;\r\nfor(i=p;i<=n-i;i++)\r\n{\r\nt=w[n-1];\r\nfor(j=n-2;j>=0;j--)\r\nw[j+1]=w[j];\r\nw[0]=t;\r\n}\r\n}

26.doublefun(STREC*aSTREC*bSTREC*Cint*nint*m){inti;doubleav=0.0;*n=0;*m=0;for(i=0;i<N;i++)av=av+a[i].S;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中并統(tǒng)計(jì)人數(shù)*/*n=*n+l;}else{c[*m]=a[i];/*將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中并統(tǒng)計(jì)人數(shù)*/*m=*m+1;}returnav;/*返回平均分*/}doublefun(STREC\u3000*a,STREC*b,STREC*C,int*n,int*m)\r\n{\r\ninti;\r\ndoubleav=0.0;\r\n*n=0;\r\n*m=0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].S;\r\nav=av/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(av<=a[i].s)\r\n{\r\nb[*n]=a[i];/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中,并統(tǒng)計(jì)人數(shù)*/\r\n*n=*n+l;\r\n}\r\nelse\r\n{\r\nc[*m]=a[i];/*將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中,并統(tǒng)計(jì)人數(shù)*/\r\n*m=*m+1;\r\n}\r\nreturnav;/*返回平均分*/\r\n}解析:本題中第1個(gè)循環(huán)的作用求出所有分?jǐn)?shù)的總和,只有進(jìn)行了av=av/N后才得到平均值(我們在前面的程序中碰到過類似問題)。第2個(gè)循環(huán)的作用是將高于等于平均分的學(xué)生存/kb所指存儲(chǔ)單元中,將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中。同一結(jié)構(gòu)體變量之間可以互相賦值。

本程序中直接用*n,*m來分別表示b,c的下標(biāo),注意開始時(shí)要給*n,*m賦0,且使用時(shí)不能少*號(hào)。因?yàn)閱为?dú)的n,m是一個(gè)指針變量,而我們要用的是它所指向的那個(gè)存儲(chǔ)單元中的值。

27.

解析:該程序功能是求解同時(shí)能被3與7整除的所有自然數(shù)之和的平方根。解題過程,首先利用if條件表達(dá)式“if(i%3==0&&i%7==0)”求能同時(shí)被3與7整除的數(shù),然后在此基礎(chǔ)上利用C語言中的sqrt語句求平方根。

28.*c=(b/10)*1000+(a/10)*100+(b%10)*1

溫馨提示

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

評(píng)論

0/150

提交評(píng)論