2022-2023學(xué)年福建省三明市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2022-2023學(xué)年福建省三明市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2022-2023學(xué)年福建省三明市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2022-2023學(xué)年福建省三明市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2022-2023學(xué)年福建省三明市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

2022-2023學(xué)年福建省三明市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.計算機算法指的是()。

A.計算方法B.排序方法C.解決問題的有限運算序列D.調(diào)度方法

2.下列能正確進行字符串賦值的是()。A.B.C.D.

3.設(shè)a和b均為double型變量,且a=5.5,b=2.5,則表達式(int)a+b/b的值是A.6.5B.6C.5.5D.6

4.有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);}程序的運行結(jié)果是()。

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

5.算法的時間復(fù)雜度是指______。

A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數(shù)D.算法程序中的指令條數(shù)

6.有以下程序:

main()

{intX,i;

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

{x=i;

if(X%2=O)

if(x%3=O)

if(X%7=0)

printf("%d,i)";

}

}

輸出結(jié)果是()。

A.28

B.27

C.42

D.41

7.圖的深度優(yōu)先遍歷類似于二叉樹的_______。

A.先序遍歷B.中序遍歷C.后序遍歷D.層次遍歷

8.有以下程序

#include<stdio.h>

main()

{inta=1,b=0;

if(--a)b++;

elseif(a==0)b+=2;

elseb+=3:

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

}

程序運行后的輸出結(jié)果是A.A.0B.1C.2D.3

9.有以下程序#include<stdi0.h>main(){inta[]={2,3,5,4),i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;casel:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序運行后的輸出結(jié)果是()。A.3344B.2050C.3040D.0304

10.若有定義“inta;longb;doublex,y;”,則以下選項中正確的表達式是()。

A.a=x<>yB.a%(int)(x-y)C.(a*y)%bD.y=x+y=x

11.有以下程序:

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

A.10B.40C.32D.8

12.

二、2.填空題(12題)13.mysulen函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>

intmystrlen(Char*str)

{inti;

for{i=0;!='\0';i++);

return(______);

}

14.以下sum函數(shù)的功能是計算下列級數(shù)之和。請給函數(shù)中的各變量正確賦初值。

doublesum(doublex,intn)

{inti;doublea,b,s;

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

{a=a*x;b=b*i;s=s+a/b;}

returns;

}

15.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應(yīng)一個處理模塊。

16.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。

17.在面向?qū)ο蟮姆椒ㄖ校琠_____描述的是具有相似屬性與操作的一組對象。

18.下列表達式用于判斷y是否為閏年。閏年的判斷條件是:年號能被4整除但不能被100整除或年號能被400整除,請?zhí)羁誣_____。

19.下列程序的輸出結(jié)果是______。

#include<stdio.h>

sb(ints[],intb)

{staticintn=3;

b=s[n];

n--;

return(b);

}

main()

{ints[]={1,5,6,8};

inti,x=0;

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

{x=sb(s,x);

printf("%d",x);

}

printf("\n");

}

20.在數(shù)據(jù)庫理論中,數(shù)據(jù)庫總體邏輯結(jié)構(gòu)的改變,如修改數(shù)據(jù)模式、增加新的數(shù)據(jù)類型、改變數(shù)據(jù)間聯(lián)系等,不需要相應(yīng)修改應(yīng)用程序,稱為______。

21.軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護期,詳細設(shè)計屬于______中的一個階段。

22.下列程序的運行結(jié)果是______。

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

23.在樹形結(jié)構(gòu)中,沒有前件的結(jié)點是()。

24.下列程序的運行結(jié)果是______。

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main0

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

三、3.程序設(shè)計題(10題)25.編寫一個函數(shù)fun,它的功能是:實現(xiàn)兩個字符串的連接(不使用庫函數(shù)strcat),即把p2所指的字符串連接到p1所指的字符串后。

例如,分別輸入下面兩個字符串:

FirstString--

SecondString

程序輸出:

FirtString--SecondStdng

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

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

26.編寫函數(shù)fun(),它的功能是;根據(jù)以下公式求p的值,結(jié)果由函數(shù)值帶回。m與n為兩個正數(shù)且要求m>n。

P=m!/n!(m-n)!),例如:m=12,n=8時,運行結(jié)果為495.000000。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

floatfun(intm,intn)

{

}

main()

{

clrscr();

printf("p=%f\n",fun(12,8));

}

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

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

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

28.請編寫函數(shù)fun(),它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。

S=1+x+x2/2!3/3!+…/xn/n!

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(doublex,intn)

{

}

main()

{

clrscr();

printf("%f",fun(0,3,10));

}

29.請編寫一個函數(shù)fun(),它的功能是計算并輸出給定整數(shù)n的所有因子(不包括1與自身)的平方和(規(guī)定n的值不大于100)。

例如:主函數(shù)從鍵盤給輸入n的值為56,則輸出為sum=1113。

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

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

試題程序:

#include<stdio.h>

longfun(intn)

{

}

main()

{

intn;

longsum;

printf("Inputn:");

scanf("%d",&n);

sum=fun(n);

printf("sum=%ld\n",sum);

}

