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

下載本文檔

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

文檔簡介

2022-2023學(xué)年江西省上饒市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)測試卷一(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.

2.以下選項(xiàng)中與“if(a==l)a=b;elsea++;”語句功能不同的switch語句是()。

A.switch(a){casel:a=b;break;default:a++;}

B.switch(a==l){case0:a=b;break;casel:a++;}

C.switch(a){default:a++;break;casel:a=b;}

D.switch(a==l){casel:a=b;break;case0:a++;}

3.恢復(fù)系統(tǒng)默認(rèn)菜單的命令是()。

A.SETMENUTODEFAULT

B.SETSYSMENUTODEFAULT

C.SETSYSTEMMENUTODEFAULT

D.SETSYSTEMTODEFAULT

4.對線性表進(jìn)行折半查找時,要求線性表必須()。A.A.以順序方式存儲

B.以順序方式存儲,且結(jié)點(diǎn)按關(guān)鍵字有序排列

C.以鏈?zhǔn)椒绞酱鎯?/p>

D.以鏈?zhǔn)椒绞酱鎯?,且結(jié)點(diǎn)按關(guān)鍵字有序排列

5.若文件指針fp已正確指向文件,ch為字符型變量,以下不能把字符輸出到文件中的語句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

6.有以下程序:#include<stdio.h>structS{inta,b;}data[2]=110,100,20,200};main(){structSp=data[1];printf(“%d\n”,++(p.a));}程序的運(yùn)行結(jié)果是()。

A.10B.11C.20D.21

7.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點(diǎn)訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

8.若變量a、i已正確定義,且i已正確賦值,合法的語句是()。

A.a==lB.++iC.a=a++=5D.a=int(i)

9.有以下程序#include<stdio.h>main(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII碼值為65。程序運(yùn)行后的輸出結(jié)果是A.5670B.656667C.567D.ABC

10.下列敘述中正確的是()。

A.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)必定是一一對應(yīng)的

B.由于計(jì)算機(jī)存儲空間是向量式的存儲結(jié)構(gòu),因此,數(shù)據(jù)的存儲結(jié)構(gòu)一定是線性結(jié)構(gòu)

C.程序設(shè)計(jì)語言中的數(shù)組一般是順序存儲結(jié)構(gòu),因此,利用數(shù)組只能處理線性結(jié)構(gòu)

D.以上三種說法都不對

11.用不帶頭結(jié)點(diǎn)的單鏈表存儲隊(duì)列時,其隊(duì)頭指針指向隊(duì)頭結(jié)點(diǎn),其隊(duì)尾指針指向隊(duì)尾結(jié)點(diǎn),則在進(jìn)行刪除操作時()。

A.僅修改隊(duì)頭指針B.僅修改隊(duì)尾指針C.隊(duì)頭、隊(duì)尾指針都要修改D.隊(duì)頭,隊(duì)尾指針都可能要修改

12.下列關(guān)系模型中,能使經(jīng)運(yùn)算后得到的新關(guān)系中屬性個數(shù)多于原來關(guān)系中屬性個數(shù)的是

A.選擇B.連接C.投影D.并

二、2.填空題(12題)13.fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數(shù),再求這N個最大值中的最小的那個數(shù)作為函數(shù)值返回。請?zhí)羁铡?/p>

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

for(row=0;row<N;row++

{

for(max=a[row][0],col=1;col<N;col++)

if(【】)max=a[row][col];

if(row==0)min=max;

elseif(【】)min=max;

}

returnmin;

}

14.關(guān)系操作的特點(diǎn)是______操作。

15.在面向?qū)ο蟪绦蛟O(shè)計(jì)中,從外面看只能看到對象有外部特征,而不知道也無需知道數(shù)據(jù)的具體結(jié)構(gòu)以及實(shí)現(xiàn)操作的算法,這稱為對象的______。

16.以下程序用來輸出結(jié)構(gòu)體變量ex所占存儲單元的字節(jié)數(shù):

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));

}

17.設(shè)有以下定義

stnctss

{intinfo;sEruc5ss*link;}x.y,z;

且已建立如下圖所示鏈表結(jié)構(gòu):

請寫出刪除結(jié)點(diǎn)y的賦值語句______。

18.軟件是程序、數(shù)據(jù)和【】的集合。

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

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf("%\n",p);

}

20.以下程序運(yùn)行后的輸出結(jié)果是()。

#include<stdio.h>

main()

{intx=20;

printf("%d",0<x<20);

printf("%d\n",0<x&&x<20);

}

21.若有如下結(jié)構(gòu)體說明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

