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

下載本文檔

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

文檔簡介

2021-2022學(xué)年山東省臨沂市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.以下不完整的程序擬實現(xiàn)調(diào)用getmax函數(shù),找出4個變量中最大的一個:#include<stdio.h>intgetmax(intx,inty){returnx>yx:y;}voidmain(){inta,b,c,d,mx;scanf(“%d%d%d%d”,&a,&b,&c,&d);printf(“max=%d\n”,________);}以下選項若填入下劃線處,不能實現(xiàn)上述功能的是()。

A.getmax(getmax(getmax(a,b),c),d)

B.getmax(getmax(a,b),getmax(c,d))

C.getmax(a,getmax(b,getmax(c,d)))

D.mx=(getmax(a,b),getmax(c,d))

2.有下列程序: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

3.現(xiàn)有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}則程序的輸出結(jié)果為

A.21B.78C.23D.28

4.以下函數(shù)不能用于向文件中寫入數(shù)據(jù)的是()。

A.hellB.fwriteC.fputcD.fprintf

5.軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機的出現(xiàn)D.計算機的發(fā)展

6.以下能正確定義一維數(shù)組的選項是______。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

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

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

8.下列選項中合法的賦值語句是()。

A.a=b=34B.a=34,b=34C.i-1;D.m=(int)(x+y);

9.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是_______。A.′a′<=c<=′z′

B.(c>=′a′)||(c<=′z′)

C.(′a′=C)

D.(c>=′a′)&&(c<=′z′)

10.若有語句“void*P=malloc(80);”,則以下敘述錯誤的是()。

A.可以通過指針P直接訪問用malloc開辟的這塊內(nèi)存

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

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

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

11.以下選項中不屬于c語言的類型的是()。

A.unsignedlongint

B.longshort

C.unsignedint

D.signedshortint

12.下面程序段的時間復(fù)雜度為()。

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

二、2.填空題(12題)13.以下程序運行后的輸出結(jié)果是【】。

#include<stdio.h>

main()

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

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

14.按照“先進先出”的原則組織數(shù)據(jù)的結(jié)構(gòu)是______。

15.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。

c=(a-=(b-5));

c=(a%11)+(b=3);

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

#include<string.h>

typedefstructstudent{

charname[10];

longsno;

floatscore;

}STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},

c={"Anhua",2003,95},d,*p-&d;

d=a;

if{strcmp(a.nalne,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%ld%s\n",d.sno,p>name};

}

17.在C語言中(以16位PC機為例),一個float型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為4;一個double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為【】。

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

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

19.以下程序中函數(shù)huiwen的功能是檢查一個寧符串是否是回文,當(dāng)字符串是回文時,函數(shù)返回字符串:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請?zhí)羁誣_____。

#include<string.h>

chat*huiwen(chat*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;break;}

if(!t或t!=0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

printf("%s\n",huiwen(str));

}

20.函數(shù)pi的功能是根據(jù)以下公式近似求得的:

pi*pi/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)

請在下面的函數(shù)中填空,完成求pi的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0,longi;

for(i=1;i<=n;i++)s=s+【】。

return(sqrt(6*s));

}

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

main()

{inti=0,j=10,k=2,s=0;

{i+=k;

if(i>j)

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

break;}

s+=i;}}

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

intf(inta[],intn)

{

if(n>=l)

returnf(a,n-1)+a[n-1];

else

return0;

}

main{)

{

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);

printf{'%d\n",s);

}

23.在面向?qū)ο蠓椒ㄖ?,類的實例稱為______。

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

main()

{chars[12]="verygood!";

printf("%d",strlen(s));

}

三、3.程序設(shè)計題(10題)25.請編寫程序fun,函數(shù)的功能是:實現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計算結(jié)果在main函數(shù)中輸出。

例如,輸入下面的矩陣:其轉(zhuǎn)置矩陣為:

123147

456258

789369

程序輸出:

2610

61014

101418

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

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

26.程序定義了NxN的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun,函數(shù)的功能是:使數(shù)組右上三角元素中的值乘以m。

例如:若m的值為2,a數(shù)組中的值為:

注意:部分源程序存在文件PROGl.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

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

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

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

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

28.請編寫函數(shù)fun(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。

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

33333333

44444444

55555555

則一維數(shù)組中的內(nèi)容應(yīng)該是33333333444444AA,55555555

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

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

試題程序:

#include<stdio.h>

voidfun(int(*s)[10],int*b,int*n,

intmm,intnn)

{

}

main()

{

intw[10][10]={{33,33,33,33},{44,44,

44,44},{55,55,55,55}},i,j;

inta[100]={0},n=0;

printf("Thematrix:\n");

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

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

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

printf("\n");

}

fun(w,a,&n,3,4);

printf("TheAarray:In");

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

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

printf("\n\n");

}

29.請編寫函數(shù)voidfun(intx,intpp[],int*n),它的功能是求出能整除x且不是奇數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。

例如,若x中的值為24,則有6個數(shù)符合要求,它們是2,4,6,8,12,24。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(intx,intPP[],int*n)

{

}

main()

