2023年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)_第1頁
2023年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)_第2頁
2023年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)_第3頁
2023年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)_第4頁
2023年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2023年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.若有以下定義,則使指針p指向值為35的數(shù)組元素的語句是______。

inta[10]={14,27,47,29,35,21,49,71},*p;

2.數(shù)據(jù)庫系統(tǒng)在三級模式之間提供了兩層映像,這兩層映像是外模式/模式映像和【】。

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

main()

{

inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{

case0:m++;n++;break;

case10:n++;;break;

default:k++;n++;

}

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

}

4.表達(dá)式pow(2.8,sqrt(float(x)))值的數(shù)據(jù)類型為______型。

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

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

6.測試的目的是暴露錯(cuò)誤,評價(jià)程序的可靠性;而______的目的是發(fā)現(xiàn)錯(cuò)誤的位置并改正錯(cuò)誤。

7.設(shè)i,j,k均是int型變量,則執(zhí)行以下for循環(huán)后,k的值為【】。

for(i=0,j=10;i<=j;i++,j--)

k=i+j;

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

main()

{inta=1,b=2;

a=a+b;b=a-b;a=a-b;

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

}

9.下列程序的運(yùn)行結(jié)果是______。

main()

{inta=1,b=10;

do

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

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

}

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

main()

{

inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

{

if(i==2||==4)continue;

j=0;

do

{

s+=a[i][j];

j++;

}while(j<4);

}

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

}

二、單選題(10題)11.用二分法查找長度為10的、排好序的線性表,查找不成功時(shí),最多需要比較多少次?()

A.3B.4C.5D.6

12.給定數(shù)列(541,132,984,746,518,181,946,314,205,827)按照從小到大的順序排列,采用快速排序(以中間元素518為基準(zhǔn))的第一趟掃描結(jié)果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

13.判斷一個(gè)單向鏈表中是否存在環(huán)的最佳方法是()

A.兩重遍歷B.快慢指針C.路徑記錄D.哈希表輔助

14.對于靜態(tài)表的順序查找法,若在表頭設(shè)置監(jiān)視哨,則正確的查找方式為()A.從第0個(gè)元素往后查找該數(shù)據(jù)元素

B.從第1個(gè)元素往后查找該數(shù)據(jù)元素

C.從第n個(gè)元素往開始前查找該數(shù)據(jù)元素

D.與查找順序無關(guān)

15.若有定義“inta=3,*p=&a,**q=&p;”,則以下敘述中錯(cuò)誤的是()。

A.q是指針變量,*q就是變量a

B.p是指針變量,p指向變量a

C.q指向變量p,所以*q指向變量a

D.*p與**q都代表變量a

16.有以下程序:#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){ case1: switch(y) { case0:a++;break; case1:b++;break; } case2:a++;b++;break; case3:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}程序的運(yùn)行結(jié)果是()。

A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0

17.一個(gè)棧的入棧序列是a,b,c,d,e,f,則棧的不可能的輸出序列為()

A.fedcbB.defbcC.defcbD.abcdef

18.函數(shù)fread(buffer,size,count,fp)中buffer代表的是()。

A.—個(gè)存儲區(qū),存放要讀的數(shù)據(jù)項(xiàng)

B.一個(gè)整數(shù),代表要讀入的數(shù)據(jù)項(xiàng)總數(shù)

C.一個(gè)文件指針,指向要讀的文件

D.—個(gè)指針,指向讀入數(shù)據(jù)要存放的地址

19.存儲以下數(shù)據(jù),占用存儲字節(jié)最多的是()。

A.0B.‘0’C.“0”D.0.0

20.有如下程序該程序的輸出結(jié)果是().A.A.12B.13C.14D.15

三、程序設(shè)計(jì)題(10題)21.使用VC++2010打開考生文件夾下析prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),它的功能是計(jì)算下列級數(shù)和,和值由函數(shù)值返回。例如,當(dāng)n=10,x=0.3時(shí),函數(shù)值為1.349859。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

22.請編寫fun()函數(shù),其功能是:計(jì)算并輸出3~m所有素?cái)?shù)的平方根之和。例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=63.665791。注意:m的值要大于2但不大于l00。部分源程序給出如下。請勿改動main()函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:

23.某學(xué)生的記錄由學(xué)號、8門課成績和平均分組成,學(xué)號和8門課的成績已在主函數(shù)中給出。請編寫proc()函數(shù),它的功能是:求出該學(xué)生的平均分并放在記錄的ave成員中。請自己定義正確的形參。例如,若學(xué)生的成績是65.5,75,88,90,90.5,66,64.5,89.5,則他的平均分應(yīng)當(dāng)是78.625。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

24.請編寫一個(gè)函數(shù)proc(),它的功能是:找出一維數(shù)組元素中最大的值和它所在的下標(biāo),最大值和它所在的下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

主函數(shù)中arr是數(shù)組名,n是arr中的數(shù)據(jù)個(gè)數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。

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

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

試題程序:

25.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按列的順序依次存放到一維數(shù)組中,將一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲單元中。注意:部分源程序給出如下。請勿改動主函數(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:\n”);for(i=0;i<n;i++)<p=""></n;i++)<>printf(“%3d”,a[i]);}

26.編寫函數(shù)fun(),其功能是:根據(jù)以下公式求的值(要求精度0.0005,即某項(xiàng)小于0.0005時(shí)停止迭代)。程序運(yùn)行后,若輸入精度0.0005,則程序應(yīng)輸出為3.14…。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:

27.M名學(xué)生的成績已在主函數(shù)中放人一個(gè)帶頭結(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭結(jié)點(diǎn)。請編寫函數(shù)proc(),它的功能是:找出學(xué)生的最高分,由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

28.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將形參s所指字符串放入形參a所指的字符數(shù)組中,使a中存放同樣的字符串。說明:不得使用系統(tǒng)提供的字符串函數(shù)。注意:部分源程序存放在文件prog1.c中,請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()指定的部位填入所編寫的若干語句。試題程序:

29.規(guī)定輸入的字符串中只包含字母和奉號。編寫函數(shù)fun,其功能是:刪除字符串中所有的。號。編寫函數(shù)時(shí),不得使用c語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)缸的花括號中填入你編寫的若干語句。試題程序:

30.編寫函數(shù)fun,其功能是:求ss所指字符串中指定字符的個(gè)數(shù),并返回此值。例如,若輸入字符串123412132,輸入字符為1,則輸出3。

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

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

四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是:按順序給s所指數(shù)組中的元素賦予從2開始的偶數(shù),然后再按順序?qū)γ?個(gè)元素求一個(gè)平均值,并將這些值依次存放在w所指的數(shù)組中。若s所指數(shù)組中元素的個(gè)數(shù)不是5的倍數(shù),多余部分忽略不計(jì)。例如,s所指數(shù)組有14個(gè)元素,則只對前10個(gè)元素進(jìn)行處理,不對最后的4個(gè)元素求平均值。

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

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

試題程序:

#include<stdio.h>

#defineSIZE20

fun(double*s,double*w)

{intk,i;doublesum;

for(k=2,i=0;i<SIZE;i++)

{s[i]=k;k+=2;}

sum=0.0;

for(k=0,i=0;i<SIZE;i++)

{sum+=s[i];

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

if(i+1%5==0)

{w[k]=sum/5;Sum=0;k++;}

}

returnk;

}

main()

{doublea[SIZE],b[SIZE/5];

inti,k;

k=fun(a/b);

printf("Theoriginaldata:\n");

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

{

if(i%5==0)printf("\n");

printf("%4.0f"/a[i]);

}

printf{"\n\nTheresult:\n");

for(i=0;i<k;i++)printf("%6.2f",b[i]);

printf("\n\n");

}

32.給定程序MODll.C中函數(shù)fun的功能是:統(tǒng)計(jì)字符串中各元音字母(即:A、E、I、O、U)的個(gè)數(shù)。注意:字母不分大、小寫。

例如:若輸入:THIsisaboot,則輸出應(yīng)該是:1、0、2、2、0。

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

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

33.下列給定程序中,函數(shù)fun()的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)之和。

2/1,3/2,5/3,8/5,13/8,21/13,……

和值通過函數(shù)值返回main()函數(shù)。例如,若輸入n=5,則應(yīng)輸出8.391667。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

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

fun(intn)

{inta=2,b=l,c,k;

doubles=0.0;

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

{s=s+l.0*a/b;

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

c=a;a+=b;b+=c;

}

return(s);

}