30.學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:把指定分數(shù)范圍內(nèi)的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分數(shù)范圍內(nèi)的學(xué)生人數(shù)由函數(shù)值返回。

例如,輸入的分數(shù)是60和69,則應(yīng)當(dāng)把分數(shù)在60到69的學(xué)生數(shù)據(jù)進行輸出,包含60分和69分的學(xué)生數(shù)據(jù)。主函數(shù)中把60放在low中,把69放在heigh中。

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

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

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b,int1,inth)

{

}

main()

{

STRECs[N]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",96},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",94},{"GA012",64},

{"GA014",91},{"GA011",90},{"GA017",64},

{"GA018",64},{"GA016",72}};

STRECh[N],tt;

FILE*out;

inti,j,n,low,heigh,t;

printf("Enter2integernumberlow&

heigh:");

scanf("%d%d",&low,&heigh);

if(heigh<low)

{t=heigh;heigh=low;low=t;}

n=fun(s,h,low,heigh);

printf("Thestudent'sdatabetween

%d--%d:\n",low,heigh);

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

printf("%s%4d\n",h[i].num,h[i].s);

/*輸出指定分數(shù)范圍內(nèi)的學(xué)生記錄*/

printf("\n");

ut=fopen("out74.dat","w")

fprintf(out,"%d\n",n)-

n=fun(s,h,80,98);

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

/*分數(shù)在80~98之間的學(xué)生記錄按他數(shù)從低到高排序*/

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

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

{tt=h[i];h[ii=h[j];h[j]=tt;}

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

fprintf(out,"%4d\n",h[i].s);

fprintf(out,"\n");

fclose(out);

}

31.請編寫函數(shù)fun,其功能是:計算并輸出下列多項式的值:

例如,在主函數(shù)中從鍵盤給n輸入15,則輸出為:s=2.718282。

注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。

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

32.請編寫函數(shù)fun(),該函數(shù)的功能是:計算n門課程的平均分,計算結(jié)果作為函數(shù)值返回。

例如x有5門課程的成績是90.5,72,80,61.5,55,則函數(shù)的值為71.80。

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

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

試題程序:

#include<stdio.h>

floatfun(float*a,intn)

{

}

main()

{

floatscore[30]=(90.5,72,80,61.5,55},

aver;

aver=fun(score,5);

printf("\nAveragescoreis:%5.2f

\n",aver);

}

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

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

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

試題程序:

#include<stdio,h>

#defineN8

typedefstruct

{charnum[10];

doubles;

}STREC;

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

{

}

main()

{

STRECs[N]={{"GA05",85},{"GA03",76}

{"GA02",69},{"GA04",85}

{"GA01",91}{"GA07",72},{"GA08",64}

{"GA06",87}};

STSCh[N],t;

FILE*out;

int.i,j,n;

doubleave;

ave=fun(s,h,&n);

printf("The%dstudentdatawhichis

lowerthan%7.3f:\n"n,ave);

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

/*輸出成績低平均值的學(xué)生記錄*/

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

h[i].s);

printf("\n");

ut=fopen("out71dat","w"

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

/*輸出平均值/

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

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

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

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

/*將成績由低至高排列*/

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

fprintf(out,"%4lf\n"h[i]s);

fclose(out);

}

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

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

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

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

試題程序:

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

}

四、單選題(0題)35.a、b、c、d變量均為float類型且已正確賦值,下列選項中與數(shù)學(xué)式子“2ab/(5cd)”等價的C語言表達式是()。

A.2/5*a/c*d/b

B.a/(5*c*d)*(2*b)

C.2*a*b/5*c*d

D.2/5*a*d*(1/c*d)

五、單選題(0題)36.設(shè)單鏈表中結(jié)點的結(jié)構(gòu)為非空的循環(huán)單鏈表first的尾結(jié)點(由p所指向)滿足:______A.p->link==NULL;B.p==NULL;C.p->link==first;D.p==first;

六、單選題(0題)37.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

參考答案

1.C

2.C選項A、B的空間不夠;選項D中字符串存儲要有結(jié)束符ˊ\0ˊ,且要占用一個空間,printf用來輸出字符,不能輸入字符串。

3.D解析:本題考查的知識點是運算符的優(yōu)先級。在這個表達式中,優(yōu)先級最高的是(int)a,也就是對5.5取整,結(jié)果是5,其次是b/b,即2.5/2.5,結(jié)果是1.000000,最后相加結(jié)果為6.000000(表達式的最終結(jié)果為實型),所以4個選項中D正確。

4.B內(nèi)循環(huán)只循環(huán)一次就結(jié)束,第1次外循環(huán)時,t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;第2次外循環(huán)時,t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第3次外循環(huán)時,1=1+b[2][b[2][2]]=2+b[2][2]=2+2=4。故本題答案為B選項。

5.C解析:算法的時間復(fù)雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關(guān)。選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤,因為算法所編寫的程序長度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項D錯誤,因為根據(jù)一個算法所編制出的程序之中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。所以,本題正確答案為C。

6.C\n只有當(dāng)3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42,故選擇c選鞏。

\n

7.A

8.C解析:本題考察運算符和選擇語句,執(zhí)行到if語句時,--a為0,所以不會執(zhí)行后面的語句,但是會執(zhí)行elseif后面的語句,所以執(zhí)行后,b=2,選項C)正確。

9.C本題考查嵌套分支語句。共輸出4個值:當(dāng)i=0時,i%2取余后還是0,則執(zhí)行ease0語句,繼續(xù)switch語句,此時i為0,數(shù)據(jù)的下標是從0開始的,a[03的值為2,則a[0]%2=0,繼續(xù)執(zhí)行case0,數(shù)組a[0]++,值變?yōu)?,執(zhí)行break跳出第二重開關(guān)語句。出來后繼續(xù)執(zhí)行break,跳出第一重開關(guān)語句,繼續(xù)循環(huán);輸出第一個值為3。i++后值為1,i%2=1%2取余后值為1,執(zhí)行casel,將0賦給a[l],退出開關(guān)語句,輸出第二個值為0。i++后值為2,i%2=2%2取余后值為0’a[2]的值為5,則a[2]%2=1,繼續(xù)執(zhí)行casel,數(shù)組a[2]--,值變?yōu)?,執(zhí)行break跳出第二重開關(guān)語句。出來后繼續(xù)執(zhí)行break,跳出第一重開關(guān)語句,繼續(xù)循環(huán);輸出第三個值為4。i++后值為3,i%2=3%2取余后值為1,執(zhí)行casel,將0賦給a[3],退出開關(guān)語句,輸出第四個值為0。結(jié)果為3040。

10.BC語言中沒有“<>”運算符,所以A選項錯誤。運算符“%”的左右兩個操作數(shù)必須為整型數(shù)據(jù),所以B選項正確。表達式“a*y”的結(jié)果為double型,所以C選項錯誤。不能將值賦給像“x+y”這樣的表達式,所以D選項錯誤。故本題答案為B選項。

11.D整型變量ch使用八進制數(shù)020初始化,二進制數(shù)為10000,右移一位結(jié)果為1000,使用%d輸出十進制數(shù)為8。本題答案為D選項。

12.A

13.*(srt+i)或str[i]i*(srt+i)或str[i]\r\ni解析:求str指向的字符串長度的算法是:用一個變量i表示字符串中字符的位置,一開始賦值為0,取出i位置的字符,判斷是否為'\\0',若不是則i的值加1,如此循環(huán)直到取出的字符是'\\0'為止,此時i的值就是字符串的長度。由此可知,第一個空處應(yīng)填第i位置上的字符*(str+i);第二個空格應(yīng)該填字符串的長度i。

14.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或給abs賦1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或給a,b,s賦1或1.0或1.解析:sum函數(shù)的功能是求表達式s的級數(shù)之和,該函數(shù)的大致思路是:在該函數(shù)中,定義了—個整型變量i用作循環(huán)計數(shù)器,定義一個變量a用來表示各個子項的分子,初始為第一個子項的分子,故為1,定義了一個變量b用來表示各個子項大分母,初始為第一個子項的分母,故為1,定義一個變量s存放累加和,初始為第一個子項的值即為1,然后給各個定義的變量初始化,然后通過一個for循環(huán)將題目中的數(shù)學(xué)表達式的各個子項求出來并累加到s中,所以說,在該題的空格處應(yīng)該填寫將a、b和s賦初值的語句,即為a=1;b=1;s=1:(說明:語句的順序可任意)或a=b=s=1;(說明:變量的順序可任意)或a=1,b=1,s=1(說明:賦值表達式的順序可任意)給a,b,s賦1或1.0或1都可以。

15.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中的每一個加工對應(yīng)一個處理模塊。

16.軟件開發(fā)

17.類類解析:在面向?qū)ο蟮姆椒ㄖ校丫哂邢嗤瑢傩院头椒ǖ膶ο蠓Q為類,類是對象的抽象,對象是類的實例。

