2022年黑龍江省雙鴨山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第1頁(yè)
2022年黑龍江省雙鴨山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第2頁(yè)
2022年黑龍江省雙鴨山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第3頁(yè)
2022年黑龍江省雙鴨山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第4頁(yè)
2022年黑龍江省雙鴨山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2022年黑龍江省雙鴨山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.字符串通常采用的兩種存儲(chǔ)方式是()A.散列存儲(chǔ)和索引存儲(chǔ)B.索引存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)C.順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)D.散列存儲(chǔ)和順序存儲(chǔ)

2.設(shè)有下列二叉樹(shù):

對(duì)此二叉樹(shù)后序遍歷的結(jié)果為

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

3.設(shè)有定義:int?x=2,以下表達(dá)式中,值不為6的是()。

A.2*<.x+=2B.x++.2*xC.x=x*(1+x)D.x*=x+1

4.下面程序的輸出結(jié)果是()。#include<stdio.h>intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n",fun2(a,b)/m);}

A.1B.2C.7D.10

5.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。

A.15,12,9,B.15,13,11,C.15,11,7,D.15,15,15,

6.

7.一個(gè)關(guān)系中屬性個(gè)數(shù)為1時(shí),稱(chēng)此關(guān)系為()。

A.對(duì)應(yīng)關(guān)系B.單一關(guān)系C.一元關(guān)系D.二元關(guān)系

8.下列定義數(shù)組的語(yǔ)句中錯(cuò)誤的是()。

A.intnum[][3]={{1,2},3,4,5,6};

B.intnum[2][4]={{1,2},{3,4},{5,6}};

C.intnum[]={1,2,3,4,5,6};

D.intnum[][4]={1,2,3,4,5,6};

9.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序輸出為()。

A.編譯有錯(cuò)B.0,0,0,3C.1,1,2,0D.0,1,2,0

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

A.一個(gè)算法的空間復(fù)雜度打,則其時(shí)間復(fù)雜度也必定大

B.一個(gè)算法的空間復(fù)雜度大,則其時(shí)間復(fù)雜度也必定小

C.一個(gè)算法的時(shí)間復(fù)雜度大,則其空間復(fù)雜度也必定小

D.算法的時(shí)間復(fù)雜度與空間復(fù)雜度沒(méi)有直接相關(guān)

11.

12.結(jié)構(gòu)化程序由三種基本結(jié)構(gòu)組成,三種基本結(jié)構(gòu)組成的算法A.可以完成任何復(fù)雜的任務(wù)B.只能完成部分復(fù)雜的任務(wù)C.只能完成符合結(jié)構(gòu)化的任務(wù)D.只能完成一些簡(jiǎn)單的任務(wù)

二、2.填空題(12題)13.程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中【】是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過(guò)閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。

14.______是數(shù)據(jù)庫(kù)應(yīng)用的核心。

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

voiddelete(chars[],inti,intn)

{intj,k,legth=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'

}

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

#include<stdio,h>

main()

{inta=1,b=2,c=3;

if(c=a)printf("%d\n",c);

elseprintf("%d\n",b);}

17.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為_(kāi)_____。

18.設(shè)有下列宏定義:

#defineA2

#defineB(A+3)

則執(zhí)行賦值語(yǔ)句“k=B*20;”(k為int型變量)后,k的值是______。

19.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,用來(lái)請(qǐng)求對(duì)象執(zhí)行某一處理或回答某些信息的要求稱(chēng)為【】。

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

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

{printf("\n%d",fun(9));}

22.以下程序中,函數(shù)fun的功能是計(jì)算x2-2x+6,主函數(shù)中將調(diào)用fun函數(shù)計(jì)算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

請(qǐng)?zhí)羁铡?/p>

doublefun(doublex){return(x*x-2*x+6);}

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun([6]);

y2=fun([7]);

printf("y1=%lf,y2=%lf\n",y1,y

23.若有以下程序

intf(intx,inty)

{return(y-x)*x;}

main()

{inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

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

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

voidswap(intx,inty)

{intt;

t=x;x=y;y=t;printf("%d%d",x,y);

}

main()

{inta=3,b=4;

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

}

三、3.程序設(shè)計(jì)題(10題)25.函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的十位和千位上,b中的十位和個(gè)位數(shù)依次放在變量c的個(gè)位和百位上。

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

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

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

26.已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫(xiě)函數(shù)fun,函數(shù)的功能是:找出成績(jī)最低的學(xué)生記錄,通過(guò)形參返回主函數(shù)(規(guī)定只有一個(gè)最低分)。

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

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

27.請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在9所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(int*a,int*n)

{

}

main()

{

intaa[1000],n,k;

clrscr();

fun(aa,an);

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

if((k+1)%10==0)

{

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

printf("\n");/*—行寫(xiě)10個(gè)數(shù)*/

}

else

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

}

28.請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從0到p(p≤n-1)的數(shù)組元素平移到數(shù)組的最后。

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

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

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

試題程序:

#include<stdio.h>

#defineN80

voidfun(int*w,intp,intn)

{

}

main()

{

inta[N]={1,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");

}

29.請(qǐng)編寫(xiě)函數(shù)fun,其功能是:計(jì)算并輸出3~n之間(含3和n)所有素?cái)?shù)的平方根之和。

例如,在主函數(shù)中從鍵盤(pán)為n輸入100后,輸出為:sum=148.874270。

[注意]要求n的值大于2但不大于100。

[注意]部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。

[試題源程序]

#include<math.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doublesum;

printf("\n\nInputn:");

scanf("%d",&n);

sum=fun(n);

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

}