main()

{intn=5;

clrscr();

printf("\nThevalueoffunctionis:

%1f\n",fun(n));

}

34.下列給定的程序中,函數(shù)hn()的功能是:為一個(gè)偶數(shù)尋找兩個(gè)素?cái)?shù),這兩個(gè)素?cái)?shù)之和等于該偶數(shù),并將這兩個(gè)素?cái)?shù)通過形參指針傳回主函數(shù)。

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

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

試題程序:

#include<stdio.h>

#include<math.h>

voidfun(inta,int*b,int*c)

{inti,j,d,y;

for(i=3;i<=a/2;i=i+2)

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

{y=0;

for(j=2;j<=sqrt((double)i);j++)

if(i%j==0)y=0;

if(y==1)

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

{d=i-a;

for(j-2;j<=sqrt((double)d);

j++)

if(d%j==0)y=0;

if(y=-1)

{*b=i;*c=d;}

}

}

}

main()

{inta,b,c;

do

{printf("\nInputa:");

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

while(a%2);

fun(a,&b,&c);

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

}

35.下列給定程序中,函數(shù)fun()的功能是:計(jì)算整數(shù)n的階乘。

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

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

}

36.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。

請?jiān)跈M線上填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。

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

試題程序;

main()

{

charb[17]={"0123456789ABCDEF"};

intc[64],d,i=0,base=16;

longn;

printf("Enteranumber:\n");

scanf("%ld",&n);

do{

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

c[i]=______;i++;n=n/base;}

while(n!=0);

printf("Transmitenewbase:\n");

for(--i;i>=0;--i)

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

{d=c[i];printf("%c",b______);}

printf("\n");

}

37.已知一個(gè)數(shù)列從第0項(xiàng)開始的前三項(xiàng)分別為0,0,1,以后的各項(xiàng)都是其相鄰的前三項(xiàng)之和。給定程序MODll.C中函數(shù)fun的功能是:計(jì)算并輸出該數(shù)列前n項(xiàng)的平方根之和。n的值通過形參傳入。

例如,當(dāng)n=10時(shí),程序的輸出結(jié)果應(yīng)為:23.197745。

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

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

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

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

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

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

39.下列給定程序中,函數(shù)fun()的功能是:從字符串s中,刪除所有小寫字母'c'。

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

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

試題程序:

#include<stdio.h>

voidfun(char*s)

{inti,j;

for(i=j=0;s[i]!='\0';i++)

if(sill!='c')

/********************************/

s[j]=s[i];

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

s[i]='\0';

}

main()

{chars[80];

printf("\nEnterastring:");

gets(s);

printf("Theoriginalstring:")

puts(s);

fun(s);

printf("Thestringafterdeleted:");

puts(s);printf("\n\n"):

}

40.給定程序MODII.C中函數(shù)fun的功能是:把主函數(shù)中輸入的3個(gè)數(shù),最大的放在a中,最小的放在c中,中間的放在b中。

例如,輸入的數(shù)為:551234,輸出結(jié)果應(yīng)當(dāng)是:a=55.0,b=34.0,c=12.0。

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

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

五、程序改錯(cuò)題(2題)41.由N個(gè)有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,下列給定程序函數(shù)fun()的功能是:利用折半查找法查找整數(shù)m在數(shù)組中的位置。若找到,返回其下標(biāo)值;否則,返回-1。折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍low和high(10w%high)。然后用m與中間位置(mid)上元素的值進(jìn)行比較。如果m的值大于中間位置元素的值,則下一次的查找范圍落在中間位置之后的元素中;反之,下一次的查找范圍落在中間位置之前的元素中,直到low>;high,查找結(jié)束。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

42.下列給定程序中,函數(shù)proc()的功能是:從字符串str中,刪除所有大寫字母'F'。

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

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

試題程序:

六、操作題(2題)43.若有以下程序:

main()

{int,p,a=5;

if(P=a!=0)

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

else

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

}

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

44.以下程序的功能是輸出如下形式的方陣:

13141516

9101112

5678

1234

請?zhí)羁铡?/p>

main()

