2023年浙江省金華市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)_第1頁(yè)
2023年浙江省金華市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)_第2頁(yè)
2023年浙江省金華市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)_第3頁(yè)
2023年浙江省金華市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)_第4頁(yè)
2023年浙江省金華市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2023年浙江省金華市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、2.填空題(10題)1.在Windows環(huán)境下,可以利用單擊、雙擊、拖動(dòng)這三種鼠標(biāo)操作之一的【】操作實(shí)現(xiàn)窗口的移動(dòng)。

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

main()

{intp[7]={11,13,14,15,16,17,18};

inti=0,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

printf("%d\n",j);

}

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

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

4.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式double(1+x/y)的值為【】。

5.有以下程序

main()

{intn=0,m+1,X=2;

if(!n)X-=l;

if(m)X-=2;

if(X)X-=3;

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

}

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

6.以下程序段的運(yùn)行結(jié)果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}

7.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

main()

{inta=1234;

floatb=123.456;

doublec=12345.54321;

printf("\n%2d,%2.1f,%2.11f",a,b,C);

}

8.實(shí)體聯(lián)系模型是一種常用的高級(jí)概念數(shù)據(jù)模型,而______是實(shí)體聯(lián)系模型中的核心。

9.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計(jì)算它們的和值。和值通過(guò)形參傳回主函數(shù)輸出。請(qǐng)?zhí)羁铡?/p>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*Sum)

{inti,j,k,s=0

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

{k=0;

for(j=1;j<M;j++)

if(a[k][i]>a[j][i])k=j;

s+=【】;

}

【】=s;

}

main()

{intx[M][N]={3,2,5,1,4,l,8,3),s;

SumColumMin(【】);

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

}

10.已有定義:double*p;,請(qǐng)寫(xiě)出完整的語(yǔ)句,利用malloc函數(shù)使p指向一個(gè)雙精度型的動(dòng)態(tài)存儲(chǔ)單元______。

二、單選題(10題)11.執(zhí)行下面的程序后,a的值為()。main{inta,b;for(a=1,b=1;a<=10;a++){if(b%3==l){b+=3;continue;}b-=5;}}A.7B.8C.9D.10

12.棧和隊(duì)列的共同點(diǎn)是()。

A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點(diǎn)處插入和刪除元素D.沒(méi)有共同特點(diǎn)

13.線性表是具有n個(gè)()的有限序列。

A.字符B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.表元素

14.對(duì)于n個(gè)結(jié)點(diǎn)的單向鏈表(無(wú)表頭結(jié)點(diǎn)),需要指針單元的個(gè)數(shù)至少為_(kāi)_____。

A.n-1B.nC.n+1D.2n

15.下列關(guān)于函數(shù)的敘述中正確的是()。A.A.每個(gè)函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))

B.每個(gè)函數(shù)都可以被單獨(dú)編譯

C.每個(gè)函數(shù)都可以單獨(dú)運(yùn)行

D.在一個(gè)函數(shù)內(nèi)部可以定義另一個(gè)函數(shù)

16.帶有頭節(jié)點(diǎn)的單向鏈表head,其3個(gè)數(shù)據(jù)節(jié)點(diǎn)A、B、C的連接關(guān)系如下圖所示:節(jié)點(diǎn)類(lèi)型的定義為structlink{doubledt;structlink*next;};若指針P指向A節(jié)點(diǎn),在不改變P指向的前提下,以下選項(xiàng)中不能訪問(wèn)C節(jié)點(diǎn)數(shù)據(jù)成員dt的表達(dá)式是()。A.*(*p).next->next->dt

B.p->next->next->dt

C.(*(*(*p).next).next).dt

D.(*(p->next->next)).dt

17.有說(shuō)明語(yǔ)句“inta,b;”,如果輸入111222333,使得a的值為111,b的值為333,則以下正確的語(yǔ)句是()。A.scanf("%3d%*3d%3d",&a,&b);

B.scanf("%*3d%3d%3d",&a,&b);