18.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查邏輯表達。年號能被4整除(y%4==0)但不能被100整除(y%100!=0),兩者是與的關(guān)系,年號能被400整除即y%400==0,與前兩項是或的關(guān)系。

19.86518651解析:主程序中,第一次循環(huán)時,i=0,調(diào)用sb(s,x)子函數(shù),此時n=3,x=s[n]=s[3]=8,然后將n減1變?yōu)?;第二次循環(huán)時,i=1,調(diào)用sb(s,x)子函數(shù),因為將n定義為了靜態(tài)變量,所以此時n=2,返回x=s[n]=s[2]=6;第三次循環(huán)時,i=2,調(diào)用sb(s,x)子函數(shù),此時n=1,返回x=s[n]=s[1]=5;第四次循環(huán)時,i=3,調(diào)用sb(s,x)子函數(shù),此時n=0,返回x=s[n]=s[0]=1。此程序?qū)嶋H上是將數(shù)組s逆序輸出。

20.邏輯獨立性邏輯獨立性解析:數(shù)據(jù)庫總體邏輯結(jié)構(gòu)改變,而不需要相應(yīng)修改應(yīng)用程序叫做邏輯獨立性。

21.軟件開發(fā)軟件開發(fā)解析:軟件生命周期分為3個時期共8個階段:軟件定義期(問題定義、可行性研究和需求分析)、軟件開發(fā)期(系統(tǒng)設(shè)計、詳細設(shè)計、編碼和測試)、軟件維護期(即運行維護階段)。