{inti,j,x;

for(j=4;j>0;j--)

{for(i=1;i<=4;i++)

{x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

}

參考答案

1.p=a+4或p=&a[4]。p=a+4或p=&a[4]。解析:可以直接將數(shù)組元素a[4]的地址(即&a[4])賦給指針變量p,也可以用數(shù)組名加偏移量的形式(即a+4)表示數(shù)組元素a[4]的地址,并賦給指針變量p。

2.模式/內(nèi)模式映像模式/內(nèi)模式映像解析:映像即一種對應(yīng)規(guī)則,指出映像雙方如何進(jìn)行轉(zhuǎn)換。數(shù)據(jù)庫系統(tǒng)在三級模式之間提供了兩層映像,這兩層映像是外模式/模式映像與模式/內(nèi)模式映像。

3.132132解析:本題考核的知識點(diǎn)是for循環(huán)與switch語句的綜合運(yùn)用。主函數(shù)中用了一個(gè)for循環(huán),for循環(huán)里嵌套了一個(gè)switch語句,for循環(huán)了三次,當(dāng)i=9時(shí),i/10=0,執(zhí)行switch語句中case0分支,m和n的值各加1,變?yōu)?和1,然后遇到breake語句,退出switch語句;當(dāng)i=10,i/10=1,執(zhí)行switch語句中default分支,使k和n的值各加1,變?yōu)?和1,退出switch語句:當(dāng)i=11時(shí),i/10=1,執(zhí)行switch語句中default分支,k和n的值各加1變,為2和3,退出switch語句,循環(huán)結(jié)束。故該空格處應(yīng)該填132。

4.floatfloat解析:在此表達(dá)式中x是float類型的變量,經(jīng)過開方所得到的結(jié)果仍是float類型,再和2.8進(jìn)行運(yùn)算時(shí),應(yīng)該先將2.8轉(zhuǎn)換成float類型再運(yùn)算,最后結(jié)果仍是float型。

5.a=2b=1a=2,b=1解析:本題考查了switch結(jié)構(gòu)的內(nèi)容。C語言中,程序執(zhí)行完一個(gè)case標(biāo)號的內(nèi)容后,如果沒有break語句,控制結(jié)構(gòu)會轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行,因?yàn)閏ase常量表達(dá)式只是起語句標(biāo)號作用,并不是在該處進(jìn)行條件判斷。本題程序在執(zhí)行完內(nèi)部switch結(jié)構(gòu)后,繼續(xù)執(zhí)行了外部switch結(jié)構(gòu)的case2:分支,最后a和b的值分別為2和1。

6.調(diào)試調(diào)試

7.10

8.21

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

10.9292解析:主函數(shù)中首先定義了一個(gè)4行4列的二維數(shù)組,然后執(zhí)行一個(gè)while循環(huán),該循環(huán)中又嵌套了一個(gè)do-while循環(huán)?,F(xiàn)看while循環(huán),該循環(huán)通過i++的值來判斷是否結(jié)束循環(huán)當(dāng)i++的值為4的時(shí)候結(jié)束循環(huán),當(dāng)i=0時(shí),執(zhí)行while的循環(huán)體,顯然if語句條件不滿足不執(zhí)行,接著讓i=0,然后執(zhí)行do-while循環(huán)體,我們不難看出do-whilo循環(huán)的功能是將第i+1行的所有元素加起來,所以這時(shí)s的值為s=a[1][0]+a[1][1]+a[1][2]+a[1][3)=26,當(dāng)i=1時(shí),i+1=2,uf后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán);當(dāng)i=2時(shí),i加1變?yōu)?,把第3+1行的所有元素的加到s上,此時(shí)s=s+a[2][0]+a[2][1]+a[2][2]+a[2][3]=92,當(dāng)i=3時(shí),3+1=4,if后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán),當(dāng)i=3時(shí),if后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán)當(dāng)i=4時(shí)while循環(huán)結(jié)束,所以最后輸出的s的值為92。

11.B

12.B

13.B

14.C

15.A由題意可知:指針變量p指向變量a,p的值是a的地址;指針變量q指向變量p,q的值是P的地址。q是指針變量,q指向p,*q是變量P,選項(xiàng)A錯(cuò)誤;p是指針變量,p指向變量a,選項(xiàng)B正確;由于q指向P,因此*q指向a,選項(xiàng)C正確;*p和**q都代表變量a,選項(xiàng)D正確。故本題答案為A選項(xiàng)。