{

intx,aa[1000],n,i;

clrscr();

printf("\nPleaseenteranintegernumber:

\n");

scanf("%d",&X);

fun(x,aa,&n);

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

printf("%d",aa[i]);

printf("\n");

}

30.編寫函數(shù)fun(),函數(shù)的功能是:根據(jù)以下公式計算s,計算結(jié)果作為函數(shù)值返回;n通過形參傳入。

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

例如:若n的值為11時,函數(shù)的值為1.833333。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

floatfun(intn)

{

}

main()

{

intn;

floats;

clrscr();

printf("\nPleaseenterN:");

scanf("%d",&n);

s=fun(n);

printf("Theresultis:%f\n",s);

}

31.請編寫一個函數(shù),函數(shù)的功能是刪除字符串中的所有空格。

例如,主函數(shù)中輸入“asdafaaz67”,則輸出為“asdafaaz67”。

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

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

32.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。

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

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

33.編寫程序,實現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)。

例如,若輸入下面的矩陣:

100200300

400500600

700800900

則程序輸出:

100400700

200500800

300600900

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

intfun(intarray[3][3])

{

}

main()

{

inti,j;

intarray[3][3]={{100,200,300},{400,

500,600},{700,800,900}};

clrscr();

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

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

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

printf("\n");

}

fun(array);

printf("Convertedarray:\n");

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

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

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

printf("\n");

}

}

34.請編寫函數(shù)fun(),其功能是:計算并輸出給定10個數(shù)的方差。

其中

例如,給定的10個數(shù)為95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,則輸出為S=11.730729。

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

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

試題程序:

#include<math.h>

#include<stdio.h>

doublefun(doublex[10])

{

}

main()

{

doubles,x[i0]={95.0,89.0,76.0,65.0,

88.0,72.0,85.0,81.0,90.0,56.0};

inti;

printf("\nTheoriginaldatais:\n");

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

printf("%6.1f",x[i]);

printf("\n\n");

s=fun(x);

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

}

四、單選題(0題)35.軟件詳細(xì)設(shè)計生產(chǎn)的圖如右圖:該圖是()。

A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

五、單選題(0題)36.有下列程序段:intn,t=1,S=0;scanf("%d",&n);do{s=s+t;t=t-2;while(t!=n);為使此程序段不陷入循環(huán),從鍵盤輸入的數(shù)據(jù)應(yīng)該是()。A.任意正奇數(shù)B.任意負(fù)偶數(shù)C.任意正偶數(shù)D.任意負(fù)奇數(shù)

六、單選題(0題)37.

參考答案

1.Dgetmax函數(shù)接收兩個整型變量x、y,使用條件運算符返回x和y中的較大值。main函數(shù)首先輸入a、b、c、d4個整數(shù)值,然后通過調(diào)用getmax函數(shù),輸出它們的最大值。假設(shè)x、y是整數(shù),選項A中,首先執(zhí)行“getmax(a,b)”,返回a、b中的較大值X,再執(zhí)行“getmax(x,c)”,返回x、c中的較大值y,最后執(zhí)行“getmax(y,d)”,返回y、d中的較大值,滿足題意,正確;選項B中,首先執(zhí)行“getmax(a,b)”,返回a、b的較大值X,再執(zhí)行“getmax(c,d)”,返回c、d中的較大值y,最后執(zhí)行“getmax(x,y)”,返回x、y中的較大值,正確;選項C中,首先執(zhí)行“getmax(c,d)”,返回c、d的較大值X,再執(zhí)行“getmax(b,x)”,返回b、x中的較大值y,最后執(zhí)行“getmax(a,y)”,返回a、y中的較大值,正確;選項D中,首先執(zhí)行“getmax(a,b)”,返回a、b的較大值X,再執(zhí)行“getmax(c,d)”,返回c、d中的較大值y,最后執(zhí)行逗號表達(dá)式“(x,y)”,返回值為7,不滿足題意。故本題答案為D選項。

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

3.A解析:通過地址來引用二維數(shù)組,若有以下定義:inta[3][4],i,j;且當(dāng)0≤i≤3,0≤j<4則可以有以下幾種方式來引用數(shù)組中的第i行,第j列的元素:\ue008a[i][j]\ue009,\ue008*(a[i]+j),\ue009*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表達(dá)式&a[0][0]+2*i+j-2相當(dāng)于是地址&a[0][0]加上多少偏移量。

4.Aftell是返回文件當(dāng)前指針。

5.C解析:軟件工程的基本概念。軟件工程概念的出現(xiàn)源自于軟件危機。為了消除軟件危機,通過認(rèn)真研究解決軟件危機的方法,認(rèn)識到軟件工程是使計算機軟件走向工程科學(xué)的途徑,逐步形成了軟件工程的概念。

6.B解析:選項A)定義的是長度為5的數(shù)組元素,但初值有6個元素,所以錯誤;選項C)不符合數(shù)組定義形式,數(shù)組名后應(yīng)加上“[];選項D)的類型說明符錯誤,應(yīng)改為char;選項B)中的0,1,2,3,4,5分別表示對應(yīng)字符的ASCII碼,所以正確。

7.C解析:只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句。當(dāng)break出現(xiàn)在循環(huán)體的switch語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設(shè)置break語句,滿足某種條件,則跳出本層循環(huán)體。