C.scanf("%3d%3d%*3d",&a,&b);

D.scanf("%3d%*2d%3d",&a,&b);

18.以下是if語(yǔ)句的基本形式:if

(表達(dá)式)語(yǔ)句,其中表達(dá)式A.A.必須是邏輯表達(dá)式B.必須是關(guān)系表達(dá)式C.必須是邏輯表達(dá)式或關(guān)系表達(dá)式D.可以是任意合法的表達(dá)式

19.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a(chǎn)’+‘A’);}程序運(yùn)行后的輸出結(jié)果是()。

A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR

20.若變量x、y已正確定義并賦值,以下符合C語(yǔ)言語(yǔ)法的表達(dá)式是()。

A.x+1=yB.++x,y=x--C.x=x+10=x+yD.double(x)/10

三、程序設(shè)計(jì)題(10題)21.請(qǐng)編寫(xiě)函數(shù)proc(),該函數(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,P的值為4。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為5,6,7,8,9,10.11,12,13,14,1,2,3,4。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:

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

例如,若學(xué)生的成績(jī)是:8576698591726487,則平均分應(yīng)當(dāng)是:78.625。注意:部分源程序在文件PROGl.C中。

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

23.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫(xiě)函數(shù)proc(),它的功能是:函數(shù)返回指定學(xué)號(hào)的學(xué)生數(shù)據(jù),指定的序號(hào)在主函數(shù)中輸入。若沒(méi)找到指定的學(xué)號(hào),在結(jié)構(gòu)體變量中給學(xué)號(hào)置空串,給成績(jī)置-1,作為函數(shù)值返回(用于字符串比較的函數(shù)是strcmp)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:

24.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫(xiě)函數(shù)fun(),該函數(shù)的功能是統(tǒng)計(jì)一行字符串中單詞的個(gè)數(shù),并將其作為函數(shù)值返回。字符串在主函數(shù)中輸入,規(guī)定所有單詞由小寫(xiě)字母組成,單詞之間由若干個(gè)空格隔開(kāi),一行的開(kāi)始沒(méi)有空格。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:1#include<string.h>2#include<stdio.h>3#defineN804intfun(char*s)5{67}8voidmain()9{10FILE*wf;11charline[N];12intnum=0;13printf("Enterastring:\n");14gets(line);15num=fun(line);16printf("Thenumberofwordsis:%d\n\n",num);17/*********found*********/18wf=fopen("out.dat","w");19fprintf(wf,"%d",fun("abigcar"));20fclose(wf);21/*********found*********/22}25.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)一個(gè)函數(shù),用來(lái)刪除字符串中的所有空格。例如,輸入asdafaaz67,則輸出為asdafaaz67。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:26.使用vc++2010打開(kāi)文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)函數(shù)fun(),其功能是在一組得分中,去掉一個(gè)最高分和一個(gè)最低分,然后求平均值,并通過(guò)函數(shù)返回該值。函數(shù)形參a指向存放得分的數(shù)組,形參n中存放得分個(gè)數(shù)(n>2)。例如,若輸入8.4共10個(gè)得分,則輸出結(jié)果為8.687500。注意:部分源程序存放在文件prog1.c中,請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:27.請(qǐng)編寫(xiě)函數(shù)proc,該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲(chǔ)單元中。

例如,若二維數(shù)組中的數(shù)據(jù)為

13233343

14243444

15253545

則一維數(shù)組中的內(nèi)容應(yīng)該是132333431424344415253545。

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

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

試題程序:

#include<stdio.h>

voidproc(int(*s)[103,int*b,int*n,intrain.intnn)

{}

voidmain

{

intarr[10][10]={{33,33,33,33),{44,44,44,44},

{55,55,55,55}),i,j;

inta[l00]={o),n=o;

printf("Thematrix:\n");

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

{

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

printf("%3d",arr[i][j]):

printf("\n");

}

proc(arr,a,&n,3,4):

printf("TheAarray:\n");

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

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

printf("\n\n");

}

28.編寫(xiě)函數(shù)intproc(intlim,intaa[M]),該函數(shù)的功能是求出小于或等于lim的所有素?cái)?shù)并放在aa數(shù)組中,該函數(shù)返回所求出的素?cái)?shù)。例如,若輸入12時(shí),則輸出:235711。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:

29.規(guī)定輸入的字符串中只包含字母和*號(hào)。編寫(xiě)函數(shù)fun,其功能是:刪除字符串中所有的*號(hào)。編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(chara)

{

voidmain

{

chars[81];

print{("Enterastring:\n");

gets(s):

fun(S);

printf("Thestringafterdeleted:\n");

puts(s);

}

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

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

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

四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是:計(jì)算整數(shù)n的階乘。

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

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

試題程序:

#include<stdio.h>

doublefun(intn)

{

doubleresult=l.0;

whil(n>l&&n<170)

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

result*=--n;

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

return;

main()

{int.n;

clrscr();

printf("Enteraninteger:");

scanf("%d",&n);

printf("\n\n%d!=%lg\n\n",n,fun(n));

}

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

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

注意:不要改動(dòng)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));

}

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

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

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

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

34.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)以下公式求π值,并作為函數(shù)值返回。

例如,給指定精度的變量eps輸入0.0005時(shí),應(yīng)當(dāng)輸出Pi=3.141480。

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

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

35.給定程序MODll.C中函數(shù)fun的功能是:將字符串中的字符按逆序輸出,但不改變字符串中的內(nèi)容。

例如,若字符串為abcd,則應(yīng)輸出:dcba。

請(qǐng)改正程序中的錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。

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

36.下列給定程序中,函數(shù)fun()的功能是:根據(jù)整型形參n,計(jì)算如下公式的值。

A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=(1/(1+A(n-1))

例如,若p=10,則應(yīng)輸出0.617977。

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

注意:不要改動(dòng)mah函數(shù),不得增行或刪行,也不得更改程序的蛄構(gòu).

試題程序:

#include<conio.h>

#include<stdio.h>

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

ihtfun(ihtn)

{floatA=l;inti;

/**************foudn********************/

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

A=1.0/(i+A);

returnA;

}

main()

{intn;

clrscr();

printf("\nPleaseentern:");

$canf("%d",&n);

printf("A%d=%lf\n",n,fun(n));

}

37.下列給定程序中函數(shù)fun()的功能是計(jì)算正整數(shù)num的各位上的數(shù)字之平方和。

例如:輸入352,則輸出應(yīng)該是38;若輸入328,則輸出應(yīng)該是77。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

longfun(longnum)

{

/*+**+*+*+*found************/

longk=1;

do

{

k+=(num%10)*(num%10);

num/=10;

/*********+found*+**+*+******/

}while(num)

return(k);

}

main()

{

longn;

clrscr();

printf("\Pleaseenteranumber:");

scanf("%ld",&n);

printf("\n%ld\n",fun(n));

}

38.下列給定程序中,函數(shù)fun()的功能是根據(jù)整型形參m,計(jì)算如下公式的值。

y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)

例如:m中的值為5,則應(yīng)輸出0.838611。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

doublefun(intm)

{doubley=1.0;

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

intj=1;

inti;

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

{

j=-1*j;

/****************found*******+******/

y+=1/(i*i);

}

return(y);

}

main()

{

intn=5;

clrscr();

printf("\nTheresultis%lf\n",fun(n));

}

39.給定程序MODll.C中函數(shù)fun的功能是:求整數(shù)x的y次方的低3位值。例如,整數(shù)5的6次方為15625,此值的低3位值為625。

請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。

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