22.282,8解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán)。這里程序初始時a=1,b=10,經(jīng)過操作b-=a;a++后b=9,a=2,判斷條件b--<O不成立,退出循環(huán),但b的值被減1,因此結(jié)果為:a=2,b=8。

23.根結(jié)點根結(jié)點

24.11231123解析:在主函數(shù)中第一次調(diào)用func子函數(shù)時,m=0,i=2,i=i+m+1=3,m=i+a+b=3+5+3=11。因為在子函數(shù)中將m和i定義成了static類型,所以在子函數(shù)中對m和i進行的改變,在下一次調(diào)用子函數(shù)時能進行保存,所以第二次調(diào)用子函數(shù)時,m=11,i==3,則i=i+m+1=15,m=i+a+b=15+5+3=23。

25.

解析:該程序功能是實現(xiàn)兩個字符串的連接。本題要把串2連接到串1之后,則需要把串2的第一個字符放到串1的尾符的位置上,把串2的后面的字符放到串1的后面的位置。

26.floatfun(intmintn){inti;doublep=1.0;for(i=1;i<=m;i++)p=p*i;/*求m!*/for(i=1;i<=n;i++)p=p/i;/*求m!/n!*/for(i=1;i<=m-n;i++)p=p/i;/*求m!/(n!(m-n)!)*/returnp;}floatfun(intm,intn)\r\n{\r\ninti;\r\ndoublep=1.0;\r\nfor(i=1;i<=m;i++)p=p*i;/*求m!*/\r\nfor(i=1;i<=n;i++)p=p/i;/*求m!/n!*/\r\nfor(i=1;i<=m-n;i++)p=p/i;/*求m!/(n!(m-n)!)*/\r\nreturnp;\r\n}解析:本題中,欲求P的值,需要先求m,n,m-n的階乘值,可用循環(huán)語句實現(xiàn)。注意階乘值應(yīng)當(dāng)是double類型,若定義x,y,z為整型變量,則p=x/(y*z)中的除法為整數(shù)除法。

27.

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

28.doublefun(doublexintn){inti;doubles=1.0.s1=1.0;for(i=1;i<=n;i++){s1=s1*i;/*各項中的階乘*/s=s+pow(xi)/s1;/*按公式求出*/}returns;}doublefun(doublex,intn)\r\n{\r\ninti;\r\ndoubles=1.0.s1=1.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1*i;/*各項中的階乘*/\r\ns=s+pow(x,i)/s1;/*按公式求出*/\r\n}\r\nreturns;\r\n}解析:本程序中用s1來表示每項的分母(即各項中的階乘),要注意本程序中s和s1的初值都為1。

29.longfun(intn){inti;longs=0;for(i=2;i<=n-1;i++)/*從2~n-1中找n的所有因子*/if(n%i==0)s+=i*i;/*將所有因子求平方加*/returns;/將平方和返回*/}longfun(intn)\r\n{\r\ninti;\r\nlongs=0;\r\nfor(i=2;i<=n-1;i++)/*從2~n-1中找n的所有因子*/\r\nif(n%i==0)\r\ns+=i*i;/*將所有因子求平方加*/\r\nreturns;/將平方和返回*/\r\n}解析:本題的解題思路是用n逐個去除以2到n-1之間的所有數(shù),如果n能被除盡,則把所得到的一個因子的平方累加到s中去。

30.intfun(STREC*aSTREC*bint1inth){intij=0;for(i=0;i<N;i++)if(a[i].s>-l&&a[i].s<=h)/*將分數(shù)高于1低于h的學(xué)生記錄存在于結(jié)構(gòu)體數(shù)組b中*/b[j++]=a[i];returnj;/*返回分數(shù)范圍內(nèi)的學(xué)生人數(shù)*/}intfun(STREC*a,STREC*b,int1,inth)\r\n{\r\ninti,j=0;\r\nfor(i=0;i<N;i++)\r\nif(a[i].s>-l&&a[i].s<=h)/*將分數(shù)高于1,低于h的學(xué)生記錄存在于結(jié)構(gòu)體數(shù)組b中*/\r\nb[j++]=a[i];\r\nreturnj;/*返回分數(shù)范圍內(nèi)的學(xué)生人數(shù)*/\r\n}解析:處理此類分段統(tǒng)計問題,可采用多分支選擇語句或條件選擇語句。此處采用條件選擇語句解答,具體見參考答案。使用條件選擇語句進行分段統(tǒng)計時應(yīng)當(dāng)注意分段范圍。

31.

解析:該程序功能是計算并輸出多項式的值。該題的解題思路是。根據(jù)題干中給出的數(shù)列,首先推出每一項的表達式,然后再對多項式進行累加求和。