8.D解析:選項A)是一個合法的賦值表達(dá)式,但結(jié)尾沒加分號,所以它不是一個賦值語句;選項B)是一個逗號表達(dá)式,也因為結(jié)尾沒有加分號而不是合法的賦值語句,選項C)是一個算術(shù)表達(dá)式,雖然有分號,但這個表達(dá)式?jīng)]有賦值操作,因此,也不是一條賦值語句。

9.D

10.A題干中使用malloc函數(shù)分配了80個字節(jié)的內(nèi)存單元,void指針p指向該內(nèi)存單元。在C語言中,void*不能直接使用,必須利用強制類型轉(zhuǎn)換將其轉(zhuǎn)成所需的類型才能使用,選項A錯誤。int類型的元素占4個字節(jié),所以可以將p指向的內(nèi)存強制類型轉(zhuǎn)換成具有20個int類型的一維數(shù)組來使用,同理,也可以強制類型轉(zhuǎn)換成10個double類型的一維數(shù)組來使用,或強制類型轉(zhuǎn)換成80個char類型的一維數(shù)組來使用,選項B、C、D正確。故本題答案為A選項。

11.Bc語言中整型變量分為4種,基本型int,短整型shortint,長整型longint和無符號型(unsignedint、un-signedshort、unsignedlong)。因此B)選項不屬于c語言的類型。

12.A

13.yesyes解析:程序if語句中是賦值表達(dá)式,而不是相等“==”運算。因為c=a+b中a+b的值為4,賦給c,c=4,表達(dá)式為真,輸出yes。

14.隊列隊列解析:隊列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊尾”,刪除元素的一端叫做“隊頭”,先插入的元素先被刪除,是按先進先出的原則組織數(shù)據(jù)的。

15.33解析:這里:b-5=4,a-=4之后a的值為6,并把它賦給c。此時b的值并未被改變。在第2個表達(dá)式中,也只有賦值表達(dá)式b=3改變了b的值。所以兩行語句執(zhí)行完畢,b的值應(yīng)該為3。

16.2002Shangxian2002Shangxian解析:本題考核的知識點是結(jié)構(gòu)體類型的定義、賦初值以及字符串的比較。本題中首先定義一個結(jié)構(gòu)體類型STU,鎮(zhèn)結(jié)構(gòu)體由一個長度為10的字符型數(shù)組、一個long型變量和一個float型變量組成。接著在主函數(shù)中用STU定義了4個結(jié)構(gòu)體變量a、b、c、d,并且給a、b、c賦初值,然后定義?一個結(jié)構(gòu)體指針p,并讓它指向變量d。然后讓將變量a的值賦給變量d,接著通過兩個if語句比較結(jié)構(gòu)體變量a、b、c的成員name大小。第一個訂語句將結(jié)構(gòu)體變量和結(jié)構(gòu)體變量中較小的那個賦值給結(jié)構(gòu)體變量d,第二個if語句將結(jié)構(gòu)體變量和結(jié)構(gòu)體變量較大的那個賦給結(jié)構(gòu)體變量d。比較通過函數(shù)strcmp實現(xiàn)。strcmp()函數(shù)有兩個參數(shù),分別為被比較的兩個字符串。如果第一個字符串大于第二個字符串返回值大于0,若第一個小于第二個返回值小于0,相等時返回值為0。字符串比較大小的標(biāo)準(zhǔn)是從第一個字符開始依次向右比較,遇到某一個字符大,該字符所在的字符串就是較大的字符串,如果遇到某一個字符小,該字符所在的字符串就是較小的字符串。程序中第一個if語句strcmp(,)>0為真,故將b的值賦給d;第二個if語句strcmp()>0為假,故不執(zhí)行后面的語句,最后d的值為b的值,因此輸出d.sn0和p->name的值為2002Shangxian

17.88解析:在一般系統(tǒng)中,一個float型數(shù)據(jù)在內(nèi)存中占4個字節(jié)(32位),一個double型數(shù)據(jù)占8個字節(jié)。

18.852852解析:循環(huán)前,變量y的值為9,其中的循環(huán)語句在y大于0情況下循環(huán),每次循環(huán)后y的值減1。循環(huán)體是當(dāng)y能被3整除時輸出表達(dá)式--y,輸出的是減1后的y值。這樣,第一次循環(huán)因y為9,能被3整除,輸出8,y也變成8。又經(jīng)兩次循環(huán),y的值變?yōu)?,又讓y減1變成5,并輸出5;又經(jīng)兩次循環(huán),y的值變成3,讓y減1變成2,輸出2;再經(jīng)兩次循環(huán)后,y的值變成0,結(jié)束循環(huán)。所以程序輸出852。

19.str+strlen(str)-1str+strlen(str)-1解析:先從main函數(shù)開始看,它先讀入字符串,接下來肯定是要判斷這個字符串是否是回文,冉看huiwen函數(shù),它的主要思想是用p1指向字符串的首地址,p2指向字符串的尾地址(不包括結(jié)束符‘/0‘),將p1左移,p2右移,直到這兩個指針相遇,如果在移動過程中發(fā)現(xiàn)p1!=p2,則該字符串不是回文,否則其是同文。因此。在空中填str+strlen(str)-1。