30.請(qǐng)編寫(xiě)函數(shù)fun,其功能是將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)個(gè)位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和千位上。

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

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

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

試題程序:

#include<stdio.h>

voidfun(inta,intb/long*c)

{

}

main()

{

inta,b;

longc;

clrscr();

printf("Inputa,b;");

scanf("%d%d",&a,&b);

fun(a,b,&c);

printf("Theresultis:%ld\n",c);

}

31.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:將字符串中的前導(dǎo)*號(hào)全部刪除,中間和后面的*號(hào)不刪除。

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

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

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

試題程序;

#include<stdio.h>

#include<conio.h>

voidfun(char*a)

{

}

main()

{

chars[81];

printf("Enterastring:\n");

gets(s);

fun(s);

printf("Thestringafterdeleted:\n");

puts(s);

}

32.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。

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

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

33.請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是:實(shí)現(xiàn)B=A+A',即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計(jì)算結(jié)果在main()函數(shù)中輸出。

例如,輸入下面矩陣:

123

456

789

其轉(zhuǎn)置矩陣為:

147

258

369

則程序輸出:

2610

61014

101418

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

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

試題程序:

#include<stdio.h>

#include<conio,h>

voidfun(inta[3][3],intb[3][3])

{

}

main()

{

inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},

t[3][3];

inti,j;

clrscr();

fun(a,t);

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

{for(j=0;j<3;j++)

printf("%7d",t[i][j]);

printf("\n");

}

}

34.請(qǐng)編寫(xiě)函數(shù)fun,其功能是求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。

例如,輸入如下整數(shù):87667589610l30l401980431451777則輸出結(jié)果為:6,980

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

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

四、單選題(0題)35.若有定義“inta=1234,b=-5678;”,用語(yǔ)句“printf("%+-6d%+-6d",a,b);”輸出,以下正確的輸出結(jié)果是()。

A.+1234-5678(中間有一個(gè)空格,最后有一個(gè)空格)

B.+1234-5678(最前面有一個(gè)空格,中間有一個(gè)空格)

C.+-1234+-5678(最前面和最后均無(wú)空格)

D.1234-5678(中間有兩個(gè)空格,最后有一個(gè)空格)

五、單選題(0題)36.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A.x=4B.x=8C.x=6D.x=12

六、單選題(0題)37.若有語(yǔ)句“void*P=malloc(80);”,則以下敘述錯(cuò)誤的是()。

A.可以通過(guò)指針P直接訪(fǎng)問(wèn)用malloc開(kāi)辟的這塊內(nèi)存

B.p所指內(nèi)存可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換當(dāng)作具有20個(gè)int型元素的一維數(shù)組來(lái)使用

C.p所指內(nèi)存可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換當(dāng)作具有10個(gè)double型元素的一維數(shù)組來(lái)使用

D.P所指內(nèi)存可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換當(dāng)作具有80個(gè)char型元素的一維數(shù)組來(lái)使用

參考答案

1.C

2.D解析:二叉樹(shù)的遍歷分為先序、中序、后序三種不同方式。本題要求后序遍歷,其遍歷順序應(yīng)該為:后序遍歷左子樹(shù)->,后序遍歷右子樹(shù)->,訪(fǎng)問(wèn)根結(jié)點(diǎn)。按照定義,后序遍歷序列是DEBFCA,故答案為D。

3.A?A)選項(xiàng)中逗號(hào)表達(dá)式先計(jì)算第一表達(dá)式2*x,然后計(jì)算表達(dá)式x+=2的值,即x=x+2即4,整個(gè)逗號(hào)表達(dá)式為第二個(gè)表達(dá)式的值4,所以選A)。B)選項(xiàng)中首先計(jì)算逗號(hào)表達(dá)式中第一一個(gè)表達(dá)式x++,此時(shí)x為3,再執(zhí)行第二個(gè)表達(dá)式2*x=2*3=6,所以逗號(hào)表達(dá)式為第二個(gè)表達(dá)式的值6。C)選項(xiàng)的賦值表達(dá)式可以表示為x=x*(1+x)=2*(1+2)=6。D)選項(xiàng)中的表達(dá)式可以表示為x=x*(x+1)=2*3=6。

4.B解析:本題考查函數(shù)的調(diào)用。函數(shù)fun2的作用是將形參x和y的值相乘后減去3,在fun2中的變量m是一個(gè)局部變量,它的值在fun2函數(shù)內(nèi)有效;在主函數(shù)中的m指的是全局變量,其值為13,所以fun2(a,b)/m的值為(7*5-3)/13,即2。