32.floatfun(float*aintn){floatav=0.0;inti;for(i=0;iav=av+a[i];/*求分數(shù)的總和*/return(av/n);/*返回平均值*/}floatfun(float*a,intn)\r\n{\r\nfloatav=0.0;\r\ninti;\r\nfor(i=0;iav=av+a[i];/*求分數(shù)的總和*/\r\nreturn(av/n);/*返回平均值*/\r\n}解析:我們先按數(shù)學(xué)的思路來計算平均分:總分除以人數(shù)即可得到平均分,其實用C語言的指針來實現(xiàn)該問題,也不難。當(dāng)指針變量指向一個數(shù)組時,用該指針變量引用數(shù)組元素時,引用方式與數(shù)組的引用方式相同。如本題中a指向了score,所以通過a引用score中的元素時可以用下標法,也可以用指針運算法,a[i]和*(a+i)具有相同的作用。下標運算實際上是從當(dāng)前地址開始往后取出地址中的第幾個元素,當(dāng)前地址下標為0。例如:若有intcc[10],*P=cc+5;,即p指向了cc的第5號元素,則p[0]的作用是取出從當(dāng)前地址(即p所指地址)開始的第0號元素,它與cc[5]相同:p[3]的作用是取出從當(dāng)前地址(即p所指地址)開始往后的第3號元素,它與cc[8]相同:p[-2]的作用是取出從當(dāng)前地址開始往前的第2號元素,它與cc[3]相同,但不提倡使用“負”的F標。

33.doublefun(STREC*aSTREC*bint*n){intij=0;doubleay=0.0;for(i=0;i<N;i++)av=av+a[i].s;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(a[i].s<av)b[j++]=a[i];/*將低于平均值的學(xué)生記錄存入結(jié)構(gòu)體b中*/*n=j;/*指針傳回低于平均值的學(xué)生人數(shù)//returnav;/*返回平均值*/}doublefun(STREC*a,STREC*b,int*n)\r\n{\r\ninti,j=0;\r\ndoubleay=0.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(a[i].s<av)b[j++]=a[i];/*將低于平均值的學(xué)生記錄存入結(jié)構(gòu)體b中*/\r\n*n=j;/*指針傳回低于平均值的學(xué)生人數(shù)//\r\nreturnav;/*返回平均值*/\r\n}解析:很明顯,本題應(yīng)該使用循環(huán)語句和條件判斷語句來實現(xiàn)目的,第1個循環(huán)是求出總分,然后求出平均分av。第2個循環(huán)的作用是將分數(shù)低于平均分的學(xué)生記錄存入數(shù)組b中。

34.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)該明白無符號整數(shù)的定義形式,若它大于10000(5位)時,將10000對它求余則結(jié)果為后4位;當(dāng)它大于1000(4位)時,將1000對它求余則結(jié)果為后3位,花此類推。特別注意這里所有if()的順序不能顛倒。

35.B解析:選項A和選項D中首先計算2/5,因為兩個計算分量都是整型,所以結(jié)果為2,與實際運算不符;選項B中因為乘除法滿足交換律,所以2*b放前面和放后面都是一樣的,所以滿足題目要求;選項C中的表達式等價于2abcd/5,所以不滿足題目要求。故應(yīng)該選擇B。

36.C

37.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。2022-2023學(xué)年福建省三明市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.計算機算法指的是()。

A.計算方法B.排序方法C.解決問題的有限運算序列D.調(diào)度方法

2.下列能正確進行字符串賦值的是()。A.B.C.D.

3.設(shè)a和b均為double型變量,且a=5.5,b=2.5,則表達式(int)a+b/b的值是A.6.5B.6C.5.5D.6

4.有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);}程序的運行結(jié)果是()。

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

5.算法的時間復(fù)雜度是指______。

A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數(shù)D.算法程序中的指令條數(shù)

6.有以下程序:

main()

{intX,i;

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

{x=i;

if(X%2=O)

if(x%3=O)

if(X%7=0)

printf("%d,i)";

}

}

輸出結(jié)果是()。

A.28

B.27

C.42

D.41

7.圖的深度優(yōu)先遍歷類似于二叉樹的_______。

A.先序遍歷B.中序遍歷C.后序遍歷D.層次遍歷

8.有以下程序

#include<stdio.h>

main()

{inta=1,b=0;

if(--a)b++;

elseif(a==0)b+=2;

elseb+=3:

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

}

程序運行后的輸出結(jié)果是A.A.0B.1C.2D.3

9.有以下程序#include<stdi0.h>main(){inta[]={2,3,5,4),i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;casel:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序運行后的輸出結(jié)果是()。A.3344B.2050C.3040D.0304

10.若有定義“inta;longb;doublex,y;”,則以下選項中正確的表達式是()。

A.a=x<>yB.a%(int)(x-y)C.(a*y)%bD.y=x+y=x

11.有以下程序:

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

A.10B.40C.32D.8

12.

二、2.填空題(12題)13.mysulen函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>

intmystrlen(Char*str)

{inti;

for{i=0;!='\0';i++);

return(______);

}

14.以下sum函數(shù)的功能是計算下列級數(shù)之和。請給函數(shù)中的各變量正確賦初值。

doublesum(doublex,intn)

{inti;doublea,b,s;

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

{a=a*x;b=b*i;s=s+a/b;}

returns;

}

15.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應(yīng)一個處理模塊。

16.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。

17.在面向?qū)ο蟮姆椒ㄖ校琠_____描述的是具有相似屬性與操作的一組對象。

18.下列表達式用于判斷y是否為閏年。閏年的判斷條件是:年號能被4整除但不能被100整除或年號能被400整除,請?zhí)羁誣_____。