20.0/i/i或1.0/(i*i)0/i/i或1.0/(i*i)解析:由題面中提供的計算pi的公式可知;在第i項其值為1/(i*i),考慮到運算結(jié)果為浮點數(shù),故必須要將1轉(zhuǎn)化為浮點數(shù)或采用1.0/(i*i)的形式。故本題應(yīng)填1.0/(i*i)或其等效形式。

21.

22.1515解析:在函數(shù)f()中只有一條if語句,如果n不小于1,則返回f(a,n-1)+a[n-1);,否則返回0。所以f(aa,5)返回f(aa,4)+aa[4],而f(aa,4)返回f(aa,3)+aa[3]……直到f(aa,0)返回0.故f(aa,5)實際返回值是0+aa[1]+aa[2]+aa[3]+aa[4]+aa[5],所以本題最終輸出15。

23.對象對象解析:類描述的是具有相似性質(zhì)的一組對象。例如,每本具體的書是一個對象,而這些具體的書都有共同的性質(zhì),它們都屬于更一般的概念“書”這一類對象。一個具體對象稱為類的實例。

24.1010解析:strlen(s)函數(shù)的返回值為字符串s包含的字符個數(shù)<不計最后的'\\0')。

25.

解析:該程序功能是實現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置。其中,所謂矩陣的轉(zhuǎn)置,是把行中的數(shù)據(jù)與列中的數(shù)據(jù)進行對調(diào)。解題過程中首先求得已給的矩陣的轉(zhuǎn)置,然后在循環(huán)過程中對矩陣與該矩陣的轉(zhuǎn)置對應(yīng)元素求和。

26.

解析:該程序功能是使數(shù)組右上半三角元素中的值乘以m。本題中首先要確定右上角半角元素的特點,然后對元素逐個進行乘以m的操作。其中,右上角的元素是行下標(biāo)小于等于列下標(biāo)的元素。

27.

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

28.voidfun(int(*s)[10]int*bint*nintmmintnn){intijk=0;for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次放到一維數(shù)組b中*/for(j=0;j<nn;j++)b[k++]=s[i][j];/*通過指針返回元素個數(shù)*/*n=k}voidfun(int(*s)[10],int*b,int*n,intmm,intnn)\r\n{\r\ninti,j,k=0;\r\nfor(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次放到一維數(shù)組b中*/\r\nfor(j=0;j<nn;j++)\r\nb[k++]=s[i][j];/*通過指針返回元素個數(shù)*/\r\n*n=k\r\n}解析:我們可以用兩個循環(huán)來處理問題,由于是按行的順序取出,所以第1個循環(huán)用于控制行下標(biāo),第2個循環(huán)用于控制列下標(biāo);若改成按列的順序取出,則循環(huán)應(yīng)改成:

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

for(j=0;i<mm;j++)

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

要注意s[j][i]的下標(biāo),不能用s[i][j]。

若按行取出則列標(biāo)變化最快,若按列取出則行標(biāo)變化最快。再根據(jù)循環(huán)嵌套時,越在內(nèi)層的循環(huán),其循環(huán)變量變化就越快。上題程序中只有當(dāng)j從頭到尾變化完時,i才變化一次(即加1);由于二數(shù)組的第1個下標(biāo)為行下標(biāo),第2個下標(biāo)為列下標(biāo),所以第1個程序列變化最快、第2個程序行變化最快。

29.voidfun(intxintpp[]int*n){intij=0for(i=2;i<=x;i=i+2)/*i的初始值為2步長為2確保i為偶數(shù)*/if(x%i==0)/*將能整除x的數(shù)存入數(shù)細(xì)pp中*/pp[j++]=i*n=j/*傳回滿足條件的數(shù)的個數(shù)*/}voidfun(intx,intpp[],int*n)\r\n{\r\ninti,j=0\r\nfor(i=2;i<=x;i=i+2)/*i的初始值為2,步長為2,確保i為偶數(shù)*/\r\nif(x%i==0)/*將能整除x的數(shù)存入數(shù)細(xì)pp中*/\r\npp[j++]=i\r\n*n=j/*傳回滿足條件的數(shù)的個數(shù)*/\r\n}解析:本題題干信息是;能整除x且不是奇數(shù)的所有整數(shù)。循環(huán)語句中i從2開始且每次增2,所以i始終是偶數(shù)。

30.floatfun(intn){intis1=0;floats=0.0;for(i=1;i<=n;i++){s1=s1+i;/*求每一項的分母*/s=s+1.0/s1;/*求多項式的值*/}returns;}floatfun(intn)\r\n{\r\ninti,s1=0;\r\nfloats=0.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1+i;/*求每一項的分母*/\r\ns=s+1.0/s1;/*求多項式的值*/\r\n}\r\nreturns;\r\n}解析:本題中用s1來表示式中每一項的分母,而每一項的分母都是其前一項分母加項數(shù)。注意由于s1定義成一個整型,所以在s=s+1.0/s1中不能把1.0寫成1。

31.

解析:該程序功能是刪除字符串中的所有空格。本題的解題思路是首先利用一個指向字符串的指針,查找不是空格的字符,然后將不是空格的字符賦值到字符串,如果是空格,則跳過該字符,這樣就實現(xiàn)了空格字符的刪除。

32.

解析:該程序功能是將字符串尾部的“*”號全部刪除,前面和中間的“*”號不刪除。本題的解題過程首先確定由串尾開始的第一個非“*”位置,將由頭開始到此位置的字符拷貝到字符串。