5.A程序定義整型的全局變量a,初值為5,main函數(shù)定義整型局部變量a,初值為4。所以在main函數(shù)中,局部變量a屏蔽全局變量a。func函數(shù)中定義局部變量b,初值為5,定義靜態(tài)變量c,初值為5,并且在func函數(shù)中變量a引用的是全局變量a。綜上,我們使用a_a代表全局變量a,使用m_a代表main函數(shù)中局部變量a。main函數(shù)中,當(dāng)k=0時(shí),a_a=5,m_a=4,調(diào)用函數(shù)func(4),函數(shù)func中d的值為4,b的值為5,c的值為5,執(zhí)行表達(dá)式“a_a--;b--;--c;--d;”后,a_a的值為4,b的值為4,c的值為4,d的值為3,a+b+c+d的值為15,程序輸出15。當(dāng)k=1時(shí),a_a=4,m_a=3,調(diào)用函數(shù)func(3),函數(shù)func中d的值為3,b的值為5,c的值為4(靜態(tài)變量使用上一次調(diào)用結(jié)束時(shí)的值),執(zhí)行表達(dá)式“a_a--;b--;--c;--d;”后,a_a的值為3,b的值為4,c的值為3,d的值為2,a+b+c+d的值為12,程序輸出12。當(dāng)k=2時(shí),a_a=3,m_a=2,調(diào)用函數(shù)func(2),函數(shù)func中cl的值為2,b的值為5,c的值為3,執(zhí)行表達(dá)式“a_a--;b--;--c;--d;”后,a_a的值為2,b的值為4,c的值為2,d的值為1,a+b+c+d的值為9,程序輸出9。本題答案為A選項(xiàng)。

6.D

7.C解析:在關(guān)系模型數(shù)據(jù)庫(kù)中,基本結(jié)構(gòu)是二維表,這種二維表稱(chēng)為關(guān)系。關(guān)系的列稱(chēng)為屬性,一個(gè)具有N個(gè)屬性的關(guān)系稱(chēng)為N元關(guān)系。注意:各種關(guān)系查詢(xún)語(yǔ)言與過(guò)程性語(yǔ)言和非過(guò)程性語(yǔ)言的關(guān)系,過(guò)程性語(yǔ)言的特點(diǎn)。

8.BB選項(xiàng)中定義的數(shù)組為2行4列,而賦值時(shí)卻賦成了3行,所以錯(cuò)誤。故本題答案為B選項(xiàng)。

9.AC語(yǔ)言中規(guī)定else總是和之前與其最近的且不帶else的if配對(duì)。題目中,“if(a=1)b=1;c=2;”默認(rèn)省略了else,導(dǎo)致下一句else沒(méi)有匹配語(yǔ)句。故本題答案為A選項(xiàng)。

10.D

11.A

12.A解析:C程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種基本的結(jié)構(gòu)組成,這三種結(jié)構(gòu)可以組成任何復(fù)雜的C程序,即可以完成任何復(fù)雜的任務(wù)。

13.靜態(tài)分析靜態(tài)分析解析:程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過(guò)閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。

14.數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)

15.length++i<lengthlength++\r\ni<length解析:第—個(gè)循環(huán)極有可能是計(jì)算串的長(zhǎng)度,在i<=length時(shí)字符才被刪除,被刪除的是從第i個(gè)到第i+n或最后一個(gè)間的所有字符。刪除前,應(yīng)判斷i<=length。由于已經(jīng)進(jìn)行了-i運(yùn)算,故實(shí)際應(yīng)填入i<length。

16.11解析:該程序要注意的是if語(yǔ)句的判斷條件“c=a”是賦值,而不是“c==a”。由于a=1,故條件c=a使c的值為1(真),所以輸出c的值1。

17.1616解析:函數(shù)運(yùn)算不改變數(shù)據(jù)類(lèi)型,所以結(jié)果也是double型,fabs(x)是對(duì)x取絕對(duì)值,pow(y,fabs(x))是y的labs(x)次冪,即2.04。0=16.000000(注意;結(jié)果為double型)。

18.100100解析:本題考查帶參數(shù)的宏定義及相關(guān)運(yùn)算。運(yùn)算過(guò)程為:k=B*20=(A+3)*20=(2+3)*20=100。

19.消息消息解析:消息是一個(gè)實(shí)例與另一個(gè)實(shí)例之間傳遞的信息,它請(qǐng)求對(duì)象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。

20.22解析:本題變量m既是外部變量(值是13),又是fun函數(shù)的局部變量(值為3)。函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,fun(a,b)/m中的m應(yīng)取外部變量的值13,因此輸出2。

21.77解析:本題考查的是函數(shù)的遞歸調(diào)用。x=0或x=1是遞歸的終止條件,然后用回代的方法從一個(gè)已知值推出下一個(gè)值,直到計(jì)算出最終結(jié)果。

22.