19.下列程序的輸出結(jié)果是______。

#include<stdio.h>

sb(ints[],intb)

{staticintn=3;

b=s[n];

n--;

return(b);

}

main()

{ints[]={1,5,6,8};

inti,x=0;

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

{x=sb(s,x);

printf("%d",x);

}

printf("\n");

}

20.在數(shù)據(jù)庫理論中,數(shù)據(jù)庫總體邏輯結(jié)構(gòu)的改變,如修改數(shù)據(jù)模式、增加新的數(shù)據(jù)類型、改變數(shù)據(jù)間聯(lián)系等,不需要相應(yīng)修改應(yīng)用程序,稱為______。

21.軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護期,詳細設(shè)計屬于______中的一個階段。

22.下列程序的運行結(jié)果是______。

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

23.在樹形結(jié)構(gòu)中,沒有前件的結(jié)點是()。

24.下列程序的運行結(jié)果是______。

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main0

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

三、3.程序設(shè)計題(10題)25.編寫一個函數(shù)fun,它的功能是:實現(xiàn)兩個字符串的連接(不使用庫函數(shù)strcat),即把p2所指的字符串連接到p1所指的字符串后。

例如,分別輸入下面兩個字符串:

FirstString--

SecondString

程序輸出:

FirtString--SecondStdng

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

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

26.編寫函數(shù)fun(),它的功能是;根據(jù)以下公式求p的值,結(jié)果由函數(shù)值帶回。m與n為兩個正數(shù)且要求m>n。

P=m!/n!(m-n)!),例如:m=12,n=8時,運行結(jié)果為495.000000。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

floatfun(intm,intn)

{

}

main()

{

clrscr();

printf("p=%f\n",fun(12,8));

}

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

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

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

28.請編寫函數(shù)fun(),它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。

S=1+x+x2/2!3/3!+…/xn/n!

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(doublex,intn)

{

}

main()

{

clrscr();

printf("%f",fun(0,3,10));

}

29.請編寫一個函數(shù)fun(),它的功能是計算并輸出給定整數(shù)n的所有因子(不包括1與自身)的平方和(規(guī)定n的值不大于100)。

例如:主函數(shù)從鍵盤給輸入n的值為56,則輸出為sum=1113。

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

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

試題程序:

#include<stdio.h>

longfun(intn)

{

}

main()

{

intn;

longsum;

printf("Inputn:");

scanf("%d",&n);

sum=fun(n);

printf("sum=%ld\n",sum);

}

30.學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:把指定分數(shù)范圍內(nèi)的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分數(shù)范圍內(nèi)的學(xué)生人數(shù)由函數(shù)值返回。

例如,輸入的分數(shù)是60和69,則應(yīng)當(dāng)把分數(shù)在60到69的學(xué)生數(shù)據(jù)進行輸出,包含60分和69分的學(xué)生數(shù)據(jù)。主函數(shù)中把60放在low中,把69放在heigh中。

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

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

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b,int1,inth)

{

}

main()

{

STRECs[N]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",96},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",94},{"GA012",64},

{"GA014",91},{"GA011",90},{"GA017",64},

{"GA018",64},{"GA016",72}};

STRECh[N],tt;

FILE*out;

inti,j,n,low,heigh,t;