33.intfun(intarray[3][3]){intijt;for(i=0;i<3;i++)/*將右上三角和左下三角對換實現(xiàn)行列互換*/for(j=i+1;j<3;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}}intfun(intarray[3][3])\r\n{\r\ninti,j,t;\r\nfor(i=0;i<3;i++)/*將右上三角和左下三角對換,實現(xiàn)行列互換*/\r\nfor(j=i+1;j<3;j++)\r\n{t=array[i][j];\r\narray[i][j]=array[j][i];\r\narray[j][i]=t;\r\n}\r\n}解析:注意對矩陣轉(zhuǎn)置后仍然存回其本身時,只能循環(huán)矩陣中的一個角(本程序是右上半三角)??刂朴疑习肴堑姆椒ㄊ窃诘?個循環(huán)中j從i+1或i開始,左下半三角的方法是在第2個循環(huán)中寫成for(j=0;j<i;j++),若要控制所有元素在第2個循環(huán)要寫成for(j=0;j<3;j++)。

34.doublefun(doublex[10]){doublexl=0.0s=0.0;inti;for(i=0;i<10;i++)xl=xl+x[i];xl-xl/10;/*求10個數(shù)的平均值*/for(i=0;i<l0;i++)s=s+(x[i]-xl)*(x[i]-x1);returnsqrt(s/l0);/*求10個數(shù)的方差*/}doublefun(doublex[10])\r\n{\r\ndoublexl=0.0,s=0.0;\r\ninti;\r\nfor(i=0;i<10;i++)\r\nxl=xl+x[i];\r\nxl-xl/10;\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000/*求10個數(shù)的平均值*/\r\nfor(i=0;i<l0;i++)\r\ns=s+(x[i]-xl)*(x[i]-x1);\r\nreturnsqrt(s/l0);\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000/*求10個數(shù)的方差*/\r\n}解析:又是一道算式表達(dá)題,程序中用第1個循環(huán)來完成求10個數(shù)的總和,接著再用x1=x1/10來求出平均值。

35.CN—s圖提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,所以A不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細(xì)設(shè)計的圖形表示工具,所以8不對。E—R圖是數(shù)據(jù)庫中的用于表示E—R模型的圖示工具,所以D不對。根據(jù)圖中所示表示方法是進行軟件詳細(xì)設(shè)計時使用的程序流程圖。

36.D本題主要考查do—while循環(huán),因為變量t的初始值等于1,經(jīng)過第一次do-while循環(huán)后,執(zhí)行t=t-1這條語句一次,所以變量t的值為-1,判斷關(guān)系表達(dá)式t!=n是否成立,如果關(guān)系表達(dá)式成立,則執(zhí)行第二次循環(huán),如果關(guān)系表達(dá)式不成立,退出循環(huán)。由此可見,只要輸入變量n的值為負(fù)奇數(shù),則一定會使t==n成立,故退出do-while循環(huán)。

37.C

2021-2022學(xué)年山東省臨沂市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.以下不完整的程序擬實現(xiàn)調(diào)用getmax函數(shù),找出4個變量中最大的一個:#include<stdio.h>intgetmax(intx,inty){returnx>yx:y;}voidmain(){inta,b,c,d,mx;scanf(“%d%d%d%d”,&a,&b,&c,&d);printf(“max=%d\n”,________);}以下選項若填入下劃線處,不能實現(xiàn)上述功能的是()。

A.getmax(getmax(getmax(a,b),c),d)

B.getmax(getmax(a,b),getmax(c,d))

C.getmax(a,getmax(b,getmax(c,d)))

D.mx=(getmax(a,b),getmax(c,d))

2.有下列程序: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

3.現(xiàn)有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}則程序的輸出結(jié)果為

A.21B.78C.23D.28

4.以下函數(shù)不能用于向文件中寫入數(shù)據(jù)的是()。

A.hellB.fwriteC.fputcD.fprintf

5.軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機的出現(xiàn)D.計算機的發(fā)展

6.以下能正確定義一維數(shù)組的選項是______。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

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

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

8.下列選項中合法的賦值語句是()。

A.a=b=34B.a=34,b=34C.i-1;D.m=(int)(x+y);

9.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是_______。A.′a′<=c<=′z′

B.(c>=′a′)||(c<=′z′)

C.(′a′=C)

D.(c>=′a′)&&(c<=′z′)

10.若有語句“void*P=malloc(80);”,則以下敘述錯誤的是()。

A.可以通過指針P直接訪問用malloc開辟的這塊內(nèi)存

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

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

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

11.以下選項中不屬于c語言的類型的是()。

A.unsignedlongint

B.longshort

C.unsignedint

D.signedshortint

12.下面程序段的時間復(fù)雜度為()。

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

二、2.填空題(12題)13.以下程序運行后的輸出結(jié)果是【】。

#include<stdio.h>

main()

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

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

14.按照“先進先出”的原則組織數(shù)據(jù)的結(jié)構(gòu)是______。

15.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。

c=(a-=(b-5));

c=(a%11)+(b=3);

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

#include<string.h>

typedefstructstudent{

charname[10];

longsno;

floatscore;

}STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},

c={"Anhua",2003,95},d,*p-&d;