23.99解析:函數(shù)的嵌套調(diào)用是在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給d。函數(shù)的第一個(gè)參數(shù)為f(3,4)的返回值,函數(shù)f(3,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數(shù)f(f(3,4),f(3,5))等價(jià)于函數(shù)f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9,所以輸出9。

24.4334

25.

解析:該程序功能是將兩個(gè)正整數(shù)合并形成一個(gè)整數(shù)的題型。本題類(lèi)型首先要考慮整數(shù)的位數(shù)分離,然后要進(jìn)行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開(kāi),改變排列順序后,再組合成新的數(shù)字。

26.

解析:該程序功能是求最低分?jǐn)?shù)的學(xué)生。本題是關(guān)于求解結(jié)構(gòu)體中某些成員的最小值,首先將第一個(gè)值設(shè)定為最小值,并在循環(huán)中將其他所有值與該值進(jìn)行比較,求得最小值。

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

28.voidfun(int*wintpintn){intijt;for(i=0;i<=p;i++)/*循環(huán)左移p+1次*/{t=w[0];for(j=1/j<n;j++)/*實(shí)現(xiàn)循環(huán)左移*/w[j-1]=w[j];w[j-1]=t;}}voidfun(int*w,intp,intn)\r\n{\r\ninti,j,t;\r\nfor(i=0;i<=p;i++)/*循環(huán)左移p+1次*/\r\n{t=w[0];\r\nfor(j=1/j<n;j++)/*實(shí)現(xiàn)循環(huán)左移*/\r\nw[j-1]=w[j];\r\nw[j-1]=t;\r\n}\r\n}解析:本題采用“循環(huán)左移”的算法(關(guān)于“循環(huán)左移”,我們?cè)诤竺娴脑囶}中有詳細(xì)的解釋)。和我們?cè)谇懊娣治龅纳杂胁煌氖牵粋€(gè)是整型數(shù)組,一個(gè)是字符型數(shù)組。

29.doublefun(intn){intij=0;doubles=0;for(i=3;i<=n;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j==i)s=s+sqrt(i);}returns;}doublefun(intn)\r\n{\r\ninti,j=0;\r\ndoubles=0;\r\nfor(i=3;i<=n;i++)\r\n{\r\nfor(j=2;j<i;j++)\r\nif(i%j==0)\r\nbreak;\r\nif(j==i)\r\ns=s+sqrt(i);\r\n}\r\nreturns;\r\n}

30.voidfun(intaintblong*c){*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;}voidfun(inta,intb,long*c)\r\n{\r\n*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;\r\n}解析:語(yǔ)句“*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;”是將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)個(gè)位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和千位上。注意“/”和“%”的用法。

31.voidfun(char*a){char*p=a;while(*P==‘+’)p++;/*指針p指向字符串第一個(gè)字母*/for(;*p!=‘\0’;p++a++)*a=*p;/*從第—個(gè)字母開(kāi)始其后的字符都放入指針a所指的字符串中*/*a=‘\0’;/*在字符串最后加上結(jié)束標(biāo)記符*/}voidfun(char*a)\r\n{\r\nchar*p=a;\r\nwhile(*P==‘+’)p++;/*指針p指向字符串第一個(gè)字母*/\r\nfor(;*p!=‘\\0’;p++,a++)\r\n*a=*p;/*從第—個(gè)字母開(kāi)始,其后的字符都放入指針a所指的字符串中*/\r\n*a=‘\\0’;/*在字符串最后加上結(jié)束標(biāo)記符*/\r\n}解析:在前面的改錯(cuò)題和編程題中,相關(guān)試題已經(jīng)出現(xiàn)好多次了,我們?cè)诖颂峁┝硪环N解答方法。

#include<string.h>

voidfun(char*a)

{char*p=a;

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

strcpy(a,p);

}

32.

解析:該程序功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)。其中,解題思路是將每位數(shù)字字符串的ASCII碼減去48(字符“0”的ASCII碼值),變成數(shù)字0~9。然后再不斷進(jìn)行高位乘以10加低位的運(yùn)算,或者反過(guò)來(lái)從低位向高位求,即不斷進(jìn)行低位加高位乘以10的運(yùn)算。