16.Bcase常量表達(dá)式只是起語句標(biāo)號作用,并不進(jìn)行條件判斷。在執(zhí)行switch語句時(shí),根據(jù)switch的表達(dá)式,找到與之匹配的case語句,就從此case子句執(zhí)行下去,不再進(jìn)行判斷,直到碰到break或函數(shù)結(jié)束為止。所以執(zhí)行內(nèi)層“switch(y)”時(shí)只執(zhí)行了“a++;”,此時(shí)a的值為1,然后執(zhí)行外層case2語句的“a++;b++;”,a值為2,b值為1。故本題答案為B選項(xiàng)。

17.B

18.Dfread函數(shù)用來讀二進(jìn)制文件,其中buffer是數(shù)據(jù)塊的指針,它是內(nèi)存塊的首地址,輸入的數(shù)據(jù)存入此內(nèi)存中;size表示每個(gè)數(shù)據(jù)塊的字節(jié)數(shù);count用來指定每讀一次讀入的數(shù)據(jù)塊個(gè)數(shù);fp是文件指針,指向要讀的文件。選項(xiàng)A、B、C錯(cuò)誤。本題答案為D選項(xiàng)。

19.D

20.D21.1doublefun(doublex,intn)2{3inti;4doubles=1.0,sl=1.0;5for(i=1/i<=n;i++)6{si=si*i;/*各項(xiàng)中的階乘*/?s=s+pow(x,i)/si;/*按公式求出*/}Returns;10}程序定義了變量Sl和s,sl表示每項(xiàng)的分母(即各項(xiàng)的階乘),S存放累加和。循環(huán)語句控制累加的次數(shù),在循環(huán)體中進(jìn)行階乘和累加操作,將累加的結(jié)果存入S中。此處使用了求乘方函數(shù)pow(X,i),其含義是求X的i次方的值。

22.

【解析】首先判斷循環(huán)中n是否為素?cái)?shù),如果不是素?cái)?shù),求其平方根的累加和,并返回計(jì)算結(jié)果,否則跳出判斷循環(huán)。其中,對于平方根的求解可以使用C語句中的sqrt()函數(shù)。

23.

【解析】要求該學(xué)生的平均成績,首先要求出其各科成績之和,然后求出其平均成績并放在成員變量ave中。

24.

【解析】要得到數(shù)組中元素的最大值,需要比較數(shù)組中的每一個(gè)元素。首先將最大值賦值為數(shù)組中的第一個(gè)元素,再將其與數(shù)組中的其他元素相比較,將值最大的元素賦給變量max,并將其下標(biāo)賦值給變量d。