請?zhí)羁?,以完成對t數(shù)組的定義,t數(shù)組的每個元素為該結(jié)構(gòu)體類型。

【】t[20]

22.若有定義:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

24.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是【】。

#include"stdio.h"

main()

{charfun(char,int);

chara=′A′;

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

三、3.程序設(shè)計(jì)題(10題)25.請編寫一個函數(shù)voidfun(char*tt,intpp[]),統(tǒng)計(jì)在tt字符串中“a”到“z”26個字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。

例如:當(dāng)輸入字符串a(chǎn)bcdefghabcdeabc后,程序的輸出結(jié)果應(yīng)該是:33322110000000000000000000

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(char*tt,intpp[])

{

}

main()

{

charaa[1000];

intbb[26],k,n;

clrscr();

printf("\nPleaseenteracharstring:");

scanf("%s",aa);

fun(aa,bb);

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

printf("%d",bb[k]);

printf("\n");

}

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

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

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

27.請編寫函數(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));

}

28.請編寫一個函數(shù)intfun(int*s,intt,int*k),用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲單元中。

例如,輸入如下整數(shù):

876675896101301401980431451777

則輸出結(jié)果為6,980。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

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

{

}

main()

{

inta[10]={876,675,896,101,301,401,

980,431,451,777},k;

clrscr();

fun(a,10,&k);

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

}

29.請編寫函數(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;kif((k+1)%10==0)

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

printf("\n");}/*一行寫9個數(shù)*/

else

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

}

30.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun(),它的功能是:除了尾部的,:號之外,將字符串中其他*號全部刪除。形參p已指向字符串中最后一個字母。在編寫函數(shù)時,不得使用C語言的字符串函數(shù)。

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(char*a,char*p)

{

}

main()

chars[81],*t;

printf("Enterastring:\n");

gets(s);

t=s;

while(*t)

t++;

t--;/*指針t指向字符串尾部*/

while(*t=='*')

t--;/*指針t指向最后一個字母*/

fun(s,t);

printf("Thestringafterdeleted:\n");

puts(s);

}

31.N名學(xué)生的成績已在主函數(shù)中放入一個帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請編寫函數(shù)fun(),它的功能是:找出學(xué)生的最高分,由函數(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é)點(diǎn)的鏈表,各分?jǐn)?shù)存入鏈表中*/

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

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

}

p->next=0;

returnh;/*返回鏈表的首地址*/

}

outlist(STREC*h)

{

STREC*p;

p=h->next;

printf("head");

do

{printf("->%2.0f",p->s);p=p->next;}

/*輸出各分?jǐn)?shù)*/

while(p!=0);

printf("\n\n");

}

main()

{

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

max;

STREC*h;

h=creat(s);

outlist(h);

max=fun(h);

printf("max=%6.1f\n",max);

}

32.N名學(xué)生的成績已在主函數(shù)中放入一個帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請編寫函數(shù)fun,它的功能是:求出平均分,由函數(shù)值返回。

例如,若學(xué)生的成績是:85,76,69,85,91,72,64,87,則平均分應(yīng)當(dāng)是:78.625。

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

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

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

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

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

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

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

試題程序;

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\nInputn:");

scanf("%d",&n);

s=fun(n);

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

}

34.編寫函數(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]);

}

四、單選題(0題)35.語句int(*ptr)()的含義是()。

A.ptr是一個返回值是int的函數(shù)

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向血型數(shù)據(jù)的指針

五、單選題(0題)36.下列程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}

A.0,1,2B.1,2,3C.1,1,3D.1,2,2

六、單選題(0題)37.在E-R圖中,用來表示實(shí)體的圖形是______。A.矩形B.橢圓形C.菱形D.三角形

參考答案

1.A

2.B題中當(dāng)a的值為l時,關(guān)系表達(dá)式a==l的值為真,即1,因此程序?qū)⑻D(zhuǎn)到easel執(zhí)行a++操作,與題干程序剛好相反。

3.BB?!窘馕觥靠疾椴藛?。在菜單中恢復(fù)系統(tǒng)菜單用的是SETSYSMENUTODEFAULT。所以答案選擇B。

4.B

5.A函數(shù)fgete()從文件讀入一個字符到指定變量。函數(shù)fputc()將指定字符寫入審文件中,函數(shù)fprinff(),fwrite()均是寫入文件操作函數(shù)。因此選項(xiàng)B,c。D錯誤。答案為A選項(xiàng)。