33.voidfun(inta[3][3]intb[3][3]){intij;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉(zhuǎn)置存放在矩陣b中*/}voidfun(inta[3][3],intb[3][3])\r\n{\r\ninti,j;\r\nfor(i=0;i<3;i++)\r\nfor(j=0;j<3;j++)\r\nb[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉(zhuǎn)置,存放在矩陣b中*/\r\n}解析:在《線(xiàn)性代數(shù)》里面有矩陣轉(zhuǎn)置的概念,行列數(shù)相等的二維數(shù)組的轉(zhuǎn)置就是行列互換。即轉(zhuǎn)置后的第i行第j列正好對(duì)應(yīng)原矩陣的第j行第i列。

若要將矩陣a轉(zhuǎn)置后還存入a中可用程序:

inti,j,t;

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

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

{t=a[i][j];a[i][j]=a[j][i];a[j][ii=t;}

注意第2個(gè)循環(huán)的初值。

若要將矩陣a轉(zhuǎn)置后存入c中:

inti,j;

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

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

c[i][j]=a[j][i];

注意數(shù)組c和a的下標(biāo)。

34.

解析:(1)該程序功能是求最大元素在數(shù)組中的下標(biāo)。它的解題思路是,用最大值變量max標(biāo)記第一個(gè)待找數(shù)據(jù),逐個(gè)把所有待找數(shù)據(jù)和max進(jìn)行比較,并用pos標(biāo)記其當(dāng)前最大值所在位置,從而找出最大值。(2)從已給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)“fun(a,10,&k);”中的參數(shù)a存放著給出的整數(shù),fun函數(shù)實(shí)現(xiàn)查找最大元素的下標(biāo)。

35.Aprintf函數(shù)參數(shù)包括格式控制字符串和輸出參數(shù),其中格式控制字符串中除了格式控制字符外,其他字符原樣輸出。本題中的printf(“%+-6d%+-6d”,a,b);”,在%和格式控制字符d之間,“+”號(hào)表示輸出的數(shù)字帶正負(fù)號(hào)號(hào)表示輸出數(shù)據(jù)向左對(duì)齊,“6”表示輸出寬度,如果輸出數(shù)據(jù)的寬度不夠6,那么左對(duì)齊,右邊補(bǔ)空格。所以本題輸出+1234-5678(中間有一個(gè)空格,最后有一個(gè)空格)。本題答案為A選項(xiàng)。

36.B在第1次外層for循環(huán)中,首先x++得到x=1。進(jìn)入到內(nèi)層for循環(huán),只有循環(huán)j的值為奇數(shù)時(shí),變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過(guò)程中,變量x的值自加兩次,當(dāng)退出內(nèi)層for循環(huán)時(shí),x=3,然后執(zhí)行x++,得到x=4。在進(jìn)入執(zhí)行第2次外層for循環(huán)中,首先x++得到x=5。進(jìn)入到內(nèi)層for循環(huán),只有循環(huán)變量j的值為奇數(shù)時(shí),變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過(guò)程中,變量X的值自加1兩次,當(dāng)退出內(nèi)層for循環(huán)時(shí),x=7,然后執(zhí)行x++,得到x=8,所以打印輸出變量x的值為8。

37.A題干中使用malloc函數(shù)分配了80個(gè)字節(jié)的內(nèi)存單元,void指針p指向該內(nèi)存單元。在C語(yǔ)言中,void*不能直接使用,必須利用強(qiáng)制類(lèi)型轉(zhuǎn)換將其轉(zhuǎn)成所需的類(lèi)型才能使用,選項(xiàng)A錯(cuò)誤。int類(lèi)型的元素占4個(gè)字節(jié),所以可以將p指向的內(nèi)存強(qiáng)制類(lèi)型轉(zhuǎn)換成具有20個(gè)int類(lèi)型的一維數(shù)組來(lái)使用,同理,也可以強(qiáng)制類(lèi)型轉(zhuǎn)換成10個(gè)double類(lèi)型的一維數(shù)組來(lái)使用,或強(qiáng)制類(lèi)型轉(zhuǎn)換成80個(gè)char類(lèi)型的一維數(shù)組來(lái)使用,選項(xiàng)B、C、D正確。故本題答案為A選項(xiàng)。2022年黑龍江省雙鴨山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.字符串通常采用的兩種存儲(chǔ)方式是()A.散列存儲(chǔ)和索引存儲(chǔ)B.索引存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)C.順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)D.散列存儲(chǔ)和順序存儲(chǔ)

2.設(shè)有下列二叉樹(shù):

對(duì)此二叉樹(shù)后序遍歷的結(jié)果為

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

3.設(shè)有定義:int?x=2,以下表達(dá)式中,值不為6的是()。

A.2*<.x+=2B.x++.2*xC.x=x*(1+x)D.x*=x+1

4.下面程序的輸出結(jié)果是()。#include<stdio.h>intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n",fun2(a,b)/m);}

A.1B.2C.7D.10

5.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。

A.15,12,9,B.15,13,11,C.15,11,7,D.15,15,15,

6.

7.一個(gè)關(guān)系中屬性個(gè)數(shù)為1時(shí),稱(chēng)此關(guān)系為()。

A.對(duì)應(yīng)關(guān)系B.單一關(guān)系C.一元關(guān)系D.二元關(guān)系

8.下列定義數(shù)組的語(yǔ)句中錯(cuò)誤的是()。

A.intnum[][3]={{1,2},3,4,5,6};

B.intnum[2][4]={{1,2},{3,4},{5,6}};

C.intnum[]={1,2,3,4,5,6};

D.intnum[][4]={1,2,3,4,5,6};

9.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序輸出為()。

A.編譯有錯(cuò)B.0,0,0,3C.1,1,2,0D.0,1,2,0

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

A.一個(gè)算法的空間復(fù)雜度打,則其時(shí)間復(fù)雜度也必定大