printf("Enter2integernumberlow&

heigh:");

scanf("%d%d",&low,&heigh);

if(heigh<low)

{t=heigh;heigh=low;low=t;}

n=fun(s,h,low,heigh);

printf("Thestudent'sdatabetween

%d--%d:\n",low,heigh);

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

printf("%s%4d\n",h[i].num,h[i].s);

/*輸出指定分數(shù)范圍內(nèi)的學(xué)生記錄*/

printf("\n");

ut=fopen("out74.dat","w")

fprintf(out,"%d\n",n)-

n=fun(s,h,80,98);

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

/*分數(shù)在80~98之間的學(xué)生記錄按他數(shù)從低到高排序*/

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

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

{tt=h[i];h[ii=h[j];h[j]=tt;}

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

fprintf(out,"%4d\n",h[i].s);

fprintf(out,"\n");

fclose(out);

}

31.請編寫函數(shù)fun,其功能是:計算并輸出下列多項式的值:

例如,在主函數(shù)中從鍵盤給n輸入15,則輸出為:s=2.718282。

注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。

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

32.請編寫函數(shù)fun(),該函數(shù)的功能是:計算n門課程的平均分,計算結(jié)果作為函數(shù)值返回。

例如x有5門課程的成績是90.5,72,80,61.5,55,則函數(shù)的值為71.80。

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

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

試題程序:

#include<stdio.h>

floatfun(float*a,intn)

{

}

main()

{

floatscore[30]=(90.5,72,80,61.5,55},

aver;

aver=fun(score,5);

printf("\nAveragescoreis:%5.2f

\n",aver);

}

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

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

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

試題程序:

#include<stdio,h>

#defineN8

typedefstruct

{charnum[10];

doubles;

}STREC;

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

{

}

main()

{

STRECs[N]={{"GA05",85},{"GA03",76}

{"GA02",69},{"GA04",85}

{"GA01",91}{"GA07",72},{"GA08",64}

{"GA06",87}};

STSCh[N],t;

FILE*out;

int.i,j,n;

doubleave;

ave=fun(s,h,&n);

printf("The%dstudentdatawhichis

lowerthan%7.3f:\n"n,ave);

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

/*輸出成績低平均值的學(xué)生記錄*/

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

h[i].s);

printf("\n");

ut=fopen("out71dat","w"

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

/*輸出平均值/

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

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

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

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

/*將成績由低至高排列*/

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

fprintf(out,"%4lf\n"h[i]s);

fclose(out);

}

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

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

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

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

試題程序:

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

}

四、單選題(0題)35.a、b、c、d變量均為float類型且已正確賦值,下列選項中與數(shù)學(xué)式子“2ab/(5cd)”等價的C語言表達式是()。

A.2/5*a/c*d/b

B.a/(5*c*d)*(2*b)

C.2*a*b/5*c*d

D.2/5*a*d*(1/c*d)

五、單選題(0題)36.設(shè)單鏈表中結(jié)點的結(jié)構(gòu)為非空的循環(huán)單鏈表first的尾結(jié)點(由p所指向)滿足:______A.p->link==NULL;B.p==NULL;C.p->link==first;D.p==first;

六、單選題(0題)37.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

參考答案

1.C

2.C選項A、B的空間不夠;選項D中字符串存儲要有結(jié)束符ˊ\0ˊ,且要占用一個空間,printf用來輸出字符,不能輸入字符串。

3.D解析:本題考查的知識點是運算符的優(yōu)先級。在這個表達式中,優(yōu)先級最高的是(int)a,也就是對5.5取整,結(jié)果是5,其次是b/b,即2.5/2.5,結(jié)果是1.000000,最后相加結(jié)果為6.000000(表達式的最終結(jié)果為實型),所以4個選項中D正確。

4.B內(nèi)循環(huán)只循環(huán)一次就結(jié)束,第1次外循環(huán)時,t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;第2次外循環(huán)時,t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第3次外循環(huán)時,1=1+b[2][b[2][2]]=2+b[2][2]=2+2=4。故本題答案為B選項。

5.C解析:算法的時間復(fù)雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關(guān)。選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤,因為算法所編寫的程序長度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項D錯誤,因為根據(jù)一個算法所編制出的程序之中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。所以,本題正確答案為C。

6.C\n只有當(dāng)3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42,故選擇c選鞏。

\n

7.A

8.C解析:本題考察運算符和選擇語句,執(zhí)行到if語句時,--a為0,所以不會執(zhí)行后面的語句,但是會執(zhí)行elseif后面的語句,所以執(zhí)行后,b=2,選項C)正確。

9.C本題考查嵌套分支語句。共輸出4個值:當(dāng)i=0時,i%2取余后還是0,則執(zhí)行ease0語句,繼續(xù)switch語句,此時i為0,數(shù)據(jù)的下標是從0開始的,a[03的值為2,則a[0]%2=0,繼續(xù)執(zhí)行case0,數(shù)組a[0]++,值變?yōu)?,執(zhí)行break跳出第二重開關(guān)語句。出來后繼續(xù)執(zhí)行break,跳出第一重開關(guān)語句,繼續(xù)循環(huán);輸出第一個值為3。i++后值為1,i%2=1%2取余后值為1,執(zhí)行casel,將0賦給a[l],退出開關(guān)語句,輸出第二個值為0。i++后值為2,i%2=2%2取余后值為0’a[2]的值為5,則a[2]%2=1,繼續(xù)執(zhí)行casel,數(shù)組a[2]--,值變?yōu)?,執(zhí)行break跳出第二重開關(guān)語句。出來后繼續(xù)執(zhí)行break,跳出第一重開關(guān)語句,繼續(xù)循環(huán);輸出第三個值為4。i++后值為3,i%2=3%2取余后值為1,執(zhí)行casel,將0賦給a[3],退出開關(guān)語句,輸出第四個值為0。結(jié)果為3040。

10.BC語言中沒有“<>”運算符,所以A選項錯誤。運算符“%”的左右兩個操作數(shù)必須為整型數(shù)據(jù),所以B選項正確。表達式“a*y”的結(jié)果為double型,所以C選項錯誤。不能將值賦給像“x+y”這樣的表達式,所以D選項錯誤。故本題答案為B選項。

11.D整型變量ch使用八進制數(shù)020初始化,二進制數(shù)為10000,右移一位結(jié)果為1000,使用%d輸出十進制數(shù)為8。本題答案為D選項。

12.A

13.*(srt+i)或str[i]i*(srt+i)或str[i]\r\ni解析:求str指向的字符串長度的算法是:用一個變量i表示字符串中字符的位置,一開始賦值為0,取出i位置的字符,判斷是否為'\\0',若不是則i的值加1,如此循環(huán)直到取出的字符是'\\0'為止,此時i的值就是字符串的長度。由此可知,第一個空處應(yīng)填第i位置上的字符*(str+i);第二個空格應(yīng)該填字符串的長度i。

14.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或給abs賦1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或給a,b,s賦1或1.0或1.解析:sum函數(shù)的功能是求表達式s的級數(shù)之和,該函數(shù)的大致思路是:在該函數(shù)中,定義了—個整型變量i用作循環(huán)計數(shù)器,定義一個變量a用來表示各個子項的分子,初始為第一個子項的分子,故為1,定義了一個變量b用來表示各個子項大分母,初始為第一個子項的分母,故為1,定義一個變量s存放累加和,初始為第一個子項的值即為1,然后給各個定義的變量初始化,然后通過一個for循環(huán)將題目中的數(shù)學(xué)表達式的各個子項求出來并累加到s中,所以說,在該題的空格處應(yīng)該填寫將a、b和s賦初值的語句,即為a=1;b=1;s=1:(說明:語句的順序可任意)或a=b=s=1;(說明:變量的順序可任意)或a=1,b=1,s=1(說明:賦值表達式的順序可任意)給a,b,s賦1或1.0或1都可以。

15.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中的每一個加工對應(yīng)一個處理模塊。

16.軟件開發(fā)

17.類類解析:在面向?qū)ο蟮姆椒ㄖ校丫哂邢嗤瑢傩院头椒ǖ膶ο蠓Q為類,類是對象的抽象,對象是類的實例。