d=a;

if{strcmp(a.nalne,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%ld%s\n",d.sno,p>name};

}

17.在C語言中(以16位PC機為例),一個float型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為4;一個double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為【】。

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

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

19.以下程序中函數(shù)huiwen的功能是檢查一個寧符串是否是回文,當(dāng)字符串是回文時,函數(shù)返回字符串:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請?zhí)羁誣_____。

#include<string.h>

chat*huiwen(chat*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;break;}

if(!t或t!=0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

printf("%s\n",huiwen(str));

}

20.函數(shù)pi的功能是根據(jù)以下公式近似求得的:

pi*pi/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)

請在下面的函數(shù)中填空,完成求pi的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0,longi;

for(i=1;i<=n;i++)s=s+【】。

return(sqrt(6*s));

}

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

main()

{inti=0,j=10,k=2,s=0;

{i+=k;

if(i>j)

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

break;}

s+=i;}}

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

intf(inta[],intn)

{

if(n>=l)

returnf(a,n-1)+a[n-1];

else

return0;

}

main{)

{

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);

printf{'%d\n",s);

}

23.在面向?qū)ο蠓椒ㄖ?,類的實例稱為______。

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

main()

{chars[12]="verygood!";

printf("%d",strlen(s));

}

三、3.程序設(shè)計題(10題)25.請編寫程序fun,函數(shù)的功能是:實現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計算結(jié)果在main函數(shù)中輸出。

例如,輸入下面的矩陣:其轉(zhuǎn)置矩陣為:

123147

456258

789369

程序輸出:

2610

61014

101418

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

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

26.程序定義了NxN的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun,函數(shù)的功能是:使數(shù)組右上三角元素中的值乘以m。

例如:若m的值為2,a數(shù)組中的值為:

注意:部分源程序存在文件PROGl.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

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

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

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

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

28.請編寫函數(shù)fun(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。

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

33333333

44444444

55555555

則一維數(shù)組中的內(nèi)容應(yīng)該是33333333444444AA,55555555

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

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

試題程序:

#include<stdio.h>

voidfun(int(*s)[10],int*b,int*n,

intmm,intnn)

{

}

main()

{

intw[10][10]={{33,33,33,33},{44,44,

44,44},{55,55,55,55}},i,j;

inta[100]={0},n=0;

printf("Thematrix:\n");

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

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

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

printf("\n");

}

fun(w,a,&n,3,4);

printf("TheAarray:In");

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

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

printf("\n\n");

}

29.請編寫函數(shù)voidfun(intx,intpp[],int*n),它的功能是求出能整除x且不是奇數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。

例如,若x中的值為24,則有6個數(shù)符合要求,它們是2,4,6,8,12,24。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(intx,intPP[],int*n)

{

}

main()

{

intx,aa[1000],n,i;

clrscr();

printf("\nPleaseenteranintegernumber:

\n");

scanf("%d",&X);

fun(x,aa,&n);

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

printf("%d",aa[i]);

printf("\n");

}

30.編寫函數(shù)fun(),函數(shù)的功能是:根據(jù)以下公式計算s,計算結(jié)果作為函數(shù)值返回;n通過形參傳入。

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

例如:若n的值為11時,函數(shù)的值為1.833333。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

floatfun(intn)

{

}

main()

{

intn;

floats;

clrscr();

printf("\nPleaseenterN:");

scanf("%d",&n);

s=fun(n);

printf("Theresultis:%f\n",s);

}

31.請編寫一個函數(shù),函數(shù)的功能是刪除字符串中的所有空格。

例如,主函數(shù)中輸入“asdafaaz67”,則輸出為“asdafaaz67”。

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

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

32.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。

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

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

33.編寫程序,實現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)。

例如,若輸入下面的矩陣:

100200300

400500600

700800900

則程序輸出:

100400700

200500800

300600900

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

intfun(intarray[3][3])

{

}

main()

{

inti,j;

intarray[3][3]={{100,200,300},{400,

500,600},{700,800,900}};

clrscr();

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

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

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

printf("\n");

}

fun(array);

printf("Convertedarray:\n");

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

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

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

printf("\n");

}

}

34.請編寫函數(shù)fun(),其功能是:計算并輸出給定10個數(shù)的方差。

其中

例如,給定的10個數(shù)為95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,則輸出為S=11.730729。

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

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

試題程序:

#include<math.h>

#include<stdio.h>

doublefun(doublex[10])

{

}

main()

{

doubles,x[i0]={95.0,89.0,76.0,65.0,

88.0,72.0,85.0,81.0,90.0,56.0};

inti;

printf("\nTheoriginaldatais:\n");

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

printf("%6.1f",x[i]);

printf("\n\n");

s=fun(x);

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

}

四、單選題(0題)35.軟件詳細(xì)設(shè)計生產(chǎn)的圖如右圖:該圖是()。

A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