B.一個(gè)算法的空間復(fù)雜度大,則其時(shí)間復(fù)雜度也必定小

C.一個(gè)算法的時(shí)間復(fù)雜度大,則其空間復(fù)雜度也必定小

D.算法的時(shí)間復(fù)雜度與空間復(fù)雜度沒(méi)有直接相關(guān)

11.

12.結(jié)構(gòu)化程序由三種基本結(jié)構(gòu)組成,三種基本結(jié)構(gòu)組成的算法A.可以完成任何復(fù)雜的任務(wù)B.只能完成部分復(fù)雜的任務(wù)C.只能完成符合結(jié)構(gòu)化的任務(wù)D.只能完成一些簡(jiǎn)單的任務(wù)

二、2.填空題(12題)13.程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中【】是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過(guò)閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。

14.______是數(shù)據(jù)庫(kù)應(yīng)用的核心。

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

voiddelete(chars[],inti,intn)

{intj,k,legth=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'

}

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

#include<stdio,h>

main()

{inta=1,b=2,c=3;

if(c=a)printf("%d\n",c);

elseprintf("%d\n",b);}

17.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為_(kāi)_____。

18.設(shè)有下列宏定義:

#defineA2

#defineB(A+3)

則執(zhí)行賦值語(yǔ)句“k=B*20;”(k為int型變量)后,k的值是______。

19.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,用來(lái)請(qǐng)求對(duì)象執(zhí)行某一處理或回答某些信息的要求稱(chēng)為【】。

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

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

{printf("\n%d",fun(9));}

22.以下程序中,函數(shù)fun的功能是計(jì)算x2-2x+6,主函數(shù)中將調(diào)用fun函數(shù)計(jì)算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

請(qǐng)?zhí)羁铡?/p>

doublefun(doublex){return(x*x-2*x+6);}

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun([6]);

y2=fun([7]);

printf("y1=%lf,y2=%lf\n",y1,y

23.若有以下程序

intf(intx,inty)

{return(y-x)*x;}

main()

{inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

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

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

voidswap(intx,inty)

{intt;

t=x;x=y;y=t;printf("%d%d",x,y);

}

main()

{inta=3,b=4;

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

}

三、3.程序設(shè)計(jì)題(10題)25.函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的十位和千位上,b中的十位和個(gè)位數(shù)依次放在變量c的個(gè)位和百位上。

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

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

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

26.已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫(xiě)函數(shù)fun,函數(shù)的功能是:找出成績(jī)最低的學(xué)生記錄,通過(guò)形參返回主函數(shù)(規(guī)定只有一個(gè)最低分)。

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

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

27.請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在9所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(int*a,int*n)

{

}

main()

{

intaa[1000],n,k;

clrscr();

fun(aa,an);

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

if((k+1)%10==0)

{

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

printf("\n");/*—行寫(xiě)10個(gè)數(shù)*/

}

else

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

}

28.請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從0到p(p≤n-1)的數(shù)組元素平移到數(shù)組的最后。

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

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

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

試題程序:

#include<stdio.h>

#defineN80

voidfun(int*w,intp,intn)

{

}

main()

{

inta[N]={1,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");

}

29.請(qǐng)編寫(xiě)函數(shù)fun,其功能是:計(jì)算并輸出3~n之間(含3和n)所有素?cái)?shù)的平方根之和。

例如,在主函數(shù)中從鍵盤(pán)為n輸入100后,輸出為:sum=148.874270。

[注意]要求n的值大于2但不大于100。

[注意]部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。

[試題源程序]

#include<math.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doublesum;

printf("\n\nInputn:");

scanf("%d",&n);

sum=fun(n);

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

}

30.請(qǐng)編寫(xiě)函數(shù)fun,其功能是將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)個(gè)位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和千位上。

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

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

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

試題程序:

#include<stdio.h>

voidfun(inta,intb/long*c)

{

}

main()

{

inta,b;

longc;

clrscr();

printf("Inputa,b;");

scanf("%d%d",&a,&b);

fun(a,b,&c);

printf("Theresultis:%ld\n",c);

}

31.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:將字符串中的前導(dǎo)*號(hào)全部刪除,中間和后面的*號(hào)不刪除。

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

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

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

試題程序;

#include<stdio.h>

#include<conio.h>

voidfun(char*a)

{

}

main()

{

chars[81];

printf("Enterastring:\n");

gets(s);

fun(s);

printf("Thestringafterdeleted:\n");

puts(s);

}

32.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。

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

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

33.請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是:實(shí)現(xiàn)B=A+A',即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計(jì)算結(jié)果在main()函數(shù)中輸出。

例如,輸入下面矩陣:

123

456

789

其轉(zhuǎn)置矩陣為:

147

258

369

則程序輸出:

2610

61014

101418

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

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

試題程序:

#include<stdio.h>

#include<conio,h>

voidfun(inta[3][3],intb[3][3])

{

}

main()

{

inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},

t[3][3];

inti,j;

clrscr();

fun(a,t);

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

{for(j=0;j<3;j++)

printf("%7d",t[i][j]);

printf("\n");

}

}