6.D聲明data是結(jié)構(gòu)體S的數(shù)組,初始化data[0].a=10,data[0].b=100,data[l].a=20,data[1].b=200。主函數(shù)中“p=data[1];”,即p.a=data[1].a,p.b=data[1].b,執(zhí)行語句“printf(“%d\\n”,++(p.a));”。輸出時,p.a先增1再輸出,p.a=data[1].a=20,先增1等于21。故本題答案為D選項(xiàng)。

7.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結(jié)點(diǎn);③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點(diǎn);②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點(diǎn)。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點(diǎn)。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點(diǎn),e、c、h、f是右子樹的結(jié)點(diǎn)。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)果dgb可知,d、g是b左邊子樹的結(jié)點(diǎn),b右邊子樹無結(jié)點(diǎn)。再由前序遍歷結(jié)果dg可知,d為b左子樹的根,g是以d為根的子樹的右結(jié)點(diǎn)。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結(jié)點(diǎn)位置。所以可知后序遍歷的結(jié)果是D。

8.B選項(xiàng)A為表達(dá)式,因此不正確,選項(xiàng)C中a++本身就是表達(dá)式,無需再賦值,選項(xiàng)D中,在強(qiáng)制類型轉(zhuǎn)換時,類型名應(yīng)用括號括起來,故選擇8選項(xiàng)。

9.C

10.D解析:一般來說,一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),因此,數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)不一定是一一對應(yīng)的。選項(xiàng)A中的說法是錯誤的。雖然計(jì)算機(jī)的存儲空間是向量式的存儲結(jié)構(gòu),但由于一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),例如,線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)。一般來說,性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,各數(shù)據(jù)結(jié)點(diǎn)的存儲序號是不連續(xù)的,并且各結(jié)點(diǎn)在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。性鏈表中,各數(shù)據(jù)元素之間的前后件關(guān)系是由各結(jié)點(diǎn)的指針域來指示的。因此,數(shù)據(jù)的存儲結(jié)構(gòu)不一定是線性結(jié)構(gòu)。選項(xiàng)B中的說法也是錯誤的。雖然程序設(shè)計(jì)語言中的數(shù)組一般是順序存儲結(jié)構(gòu),但是,利用數(shù)組也能處理非線性結(jié)構(gòu)。例如,滿二叉樹與完全二叉樹是非線性結(jié)構(gòu),但對于滿二叉樹與完全二叉樹來說,根據(jù)完全二叉樹的性質(zhì)6,可以按層序進(jìn)行順序存儲,即利用程序設(shè)計(jì)語言中的數(shù)組來存儲,這樣,不僅節(jié)省了存儲空間,又能方便地確定每一個結(jié)點(diǎn)的父結(jié)點(diǎn)與左右子結(jié)點(diǎn)的位置。對于一般的二叉樹來說,也可以將二叉樹中每一個結(jié)點(diǎn)的左指針、右指針以及數(shù)據(jù)域分別用三個數(shù)組中的對應(yīng)元素來存儲,即實(shí)際上也是利用了程序設(shè)計(jì)語言中的數(shù)組來處理二叉樹這樣的非線性結(jié)構(gòu)。選項(xiàng)C中的說法也是錯誤的。綜上所述,選項(xiàng)A、B與C中的說法都是錯誤的。

11.D

12.B解析:本題主要考查關(guān)系模型中幾種運(yùn)算的特征。經(jīng)過選擇或投影運(yùn)算得到的新關(guān)系的屬性個數(shù)最多不會超過原關(guān)系中的屬性個數(shù)。經(jīng)過連接運(yùn)算得到的新關(guān)系最多不少于原關(guān)系中屬性的個數(shù)。故選項(xiàng)B正確。

13.a[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)max<min或min>max或max<=min或min>=maxa[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)\r\nmax<min或min>max或max<=min或min>=max解析:本題有兩層for循環(huán),主函數(shù)中定義了整型變量row、col、max和min,其中row用來存放外循環(huán)中的循環(huán)次數(shù),col用來存放內(nèi)循環(huán)中的次數(shù),max記錄每行中的最大值,min記錄所有行中最大值中的最小值。在內(nèi)循環(huán)中,首先給max賦初值為每行的第0列元素值,然后從第一列開始依次與max進(jìn)行比較。如果大于max則將其值賦給max,當(dāng)每一行循環(huán)結(jié)束,max記錄了每一行的最大值。所以第一個空應(yīng)該填a[row][col]>max或a[row][col]>=max。退出內(nèi)循環(huán),在第一次退出內(nèi)循環(huán)時,將min賦初值為第0行的max,然后在每次退出內(nèi)循環(huán)時,將min和每行的max比較,如果大于max,則將max值賦min,所以第二個空應(yīng)該填max>min或mm>max,當(dāng)退出外循環(huán)時,min為所有行中的最大值的最小值。