五、單選題(0題)36.有下列程序段:intn,t=1,S=0;scanf("%d",&n);do{s=s+t;t=t-2;while(t!=n);為使此程序段不陷入循環(huán),從鍵盤輸入的數(shù)據(jù)應(yīng)該是()。A.任意正奇數(shù)B.任意負(fù)偶數(shù)C.任意正偶數(shù)D.任意負(fù)奇數(shù)

六、單選題(0題)37.

參考答案

1.Dgetmax函數(shù)接收兩個整型變量x、y,使用條件運算符返回x和y中的較大值。main函數(shù)首先輸入a、b、c、d4個整數(shù)值,然后通過調(diào)用getmax函數(shù),輸出它們的最大值。假設(shè)x、y是整數(shù),選項A中,首先執(zhí)行“getmax(a,b)”,返回a、b中的較大值X,再執(zhí)行“getmax(x,c)”,返回x、c中的較大值y,最后執(zhí)行“getmax(y,d)”,返回y、d中的較大值,滿足題意,正確;選項B中,首先執(zhí)行“getmax(a,b)”,返回a、b的較大值X,再執(zhí)行“getmax(c,d)”,返回c、d中的較大值y,最后執(zhí)行“getmax(x,y)”,返回x、y中的較大值,正確;選項C中,首先執(zhí)行“getmax(c,d)”,返回c、d的較大值X,再執(zhí)行“getmax(b,x)”,返回b、x中的較大值y,最后執(zhí)行“getmax(a,y)”,返回a、y中的較大值,正確;選項D中,首先執(zhí)行“getmax(a,b)”,返回a、b的較大值X,再執(zhí)行“getmax(c,d)”,返回c、d中的較大值y,最后執(zhí)行逗號表達(dá)式“(x,y)”,返回值為7,不滿足題意。故本題答案為D選項。

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

3.A解析:通過地址來引用二維數(shù)組,若有以下定義:inta[3][4],i,j;且當(dāng)0≤i≤3,0≤j<4則可以有以下幾種方式來引用數(shù)組中的第i行,第j列的元素:\ue008a[i][j]\ue009,\ue008*(a[i]+j),\ue009*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表達(dá)式&a[0][0]+2*i+j-2相當(dāng)于是地址&a[0][0]加上多少偏移量。

4.Aftell是返回文件當(dāng)前指針。

5.C解析:軟件工程的基本概念。軟件工程概念的出現(xiàn)源自于軟件危機。為了消除軟件危機,通過認(rèn)真研究解決軟件危機的方法,認(rèn)識到軟件工程是使計算機軟件走向工程科學(xué)的途徑,逐步形成了軟件工程的概念。

6.B解析:選項A)定義的是長度為5的數(shù)組元素,但初值有6個元素,所以錯誤;選項C)不符合數(shù)組定義形式,數(shù)組名后應(yīng)加上“[];選項D)的類型說明符錯誤,應(yīng)改為char;選項B)中的0,1,2,3,4,5分別表示對應(yīng)字符的ASCII碼,所以正確。

7.C解析:只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句。當(dāng)break出現(xiàn)在循環(huán)體的switch語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設(shè)置break語句,滿足某種條件,則跳出本層循環(huán)體。

8.D解析:選項A)是一個合法的賦值表達(dá)式,但結(jié)尾沒加分號,所以它不是一個賦值語句;選項B)是一個逗號表達(dá)式,也因為結(jié)尾沒有加分號而不是合法的賦值語句,選項C)是一個算術(shù)表達(dá)式,雖然有分號,但這個表達(dá)式?jīng)]有賦值操作,因此,也不是一條賦值語句。

9.D

10.A題干中使用malloc函數(shù)分配了80個字節(jié)的內(nèi)存單元,void指針p指向該內(nèi)存單元。在C語言中,void*不能直接使用,必須利用強制類型轉(zhuǎn)換將其轉(zhuǎn)成所需的類型才能使用,選項A錯誤。int類型的元素占4個字節(jié),所以可以將p指向的內(nèi)存強制類型轉(zhuǎn)換成具有20個int類型的一維數(shù)組來使用,同理,也可以強制類型轉(zhuǎn)換成10個double類型的一維數(shù)組來使用,或強制類型轉(zhuǎn)換成80個char類型的一維數(shù)組來使用,選項B、C、D正確。故本題答案為A選項。

11.Bc語言中整型變量分為4種,基本型int,短整型shortint,長整型longint和無符號型(unsignedint、un-signedshort、unsignedlong)。因此B)選項不屬于c語言的類型。

12.A

13.yesyes解析:程序if語句中是賦值表達(dá)式,而不是相等“==”運算。因為c=a+b中a+b的值為4,賦給c,c=4,表達(dá)式為真,輸出yes。

14.隊列隊列解析:隊列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊尾”,刪除元素的一端叫做“隊頭”,先插入的元素先被刪除,是按先進先出的原則組織數(shù)據(jù)的。

15.33解析:這里:b-5=4,a-=4之后a的值為6,并把它賦給c。此時b的值并未被改變。在第2個表達(dá)式中,也只有賦值表達(dá)式b=3改變了b的值。所以兩行語句執(zhí)行完畢,b的值應(yīng)該為3。