34.請(qǐng)編寫(xiě)函數(shù)fun,其功能是求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。

例如,輸入如下整數(shù):87667589610l30l401980431451777則輸出結(jié)果為:6,980

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

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

四、單選題(0題)35.若有定義“inta=1234,b=-5678;”,用語(yǔ)句“printf("%+-6d%+-6d",a,b);”輸出,以下正確的輸出結(jié)果是()。

A.+1234-5678(中間有一個(gè)空格,最后有一個(gè)空格)

B.+1234-5678(最前面有一個(gè)空格,中間有一個(gè)空格)

C.+-1234+-5678(最前面和最后均無(wú)空格)

D.1234-5678(中間有兩個(gè)空格,最后有一個(gè)空格)

五、單選題(0題)36.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A.x=4B.x=8C.x=6D.x=12

六、單選題(0題)37.若有語(yǔ)句“void*P=malloc(80);”,則以下敘述錯(cuò)誤的是()。

A.可以通過(guò)指針P直接訪(fǎng)問(wèn)用malloc開(kāi)辟的這塊內(nèi)存

B.p所指內(nèi)存可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換當(dāng)作具有20個(gè)int型元素的一維數(shù)組來(lái)使用

C.p所指內(nèi)存可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換當(dāng)作具有10個(gè)double型元素的一維數(shù)組來(lái)使用

D.P所指內(nèi)存可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換當(dāng)作具有80個(gè)char型元素的一維數(shù)組來(lái)使用

參考答案

1.C

2.D解析:二叉樹(shù)的遍歷分為先序、中序、后序三種不同方式。本題要求后序遍歷,其遍歷順序應(yīng)該為:后序遍歷左子樹(shù)->,后序遍歷右子樹(shù)->,訪(fǎng)問(wèn)根結(jié)點(diǎn)。按照定義,后序遍歷序列是DEBFCA,故答案為D。

3.A?A)選項(xiàng)中逗號(hào)表達(dá)式先計(jì)算第一表達(dá)式2*x,然后計(jì)算表達(dá)式x+=2的值,即x=x+2即4,整個(gè)逗號(hào)表達(dá)式為第二個(gè)表達(dá)式的值4,所以選A)。B)選項(xiàng)中首先計(jì)算逗號(hào)表達(dá)式中第一一個(gè)表達(dá)式x++,此時(shí)x為3,再執(zhí)行第二個(gè)表達(dá)式2*x=2*3=6,所以逗號(hào)表達(dá)式為第二個(gè)表達(dá)式的值6。C)選項(xiàng)的賦值表達(dá)式可以表示為x=x*(1+x)=2*(1+2)=6。D)選項(xiàng)中的表達(dá)式可以表示為x=x*(x+1)=2*3=6。

4.B解析:本題考查函數(shù)的調(diào)用。函數(shù)fun2的作用是將形參x和y的值相乘后減去3,在fun2中的變量m是一個(gè)局部變量,它的值在fun2函數(shù)內(nèi)有效;在主函數(shù)中的m指的是全局變量,其值為13,所以fun2(a,b)/m的值為(7*5-3)/13,即2。

5.A程序定義整型的全局變量a,初值為5,main函數(shù)定義整型局部變量a,初值為4。所以在main函數(shù)中,局部變量a屏蔽全局變量a。func函數(shù)中定義局部變量b,初值為5,定義靜態(tài)變量c,初值為5,并且在func函數(shù)中變量a引用的是全局變量a。綜上,我們使用a_a代表全局變量a,使用m_a代表main函數(shù)中局部變量a。main函數(shù)中,當(dāng)k=0時(shí),a_a=5,m_a=4,調(diào)用函數(shù)func(4),函數(shù)func中d的值為4,b的值為5,c的值為5,執(zhí)行表達(dá)式“a_a--;b--;--c;--d;”后,a_a的值為4,b的值為4,c的值為4,d的值為3,a+b+c+d的值為15,程序輸出15。當(dāng)k=1時(shí),a_a=4,m_a=3,調(diào)用函數(shù)func(3),函數(shù)func中d的值為3,b的值為5,c的值為4(靜態(tài)變量使用上一次調(diào)用結(jié)束時(shí)的值),執(zhí)行表達(dá)式“a_a--;b--;--c;--d;”后,a_a的值為3,b的值為4,c的值為3,d的值為2,a+b+c+d的值為12,程序輸出12。當(dāng)k=2時(shí),a_a=3,m_a=2,調(diào)用函數(shù)func(2),函數(shù)func中cl的值為2,b的值為5,c的值為3,執(zhí)行表達(dá)式“a_a--;b--;--c;--d;”后,a_a的值為2,b的值為4,c的值為2,d的值為1,a+b+c+d的值為9,程序輸出9。本題答案為A選項(xiàng)。

6.D