14.集合集合

15.對象具有5個基本特點(diǎn):①標(biāo)識唯一性;②分類性;③多態(tài)性;④封裝性;⑤模塊獨(dú)立性好。其中,封裝性是指從外面看只能看到對象的外部特征,對象的內(nèi)部特征即處理能力的實(shí)行和內(nèi)部狀態(tài),對外是不可見的,對象的內(nèi)部狀態(tài)只能由其自身改變。\r\n\r\n

16.ex或structstex或structst解析:求一個變量所占的存儲單元數(shù),用sizeof函數(shù),參數(shù)為該變量名或其變量類型。

17.x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;解析:本題考核的知識點(diǎn)是鏈表中結(jié)點(diǎn)的刪除。要刪除結(jié)點(diǎn)y,只需要讓結(jié)點(diǎn)x的指針域指向y結(jié)點(diǎn)的指針域所指向的后續(xù)結(jié)點(diǎn)就可,因此只需把結(jié)點(diǎn)2的地址賦給x的指針域就可以了即讓結(jié)點(diǎn)x的指針域指向結(jié)點(diǎn)2。而結(jié)點(diǎn)z得地址保存在節(jié)點(diǎn)y的指針域中,因此只需把節(jié)點(diǎn)y的指針城賦值給節(jié)點(diǎn)x的指針域即可。

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

19.efghefgh解析:函數(shù)ss的作用是讓形參指針s指向該字符串的右半部分。主函數(shù)中首先定義了一個字符型指針變量p和字符型指針str,并初始化為“abcdefgh”,然后調(diào)用函數(shù)ss,將實(shí)參str傳給形參s,因此可知該函數(shù)返回的指針,指向str所指的字符串“abcdefgh”的右半部分,即指向字符串“efgh”,所以最后輸出指針p(指針p的值為調(diào)用函數(shù)ss(str)的返回值)所指向的字符串為“efgh”。

20.1010解析:表達(dá)式0<x<20,首先計(jì)算0<x,其值為1,再計(jì)算1<20,其值為1,輸出1;表達(dá)式0<x&&x<20,0<x為1,x<20為0,再計(jì)算1&&0,其值為0,輸出0。所以輸出結(jié)果為10。

21.strudctSTRUstrudctSTRU解析:結(jié)構(gòu)件類型是構(gòu)造數(shù)據(jù)類型,是用戶自己定義的一種類型。

結(jié)構(gòu)體類型的定義:

struct結(jié)構(gòu)體類型名

{

成員項(xiàng)表;

};

定義結(jié)構(gòu)體變量的的形式為:

struct結(jié)構(gòu)體類型名變量1,變量2,...?

其中變量包括;一般變量、指針變量、數(shù)組變量等。

22.88解析:二維數(shù)組可以看成是按矩陣形式排列的,題目中給二維數(shù)組賦初值是按行分段賦值的,a[4][4]可以分解為4個一維數(shù)組,其數(shù)組名分別為a[0]、a[1]、a[2]、a[3],這4個一維數(shù)組都有4個元素,a[0]的元素為ap[0][0]、a[0][1]、a[0][2]、a[0][3]。

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

24.NN解析:函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致。本題實(shí)現(xiàn)的是在字符'A'的ASCII碼值上加上一個常數(shù),使之變成另一個ASCII碼值,從而輸出字符。

25.voidfun(char*ttintpp[]){inti;fori=0;i<26;i++)pp[i]=0;/*初始化pp數(shù)組各元素為0*/for(;*tt!='\0';tt++)if(*tt>='a'&&*tt<='z')pp[*tt-'a']++;/*將tt字符串中'a'到'z'26個字母各自出現(xiàn)的次數(shù)依次放在pp數(shù)組中任一個小寫字母減去'a'后所得結(jié)果正好是它對應(yīng)的下標(biāo)*/}voidfun(char*tt,intpp[])\r\n{\r\ninti;\r\nfori=0;i<26;i++)\r\npp[i]=0;/*初始化pp數(shù)組各元素為0*/\r\nfor(;*tt!='\\0';tt++)\r\nif(*tt>='a'&&*tt<='z')\r\npp[*tt-'a']++;/*將tt字符串中'a'到'z'26個字母各自出現(xiàn)的次數(shù),依次放在pp數(shù)組中,任一個小寫字\r\n母減去'a'后所得結(jié)果正好是它對應(yīng)的下標(biāo)*/\r\n}解析:第1個循環(huán)的作用是初始化數(shù)組pp,未經(jīng)賦值變量的量為一個不確定數(shù)字。由于它要將'a'到'z'26個字母的個數(shù)依次放到數(shù)組pp中。即'a'的個數(shù)存于pp[0]中,'b'的個數(shù)存于pp[1]中,'c'的個數(shù)存于pp[2]中,…,依次類推。而'a'-'a'的值正好為0,'b'-'a'的值為1,'c'-'a'的值為2,…,依此類推。即任一個小寫字母減去'a'后所得結(jié)果正好是它對應(yīng)的下標(biāo),所以就有了pp[*tt-'a']++。但*tt必須是小寫字母即if()不應(yīng)省略。