16.2002Shangxian2002Shangxian解析:本題考核的知識點是結(jié)構(gòu)體類型的定義、賦初值以及字符串的比較。本題中首先定義一個結(jié)構(gòu)體類型STU,鎮(zhèn)結(jié)構(gòu)體由一個長度為10的字符型數(shù)組、一個long型變量和一個float型變量組成。接著在主函數(shù)中用STU定義了4個結(jié)構(gòu)體變量a、b、c、d,并且給a、b、c賦初值,然后定義?一個結(jié)構(gòu)體指針p,并讓它指向變量d。然后讓將變量a的值賦給變量d,接著通過兩個if語句比較結(jié)構(gòu)體變量a、b、c的成員name大小。第一個訂語句將結(jié)構(gòu)體變量和結(jié)構(gòu)體變量中較小的那個賦值給結(jié)構(gòu)體變量d,第二個if語句將結(jié)構(gòu)體變量和結(jié)構(gòu)體變量較大的那個賦給結(jié)構(gòu)體變量d。比較通過函數(shù)strcmp實現(xiàn)。strcmp()函數(shù)有兩個參數(shù),分別為被比較的兩個字符串。如果第一個字符串大于第二個字符串返回值大于0,若第一個小于第二個返回值小于0,相等時返回值為0。字符串比較大小的標(biāo)準(zhǔn)是從第一個字符開始依次向右比較,遇到某一個字符大,該字符所在的字符串就是較大的字符串,如果遇到某一個字符小,該字符所在的字符串就是較小的字符串。程序中第一個if語句strcmp(,)>0為真,故將b的值賦給d;第二個if語句strcmp()>0為假,故不執(zhí)行后面的語句,最后d的值為b的值,因此輸出d.sn0和p->name的值為2002Shangxian

17.88解析:在一般系統(tǒng)中,一個float型數(shù)據(jù)在內(nèi)存中占4個字節(jié)(32位),一個double型數(shù)據(jù)占8個字節(jié)。

18.852852解析:循環(huán)前,變量y的值為9,其中的循環(huán)語句在y大于0情況下循環(huán),每次循環(huán)后y的值減1。循環(huán)體是當(dāng)y能被3整除時輸出表達(dá)式--y,輸出的是減1后的y值。這樣,第一次循環(huán)因y為9,能被3整除,輸出8,y也變成8。又經(jīng)兩次循環(huán),y的值變?yōu)?,又讓y減1變成5,并輸出5;又經(jīng)兩次循環(huán),y的值變成3,讓y減1變成2,輸出2;再經(jīng)兩次循環(huán)后,y的值變成0,結(jié)束循環(huán)。所以程序輸出852。

19.str+strlen(str)-1str+strlen(str)-1解析:先從main函數(shù)開始看,它先讀入字符串,接下來肯定是要判斷這個字符串是否是回文,冉看huiwen函數(shù),它的主要思想是用p1指向字符串的首地址,p2指向字符串的尾地址(不包括結(jié)束符‘/0‘),將p1左移,p2右移,直到這兩個指針相遇,如果在移動過程中發(fā)現(xiàn)p1!=p2,則該字符串不是回文,否則其是同文。因此。在空中填str+strlen(str)-1。

20.0/i/i或1.0/(i*i)0/i/i或1.0/(i*i)解析:由題面中提供的計算pi的公式可知;在第i項其值為1/(i*i),考慮到運算結(jié)果為浮點數(shù),故必須要將1轉(zhuǎn)化為浮點數(shù)或采用1.0/(i*i)的形式。故本題應(yīng)填1.0/(i*i)或其等效形式。

21.

22.1515解析:在函數(shù)f()中只有一條if語句,如果n不小于1,則返回f(a,n-1)+a[n-1);,否則返回0。所以f(aa,5)返回f(aa,4)+aa[4],而f(aa,4)返回f(aa,3)+aa[3]……直到f(aa,0)返回0.故f(aa,5)實際返回值是0+aa[1]+aa[2]+aa[3]+aa[4]+aa[5],所以本題最終輸出15。

23.對象對象解析:類描述的是具有相似性質(zhì)的一組對象。例如,每本具體的書是一個對象,而這些具體的書都有共同的性質(zhì),它們都屬于更一般的概念“書”這一類對象。一個具體對象稱為類的實例。

24.1010解析:strlen(s)函數(shù)的返回值為字符串s包含的字符個數(shù)<不計最后的'\\0')。

25.

解析:該程序功能是實現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置。其中,所謂矩陣的轉(zhuǎn)置,是把行中的數(shù)據(jù)與列中的數(shù)據(jù)進行對調(diào)。解題過程中首先求得已給的矩陣的轉(zhuǎn)置,然后在循環(huán)過程中對矩陣與該矩陣的轉(zhuǎn)置對應(yīng)元素求和。

26.

解析:該程序功能是使數(shù)組右上半三角元素中的值乘以m。本題中首先要確定右上角半角元素的特點,然后對元素逐個進行乘以m的操作。其中,右上角的元素是行下標(biāo)小于等于列下標(biāo)的元素。

27.

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

28.voidfun(int(*s)[10]int*bint*nintmmintnn){intijk=0;for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次放到一維數(shù)組b中*/for(j=0;j<nn;j++)b[k++]=s[i][j];/*通過指針返回元素個數(shù)*/*n=k}voidfun(int(*s)[10],int*b,int*n,intmm,intnn)\r\n{\r\ninti,j,k=0;\r\nfor(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次放到一維數(shù)組b中*/\r\nfor(j=0;j<nn;j++)\r\nb[k++]=s[i][j];

溫馨提示

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

最新文檔

評論

0/150

提交評論