25.voidfun(int(*s)[10],int*b,int*n,intmm,intnn){inti,j;for(j=0;j<nn;j++)/*將二維數(shù)組中的數(shù)據(jù)按列的順序依次存入一維數(shù)組中*/for(i=0;i<=""p="">{b[*n]=*(*(s+i)+j);*n=*n+1;/*通過指針返回元素個(gè)數(shù)*/}}題目要求實(shí)現(xiàn)將二維數(shù)組元素存入一維數(shù)組。使用for循環(huán)語句來控制二維數(shù)組元素的下標(biāo),同時(shí)使用指針變量配合操作。可以用兩個(gè)循環(huán)來處理問題,由于是按列的順序取出,因此第1個(gè)循環(huán)用于控制列下標(biāo),第2個(gè)循環(huán)用于控制行下標(biāo)。

26.

【解析】此題考查的是用迭代法求多項(xiàng)式的值。通過觀察題目中給出的數(shù)學(xué)公式可知,后面一項(xiàng)是前面一項(xiàng)乘以n/(2*n+1),發(fā)現(xiàn)這個(gè)規(guī)律后,問題迎刃而解。通過定義double類型變量,并且賦初值,用來存放多項(xiàng)式的總和。此題中需要注意的是,表示每一項(xiàng)的s1和表示多項(xiàng)式之和的s,兩者的初值都是1.0。

27.

【解析】要找出學(xué)生的最高分,就要比較所有學(xué)生的成績。定義一個(gè)變量max用來存放學(xué)生的最高分,初始化為第一個(gè)學(xué)生的成績,依次與其后的學(xué)生成績相比較,最后將得到的最高分返回主函數(shù)。

28.1voidfun(char*a,char*s)2{while(*s!:'。1)3{*a=*s;4a++;5s++;}7*a='\\0';}要將指針變量s所指的字符串存入指針變量a所指的字符串中,程序要求不能使用系統(tǒng)提供的字符串函數(shù)。本題可以使用循環(huán)語句,依次取出a所指字符串中的元素,將其存入s所指的字符串中,最后為s所指的字符串添加字符串結(jié)束標(biāo)志'\\0'。

29.30.

intfun(char*ss,charc)

inti=0;

for(;*ss!=’\0‘;ss++)if(}ss==c

i++/*求出*所指字符串中指定字符的個(gè)數(shù)*/

returni;

【考點(diǎn)分析】

本題考查:for循環(huán)語句遍歷字符串,并通過if條件語句,判斷字符串是否結(jié)束。

【解題思路】

從字符串中查找指定字符,需要使用循環(huán)判斷結(jié)構(gòu),循環(huán)語句用來遍歷字符串,循環(huán)條件為字符串沒有結(jié)束,即當(dāng)前字符不是‘\0’,判斷語句用來判斷當(dāng)前字符是否為指定字符。最后返回指定字符的個(gè)數(shù)。

31.錯(cuò)誤:if(i+1%5==0)正確:if((i+1)%5==0)錯(cuò)誤:if(i+1%5==0)正確:if((i+1)%5==0)解析:本題除了考查循環(huán)語句以外,其實(shí)就是一道簡單的數(shù)學(xué)題,循環(huán)條件if(i+1%5==0)是一個(gè)標(biāo)準(zhǔn)的語法錯(cuò)誤,這跟題目考查的知識點(diǎn)毫無關(guān)系,也就是說,做這樣的題,只要讀懂了題干意思,問題便可迎刃而解。

32.(1)num[k]=0;(2)switch(*s)(1)num[k]=0;(2)switch(*s)解析:本題中函數(shù)的功能是統(tǒng)計(jì)字符串中各元音字母(即A、E、I、O、U)的個(gè)數(shù)。其中,本題在while循環(huán)中采用switch-case條件判斷字符串中的每一個(gè)字符并進(jìn)行統(tǒng)計(jì)。

33.(1)錯(cuò)誤:fun(intn)正確:doublefun(intn)(2)錯(cuò)誤:c=a;a+=b;;b+=c;正確:c=a;a+=b;b=c;(1)錯(cuò)誤:fun(intn)正確:doublefun(intn)\r\n(2)錯(cuò)誤:c=a;a+=b;;b+=c;正確:c=a;a+=b;b=c;解析:該題題干是著名的斐波拉契分?jǐn)?shù)序列,所以循環(huán)條件應(yīng)該是c=a;a+=b;b=c。

34.(1)錯(cuò)誤:y=0;正確:y=1:(2)錯(cuò)誤:d=i-a;正確:d=a-i;(1)錯(cuò)誤:y=0;正確:y=1:\r\n(2)錯(cuò)誤:d=i-a;正確:d=a-i;解析:這道題是歷年的考題經(jīng)典。也就是驗(yàn)證哥德巴赫猜想之變體,原來的思路是(任意一個(gè)大于等于6的偶數(shù)都可以分解為兩個(gè)素?cái)?shù)之和)n為大于等于6的任一偶數(shù),可分解為n1和n2兩個(gè)數(shù),分別檢查n1和n2是否為素?cái)?shù),如都是,則為一組解。如n1不是素?cái)?shù),就不必再檢查n2是否素?cái)?shù)。先從n1=3開始,檢驗(yàn)n1和n2(n2=N-n1)是否素?cái)?shù)。然后使n1+2再檢驗(yàn)n1,n2是否素?cái)?shù),…直到n1=n/2為止。該題思路是與“經(jīng)典猜想”是相同的。

35.(1)錯(cuò)誤:result*=--n;正確:result*=n--;(2)錯(cuò)誤:return;正確:returnresult;(1)錯(cuò)誤:result*=--n;正確:result*=n--;\r\n(2)錯(cuò)誤:return;正確:returnresult;解析:該題采用循環(huán)語句計(jì)算n的階乘。當(dāng)n大于1且小于170時(shí),

溫馨提示

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

評論

0/150

提交評論