26.

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

27.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個字符開始,對字符串進(jìn)行遍歷:若ss串的當(dāng)前字符等于t串的第1個字符,兩字符串的指針自動加1,繼續(xù)比較下一個字符;若比較至字符串的結(jié)尾,則跳出循環(huán);若“串的字符和c串的字符不對應(yīng)相同,則繼續(xù)對,s串的下一個字符進(jìn)行處理。本程序是采用逐一比較的方式找出出現(xiàn)的次數(shù)。循環(huán)的作用是在串中從左到右逐一走動,if()的作用是進(jìn)行判斷是否相同,若與c相同則表示又出現(xiàn)一次.

28.intfun(int*sinttint*k){inti;*k=0;/*k所指的數(shù)是數(shù)組的下標(biāo)值*/for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;/*找到數(shù)組的最大元素把該元素的下標(biāo)賦給k所指的數(shù)*/returns[*k];/*返回?cái)?shù)組的最大元素*/}intfun(int*s,intt,int*k)\r\n{\r\ninti;\r\n*k=0;/*k所指的數(shù)是數(shù)組的下標(biāo)值*/\r\nfor(i=0;i<t;i++)\r\nif(s[*k]<s[i])*k=i;/*找到數(shù)組的最大元素,把該元素的下標(biāo)賦給k所指的數(shù)*/\r\nreturns[*k];/*返回?cái)?shù)組的最大元素*/\r\n}解析:本題中直接使用指針變量k,但在使用時要注意對k的指針運(yùn)算,此外,一開始應(yīng)讓*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。

29.voidfun(int*aint*n){intij=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被7或11整除、但不能同時被7和11整除的所有整數(shù)并放入數(shù)組a中*/if((i%7==0||i%11==0)&&i%77!=0)a[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/}voidfun(int*a,int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被7或11整除、但不能同時被7和11整除的所有整數(shù),并放入數(shù)組a中*/\r\nif((i%7==0||i%11==0)&&i%77!=0)\r\na[j++]=i;\r\n*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/\r\n}解析:注意本題題目應(yīng)是找出能被7或11整除但不能同時被7和11整除的所有整數(shù)。能同時被7和11整除的整數(shù)一定能被77整除,且不能被77整除的數(shù)不一定就是能被7或11整除的數(shù)。所以可得出程序中的if()。按運(yùn)算優(yōu)先級可知(i%7==0||i%11==0),注意,兩邊必須要有小括號。

30.voidfun(char*achar*p){char*t=a;for(;t<=p;t++)if(*t!='*')*(a++)=*t;/*將p以前所有不是*號的字符保留下來*/for(;*t!='\0';t++)*(a++)=.t;/*將p以后的所有*號保留下來*/*a='\0';/*在字符串最后加上結(jié)束標(biāo)記位*/voidfun(char*a,char*p)\r\n{\r\nchar*t=a;\r\nfor(;t<=p;t++)\r\nif(*t!='*')\r\n*(a++)=*t;/*將p以前所有不是*號的字符保留下來*/\r\nfor(;*t!='\\0';t++)\r\n*(a++)=.t;/*將p以后的所有*號保留下來*/\r\n*a='\\0';/*在字符串最后加上結(jié)束標(biāo)記位*/解析:本題曾在歷年上機(jī)考試及模擬試題中多次出現(xiàn),一般用兩個循環(huán)語句來實(shí)現(xiàn)。第1個循環(huán)的作用是將p以前所有不是*號的字符保留下來,即刪除所有的*號。第2個循環(huán)的作用是將p以后的所有*號保留下來。

31.doublefun(STREC*h){doublemax=h->s;while(h!=NULL)/*通過循環(huán)找到最高分?jǐn)?shù)*/{if(max<h->s)max=h->s;

溫馨提示

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

評論

0/150

提交評論