40.下列給定程序中,函數(shù)fun()的功能是:用遞歸算法計(jì)算斐波拉契級(jí)數(shù)列中第n項(xiàng)的值。從第一項(xiàng)起,斐波`拉契級(jí)數(shù)序列為1,1,2,3,5,8,13,21,……例如,若給n輸入7,

該項(xiàng)的斐波拉契級(jí)數(shù)值為13。

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

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

試題程序:

#include<stdio.h>

longfun(intg)

{

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

switch(g);

{case0:return0;

switch(g)

case1;case2:return1;

}

return(fun(g-1)+fun(g-2));

}

main()

{

longfib;intn;

printf("Inputn:");scanf("%d",&n);

printf("n-%d\n",n);

fib=fun(n);

printf("fib=%d\D\n",fib);

}

五、程序改錯(cuò)題(2題)41.下列給定程序中函數(shù)fun的功能是:將長(zhǎng)整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為7531。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

42.下列給定的程序中,proc()函數(shù)的功能是:將str所指字符串中每個(gè)單詞的最后一個(gè)字母改成大寫(xiě)(這里的“單詞”是指有空格隔開(kāi)的字符串)。

例如,若輸人:Howdoyoudo,則輸出:HoWdOyoUd0。

請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。

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

試題程序:

六、操作題(2題)43.函數(shù)delete(s,i,n)是作用是從字符串s中刪除從第i個(gè)字符開(kāi)始的n個(gè)字符,請(qǐng)?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

while(s[length])

【】;

-i;

j=i

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

44.執(zhí)行以下程序后的輸出結(jié)果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

參考答案

1.拖動(dòng)拖動(dòng)

2.24

3.136136解析:本題考核的知識(shí)點(diǎn)是函數(shù)遞歸。主函數(shù)調(diào)用函數(shù)fun(6),由于6/2>0為真遞歸調(diào)用fun(3),接著遞歸調(diào)用fun(1),輸出1,返回上一層輸出3,在返回上一層輸出6。故空格處應(yīng)該填136。

4.11解析:本題考查兩個(gè)知識(shí)點(diǎn):一是x/y的值為整型,即為0;二是數(shù)1是double類(lèi)型。

5.-4-4解析:if-else構(gòu)造了一種二路分支選擇,是一種最基本的選擇結(jié)構(gòu),if(條件)S1(if分結(jié)構(gòu))elseS2(else分結(jié)構(gòu)),它的工作過(guò)程是:先對(duì)條件表達(dá)式進(jìn)行判斷,若為真(成立,值為非零),就執(zhí)行if分結(jié)構(gòu)(S1);否則(不成立,值為0),就執(zhí)行else分結(jié)構(gòu)(S2)。本題中,n=O,可以判斷(!n)為真,執(zhí)行“x=x-1=2-1=1;m=1”,可以判斷(m)為真,執(zhí)行“x=x-2=1-2=-1;”進(jìn)而可以判斷(x)為真,執(zhí)行x=x-3=-1-3=-4。所以,最后輸出為-4。

6.x=2

7.1234123.512345.51234,123.5,12345.5解析:在primf()函數(shù)的格式控制符中:'%2d'表示輸出一個(gè)有符號(hào)整數(shù),如果輸出長(zhǎng)度小于2,則左端補(bǔ)以空格,否則按實(shí)際長(zhǎng)度輸出。所以本題中的a按原樣輸出為1234:'%2.1尸表示輸出一個(gè)單精度實(shí)數(shù),只輸出小數(shù)點(diǎn)后1位,后面若有小數(shù)則四舍五入,如果輸出長(zhǎng)度小于2,則左端補(bǔ)以空格,否則按實(shí)際長(zhǎng)度輸出。所以本題中的b四舍五入到小數(shù)點(diǎn)后1位再輸出為123.5;'%2.11f'除了表示輸出一個(gè)雙精度實(shí)數(shù)外,其余參數(shù)和'%2.1f'一樣。所以本題中的c四舍五入到小數(shù)點(diǎn)后1位再輸出為12345.5。故輸出結(jié)果是:1234,123.5,12345.5。

8.實(shí)體聯(lián)系圖或E-R圖實(shí)體聯(lián)系圖或E-R圖解析:實(shí)體聯(lián)系圖(B-R圖)是實(shí)體聯(lián)系模型中的核心。由于E-R圖描述的是數(shù)據(jù)流圖中數(shù)據(jù)存儲(chǔ)及其之間的關(guān)系,因此它是數(shù)據(jù)庫(kù)觀念設(shè)計(jì)的最常用的工具。

9.a[k][i]*sumx&sa[k][i]\r\n*sum\r\nx,&s解析:本題中定義了一個(gè)函數(shù)SumColumMin(),該函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)為數(shù)組名,第二個(gè)參數(shù)為一個(gè)指針,用來(lái)訪問(wèn)存放數(shù)組中每列元素中最小值的存儲(chǔ)空間的變量。所以在主函數(shù)中調(diào)用SumColumMin()函數(shù),應(yīng)該將數(shù)組x和sam作為實(shí)參傳給SumColumMin()中的形參,故第19個(gè)空格處應(yīng)該填x,&s。在SumColumMin()函數(shù)中用了兩重循環(huán),用N記錄數(shù)組的列,M記錄數(shù)組的行。內(nèi)循環(huán)共循環(huán)了M次,每循環(huán)一次將a[k][i]比較a[j][i](當(dāng)k=O時(shí),a[k][i]第一行第一列的值,然后將該值依次和第一列中的每個(gè)值比較,讓a[k][i]表示較小的值,那么比較到最后一個(gè)元素后a[k][i]就是改列中最小元素的值),讓k記錄較小值元素的行下標(biāo),這樣通過(guò)M次循環(huán)得到每列中的最小元素,然后退出內(nèi)循環(huán),繼續(xù)執(zhí)行該次外循環(huán)里的其他語(yǔ)句,即將剛求得第i列的最小值a[k][i]累加到s中,故第17個(gè)空格處應(yīng)該填a[k][i],最后外循環(huán)共循環(huán)N次,將每列的最小值累加到s中,退出循環(huán),然后讓指針sum所指向的存儲(chǔ)空間的值為s,故第18個(gè)空格處應(yīng)該填*sum。

10.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函數(shù)只有一個(gè)參數(shù),該參數(shù)指定了需要分配多少字節(jié)的內(nèi)存。然后將分配好的內(nèi)存塊的首地址作為void*(未知類(lèi)型指針)返回.故標(biāo)準(zhǔn)的調(diào)用形式應(yīng)該寫(xiě)成:

p(double*)malloc(sizeof(double));

11.D本題考查continue的用法,continue語(yǔ)句的作用是結(jié)束本次循環(huán),直接進(jìn)行下次循環(huán)。所以在程序中,只有當(dāng)a=10時(shí),才退出循環(huán),故選擇D選項(xiàng)。

12.C解析:棧和隊(duì)列都是操作受限制的線性表,只允許在端點(diǎn)插入和刪除。不同點(diǎn)是:棧只允許在表的一端進(jìn)行插入和刪除操作,而隊(duì)列允許在表的一端進(jìn)行插入操作,而在另一端進(jìn)行刪除操作。

13.B

14.C解析:在n個(gè)結(jié)點(diǎn)的單向鏈表(無(wú)表頭結(jié)點(diǎn))中,每個(gè)結(jié)點(diǎn)都有一個(gè)指針單元(即指針域),加上頭指針,至少需要n+1個(gè)指針單元。

15.B在C語(yǔ)言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即函數(shù)之間沒(méi)有從屬關(guān)系。雖然函數(shù)之間可以相互調(diào)用,但main函數(shù)不能被調(diào)用,選項(xiàng)A)錯(cuò)誤;C程序從main函數(shù)開(kāi)始執(zhí)行,當(dāng)main數(shù)執(zhí)行完畢時(shí),整個(gè)程序就結(jié)束了。C程序的執(zhí)行必須從main函數(shù)開(kāi)始,選項(xiàng)C)選項(xiàng)錯(cuò)誤;函數(shù)不能嵌套定義,選項(xiàng)D)錯(cuò)誤。

16.Alink結(jié)構(gòu)體中的next是鏈表中下一個(gè)節(jié)點(diǎn)的地址。由于p當(dāng)前指向節(jié)點(diǎn)A,因此p->next是B的地址。p->next->next是C的地址,訪問(wèn)C的節(jié)點(diǎn)數(shù)據(jù)成員dt可以使用C的地址訪問(wèn),即p->next->next->dt,選項(xiàng)B正確?;蛘呤褂媒庖谩?”運(yùn)算符:(*p)表示節(jié)點(diǎn)A,(*p).next表示B的地址,*((*p).next)表示節(jié)點(diǎn)B,(*((*p).next)).next表示C的地址,*((*((*p).next)).next)表示節(jié)點(diǎn)C,所以C的數(shù)據(jù)成員dt可以表示為(*((*(*p).next).next)).dt,因?yàn)椤?”運(yùn)算符優(yōu)先級(jí)高于“*”運(yùn)算符,所以也可以寫(xiě)為(*(*(*p).next).next).dt,選項(xiàng)C正確。同理,也可以既使用指針運(yùn)算符,又使用解引用運(yùn)算符來(lái)訪問(wèn)C的節(jié)點(diǎn)數(shù)據(jù)成員dt,即(*(p->next->next)).dt,選項(xiàng)D正確。選項(xiàng)A中,*p表示A節(jié)點(diǎn),(*p).next表示節(jié)點(diǎn)B的地址,由于“->”運(yùn)算符的優(yōu)先級(jí)高于“*”運(yùn)算符,因此先執(zhí)行“->”,即表達(dá)式(*p).next->next->dt引用了C節(jié)點(diǎn)的數(shù)據(jù)成員dt,然后再執(zhí)行解引用運(yùn)算“*”,這是錯(cuò)誤的。故本題答案為A選項(xiàng)。

17.A根據(jù)題意,要使a的值為111,b的值為333,必須在讀入時(shí)指定a的讀入寬度為3,b的讀入寬度為3,且a和b的控制字符之間必須額外增加%*控制符,用于跳過(guò)中間的3位輸入數(shù)字,選項(xiàng)A正確。本題答案為A選項(xiàng)。

18.D

19.C程序定義一個(gè)字符數(shù)組b,并使用字符串“happynewyeai”進(jìn)行初始化。然后通過(guò)for循環(huán),遍歷字符數(shù)組b中的每個(gè)字符,再將b中的字符元素修改為大寫(xiě)字母。程序輸出:HAPPYNEWYEAR。故本題答案為C選項(xiàng)。

20.B不能將變量賦給表達(dá)式,故A、C選項(xiàng)錯(cuò)誤。D選項(xiàng)中強(qiáng)制類(lèi)型轉(zhuǎn)換表達(dá)式應(yīng)寫(xiě)成“(double)x/10”。故本題答案為B選項(xiàng)。

21.

【解析】題目中要求把下標(biāo)從p到n-1的數(shù)組元素平移到數(shù)組的前面,可以通過(guò)每一次循環(huán)將最后一個(gè)元素放在第一個(gè)位置上,使其成為第一個(gè)元素,其余元素后移一個(gè)位置。通過(guò)n-1-p次循環(huán)實(shí)現(xiàn)將從p到n-1的數(shù)組元素平移到數(shù)組的前面。

22.

【考點(diǎn)分析】

本題考查:鏈表的操作,對(duì)鏈表的主要操作有以下幾種:建立鏈表、結(jié)構(gòu)的查找與輸出、插入一個(gè)結(jié)點(diǎn)、刪除一個(gè)結(jié)點(diǎn)。

【解題思路】

題目要求求鏈表中數(shù)據(jù)域的平均值,應(yīng)首先使用循環(huán)語(yǔ)句遍歷鏈表,求各結(jié)點(diǎn)數(shù)據(jù)域中數(shù)值的和,再對(duì)和求平均分。遍歷鏈表時(shí)應(yīng)定義一個(gè)指向結(jié)點(diǎn)的指針P,因?yàn)椤邦^結(jié)點(diǎn)”中沒(méi)有數(shù)值,所以程序中讓P直接指向“頭結(jié)點(diǎn)”的下一個(gè)結(jié)點(diǎn),使用語(yǔ)句STREC+P=h÷next。

23.

【解析】首先將一個(gè)STREC結(jié)構(gòu)的變量學(xué)號(hào)賦值為空,成績(jī)?yōu)?1。要返回指定學(xué)生的數(shù)據(jù),應(yīng)該將每一個(gè)學(xué)生的學(xué)號(hào)與給定的學(xué)生學(xué)號(hào)相比較。若有相同的,則把其數(shù)據(jù)返回給主函數(shù)。如果沒(méi)有該學(xué)號(hào)的學(xué)生,就將定義的學(xué)號(hào)為空,成績(jī)?yōu)?1的記錄返回給主函數(shù)。

24.Intfun(char*s){Inti,j=0;for(i=0;s[i]!=’\\o’/i++)if(s[i]!=’'&&(s[i+i]==’’||s[i+1]=='\\0'))/*如果一個(gè)字母的下一個(gè)字符為空格或者結(jié)束標(biāo)記,則表示一個(gè)單詞結(jié)束*/J++;_returnj;/*返回單詞個(gè)數(shù)*/}要判斷單詞的個(gè)數(shù),首先考慮怎樣識(shí)別一個(gè)單詞。如果一個(gè)字母的下一個(gè)字符為空格或者字符串結(jié)束標(biāo)志,則表示一個(gè)單詞結(jié)束。因此程序使用for循環(huán)語(yǔ)句遍歷整個(gè)字符串,用if條件語(yǔ)句判斷當(dāng)前字符是否表示一個(gè)單詞的結(jié)束。如果當(dāng)前字符表示一個(gè)單詞結(jié)束,則存放單詞個(gè)數(shù)的變量加1,最后返回單詞的個(gè)數(shù)。25.1voidfun(char*str)2{3inti=0;4char*p=str;5while(*p)6{7if(*p!='')/*刪除空格*/8{9str[i++]=*p;10}11p++;12}13str[i]='\\0';/*加上結(jié)束符*/14}本題要求刪除所有空格,即保留除了空格以外的其他所有字符。由于C語(yǔ)言中沒(méi)有直接刪除字符的操作,因此對(duì)不需要?jiǎng)h除的字符采用“保留”的操作。用指針P指向字符串中的每一個(gè)字符,每指向一個(gè)字符都判斷其是否為空格,若不是空格則將其保存到數(shù)組Str。26.1doublefun(doublea[],intn)Doublesum=0,max,min;inti;max=min=a[0];for(i=0;i<n;i++){</n;i++)<n;i++)sum=sum+a[i];</n;i++)if(max<a[i])max=a[i];<n;i++)if(min>a[i])min=a[i];</n;i++)<n;i++)sum=sum-max-min;</n;i++)<n;i++)return(sum/(n-2));</n;i++)<n;i++)}</n;i++)<n;i++)設(shè)定3個(gè)變量,sum存放和值,max存放最大值,min存放最小值。max和min都賦為數(shù)組中第1個(gè)元素的值。利用循環(huán)將數(shù)組中元素累加到sum中,并找出最大值和最小值。sum值減去最大值和最小值。函數(shù)返回sum除以(元素個(gè)數(shù)減2)得平均值。</n;i++)27.\r\n\tvoidproc(int(*s)[10],int*b,int*n,intmm,intnn)

{

inti,j,k=0;

for(i=0;i<mm;i++)//i是表示其行的下標(biāo)

for(j=0;j<nn;j++)//j是表示其列的下標(biāo)

b[k++]=s[i][j];//把其放到b的一維數(shù)組中

*n=k;//把b數(shù)組的長(zhǎng)度通過(guò)形參n傳回到主函數(shù)中

}

【解析】要將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,可以通過(guò)首先行循環(huán),然后列循環(huán)取出二維數(shù)組中的每一個(gè)元素,并將其放入一維數(shù)組中。最后,將一維數(shù)組的長(zhǎng)度通過(guò)形參返回到主函數(shù)當(dāng)中。

28.

【解析】首先判斷小于等于整數(shù)lim的所有整數(shù)是否為素?cái)?shù)。然后將一個(gè)素?cái)?shù)放入數(shù)組aa中,最后將素?cái)?shù)的個(gè)數(shù)返回給主函數(shù)。

29.\n\tvoidfun(char*a)

\n{

\ninti,j=0;

\nfor(i=0;a[i]!=\0;i++)

\nif(a[i]!=*)

\na[j++]=a[i];//若不是要?jiǎng)h除的字符*則保留

\na[j]=\0;//最后加上字符串結(jié)束符\0

\n}

\n【解析】此題是刪除字符串中的星號(hào)。思路是通過(guò)for循環(huán)完成對(duì)字符串的遍歷,通過(guò)if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中星號(hào)前的位置,“if(a[i]!=*)”“a[i++]=a[i]”,最后返回主函數(shù)將刪除*后的字符串輸出即可。\n

30.

【考點(diǎn)分析】

本題考查:if語(yǔ)句,用來(lái)判斷能被7整除或者能被11整除,但是又不能同時(shí)被7和11整除的數(shù),在這里充分理解”邏輯與”和”邏輯或”的區(qū)別;for循環(huán)語(yǔ)句的循環(huán)變量用來(lái)控制取值范圍。

【解題思路】

該題需要運(yùn)用循環(huán)判斷結(jié)構(gòu)來(lái)實(shí)現(xiàn),其中循環(huán)語(yǔ)句比較容易,只要確定循環(huán)變量的范圍即可,下面來(lái)看判斷語(yǔ)句,題目要求找出能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù)。能同時(shí)被7和ll整除的整數(shù)一定能被77整除,且不能被

77整除的數(shù)不一定就是能被7或11整除的數(shù),所以可得出程序中的if語(yǔ)句。注意:(i%7==0||i%11==0)兩邊必須要有小括號(hào)。

31.(1)錯(cuò)誤:result*=--n;正確:result*=n--;(2)錯(cuò)誤:return;正確:returnresult;(1)錯(cuò)誤:result*=--n;正確:result*=n--;\r\n(2)錯(cuò)誤:return;正確:returnresult;解析:該題采用循環(huán)語(yǔ)句計(jì)算n的階乘。當(dāng)n大于1且小于170時(shí),令result與n相乘,同時(shí)n自動(dòng)減1,循環(huán)至n=2(n=1時(shí)無(wú)需相乘):注意:o和1的階乘都等于1,可用條件語(yǔ)句和循環(huán)語(yǔ)句實(shí)現(xiàn)上述功能。

32.錯(cuò)誤:缺{正確:加{錯(cuò)誤:缺{正確:加{解析:本題我們可以拆分成兩個(gè)簡(jiǎn)單的c語(yǔ)言試題:

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

(2)將大于平均值的數(shù)字個(gè)數(shù)計(jì)算出來(lái)。可利用循環(huán)和條件選擇語(yǔ)句,對(duì)x數(shù)組進(jìn)行遍歷,若某個(gè)值大于平均成績(jī),則將該元素累加計(jì)入c中。我們先來(lái)摘清楚一個(gè)簡(jiǎn)單的求10個(gè)整數(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);

}

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

33.(1)#include<stdio.h>(2)upfst(char*p)(1)#include<stdio.h>(2)upfst(char*p)解析:本題中函數(shù)的功能是將每個(gè)單詞的第一個(gè)字母改成大寫(xiě)。該題的解題思路根據(jù)題干中“這里的‘單詞’是指由空格隔開(kāi)的字符串”可以歸納為主要是對(duì)字符串中空格字符的查找。

34.(1)t=1;(2)return(2*s);(1)t=1;(2)return(2*s);解析:該題中函數(shù)功能

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論