18.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查邏輯表達。年號能被4整除(y%4==0)但不能被100整除(y%100!=0),兩者是與的關(guān)系,年號能被400整除即y%400==0,與前兩項是或的關(guān)系。

19.86518651解析:主程序中,第一次循環(huán)時,i=0,調(diào)用sb(s,x)子函數(shù),此時n=3,x=s[n]=s[3]=8,然后將n減1變?yōu)?;第二次循環(huán)時,i=1,調(diào)用sb(s,x)子函數(shù),因為將n定義為了靜態(tài)變量,所以此時n=2,返回x=s[n]=s[2]=6;第三次循環(huán)時,i=2,調(diào)用sb(s,x)子函數(shù),此時n=1,返回x=s[n]=s[1]=5;第四次循環(huán)時,i=3,調(diào)用sb(s,x)子函數(shù),此時n=0,返回x=s[n]=s[0]=1。此程序?qū)嶋H上是將數(shù)組s逆序輸出。

20.邏輯獨立性邏輯獨立性解析:數(shù)據(jù)庫總體邏輯結(jié)構(gòu)改變,而不需要相應(yīng)修改應(yīng)用程序叫做邏輯獨立性。

21.軟件開發(fā)軟件開發(fā)解析:軟件生命周期分為3個時期共8個階段:軟件定義期(問題定義、可行性研究和需求分析)、軟件開發(fā)期(系統(tǒng)設(shè)計、詳細設(shè)計、編碼和測試)、軟件維護期(即運行維護階段)。

22.282,8解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán)。這里程序初始時a=1,b=10,經(jīng)過操作b-=a;a++后b=9,a=2,判斷條件b--<O不成立,退出循環(huán),但b的值被減1,因此結(jié)果為:a=2,b=8。

23.根結(jié)點根結(jié)點

24.11231123解析:在主函數(shù)中第一次調(diào)用func子函數(shù)時,m=0,i=2,i=i+m+1=3,m=i+a+b=3+5+3=11。因為在子函數(shù)中將m和i定義成了static類型,所以在子函數(shù)中對m和i進行的改變,在下一次調(diào)用子函數(shù)時能進行保存,所以第二次調(diào)用子函數(shù)時,m=11,i==3,則i=i+m+1=15,m=i+a+b=15+5+3=23。

25.

解析:該程序功能是實現(xiàn)兩個字符串的連接。本題要把串2連接到串1之后,則需要把串2的第一個字符放到串1的尾符的位置上,把串2的后面的字符放到串1的后面的位置。

26.floatfun(intmintn){inti;doublep=1.0;for(i=1;i<=m;i++)p=p*i;/*求m!*/for(i=1;i<=n;i++)p=p/i;/*求m!/n!*/for(i=1;i<=m-n;i++)p=p/i;/*求m!/(n!(m-n)!)*/returnp;}floatfun(intm,intn)\r\n{\r\ninti;\r\ndoublep=1.0;\r\nfor(i=1;i<=m;i++)p=p*i;/*求m!*/\r\nfor(i=1;i<=n;i++)p=p/i;/*求m!/n!*/\r\nfor(i=1;i<=m-n;i++)p=p/i;/*求m!/(n!(m-n)!)*/\r\nreturnp;\r\n}解析:本題中,欲求P的值,需要先求m,n,m-n的階乘值,可用循環(huán)語句實現(xiàn)。注意階乘值應(yīng)當(dāng)是double類型,若定義x,y,z為整型變量,則p=x/(y*z)中的除法為整數(shù)除法。

27.

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

28.doublefun(doublexintn){inti;doubles=1.0.s1=1.0;for(i=1;i<=n;i++){s1=s1*i;/*各項中的階乘*/s=s+pow(xi)/s1;/*按公式求出*/}returns;}doublefun(doublex,intn)\r\n{\r\ninti;\r\ndoubles=1.0.s1=1.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1*i;/*各項中的階乘*/\r\ns=s+pow(x,i)/s1;/*按公式求出*/\r\n}\r\nreturns;\r\n}解析:本程序中用s1來表示每項的分母(即各項中的階乘),要注意本程

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論