7.C解析:在關(guān)系模型數(shù)據(jù)庫(kù)中,基本結(jié)構(gòu)是二維表,這種二維表稱(chēng)為關(guān)系。關(guān)系的列稱(chēng)為屬性,一個(gè)具有N個(gè)屬性的關(guān)系稱(chēng)為N元關(guān)系。注意:各種關(guān)系查詢(xún)語(yǔ)言與過(guò)程性語(yǔ)言和非過(guò)程性語(yǔ)言的關(guān)系,過(guò)程性語(yǔ)言的特點(diǎn)。

8.BB選項(xiàng)中定義的數(shù)組為2行4列,而賦值時(shí)卻賦成了3行,所以錯(cuò)誤。故本題答案為B選項(xiàng)。

9.AC語(yǔ)言中規(guī)定else總是和之前與其最近的且不帶else的if配對(duì)。題目中,“if(a=1)b=1;c=2;”默認(rèn)省略了else,導(dǎo)致下一句else沒(méi)有匹配語(yǔ)句。故本題答案為A選項(xiàng)。

10.D

11.A

12.A解析:C程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種基本的結(jié)構(gòu)組成,這三種結(jié)構(gòu)可以組成任何復(fù)雜的C程序,即可以完成任何復(fù)雜的任務(wù)。

13.靜態(tài)分析靜態(tài)分析解析:程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過(guò)閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。

14.數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)

15.length++i<lengthlength++\r\ni<length解析:第—個(gè)循環(huán)極有可能是計(jì)算串的長(zhǎng)度,在i<=length時(shí)字符才被刪除,被刪除的是從第i個(gè)到第i+n或最后一個(gè)間的所有字符。刪除前,應(yīng)判斷i<=length。由于已經(jīng)進(jìn)行了-i運(yùn)算,故實(shí)際應(yīng)填入i<length。

16.11解析:該程序要注意的是if語(yǔ)句的判斷條件“c=a”是賦值,而不是“c==a”。由于a=1,故條件c=a使c的值為1(真),所以輸出c的值1。

17.1616解析:函數(shù)運(yùn)算不改變數(shù)據(jù)類(lèi)型,所以結(jié)果也是double型,fabs(x)是對(duì)x取絕對(duì)值,pow(y,fabs(x))是y的labs(x)次冪,即2.04。0=16.000000(注意;結(jié)果為double型)。

18.100100解析:本題考查帶參數(shù)的宏定義及相關(guān)運(yùn)算。運(yùn)算過(guò)程為:k=B*20=(A+3)*20=(2+3)*20=100。

19.消息消息解析:消息是一個(gè)實(shí)例與另一個(gè)實(shí)例之間傳遞的信息,它請(qǐng)求對(duì)象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。

20.22解析:本題變量m既是外部變量(值是13),又是fun函數(shù)的局部變量(值為3)。函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,fun(a,b)/m中的m應(yīng)取外部變量的值13,因此輸出2。

21.77解析:本題考查的是函數(shù)的遞歸調(diào)用。x=0或x=1是遞歸的終止條件,然后用回代的方法從一個(gè)已知值推出下一個(gè)值,直到計(jì)算出最終結(jié)果。

22.

23.99解析:函數(shù)的嵌套調(diào)用是在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給d。函數(shù)的第一個(gè)參數(shù)為f(3,4)的返回值,函數(shù)f(3,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數(shù)f(f(3,4),f(3,5))等價(jià)于函數(shù)f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9,所以輸出9。

24.4334

25.

解析:該程序功能是將兩個(gè)正整數(shù)合并形成一個(gè)整數(shù)的題型。本題類(lèi)型首先要考慮整數(shù)的位數(shù)分離,然后要進(jìn)行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開(kāi),改變排列順序后,再組合成新的數(shù)字。

26.

解析:該程序功能是求最低分?jǐn)?shù)的學(xué)生。本題是關(guān)于求解結(jié)構(gòu)體中某些成員的最小值,首先將第一個(gè)值設(shè)定為最小值,并在循環(huán)中將其他所有值與該值進(jìn)行比較,求得最小值。

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

28.voidfun(int*wintpintn){intijt;for(i=0;i<=p;i++)/*循環(huán)左移p+1次*/{t=w[0];for(j=1/j<n;j++)/*實(shí)現(xiàn)循環(huán)左移*/w[j-1]=w[j];w[j-1]=t;}}voidfun(int*w,intp,intn)\r\n{\r\ninti,j,t;\r\nfor(i=0;i<=p;i++)/*循環(huán)左移p+1次*/\r\n{t=w[0];\r\nfor(j=1/j<n;j++)/*實(shí)現(xiàn)循環(huán)左移*/\r\nw[j-1]=w[j];\r\nw[j-1]=t;\r\n}\r\n}解析:本題采用“循環(huán)左移”的算法(關(guān)于“循環(huán)左移”,我們?cè)诤竺娴脑囶}中有詳細(xì)的解釋)。和我們?cè)谇懊娣治龅纳杂胁煌氖?,一個(gè)是整型數(shù)組,一個(gè)是字符型數(shù)組。

29.doublefun(intn){intij=0;doubles=0;for(i=3;i<=n;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j==i)s=s+sqrt(i);}returns;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論