2022年河北省石家莊市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2022年河北省石家莊市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2022年河北省石家莊市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2022年河北省石家莊市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2022年河北省石家莊市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年河北省石家莊市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.以下程序運行后的輸出結(jié)果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}

2.設x、y、z均為int型變量,請寫出描述"x或y中至少有一個小于z"的表達式______。

3.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

printf("%d\n"k);}

4.關系表達式x<y<z,用C語言的表達式為【】。

5.對于長度為n的順序存儲的線性表,當隨機插入和刪除一個元素時,需平均移動元素的個數(shù)為【】。

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

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

}

}

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

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

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

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

}

9.若有如下結(jié)構(gòu)體說明:

structSIRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

請?zhí)羁?,以完成對t數(shù)組的定義,t數(shù)組的每個元素為該結(jié)構(gòu)體類型。

【】t[20]

10.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

二、單選題(10題)11.有以下程序:

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

A.45B.20C.25D.36

12.算法的效率的分析主要包括兩個方面()。

A.時間復雜度和空間復雜度B.正確性和簡單性C.可讀性和文檔性D.數(shù)據(jù)復雜性和程序復雜性

13.在下面棧的基本運算中,不是加工型運算的是______。

A.初始化B.進棧C.退棧D.判???/p>

14.若a是數(shù)值類型,則邏輯表達式(a==1)II(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能確定

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

B.efgabcdmnopqhijkIrstuvwxyz

C.efgacdmopqhjkIrvwxyz

D.eefgaabcdmmnopqhhijkIrrstuvwxyz

16.以下敘述中正確的是()。

A.結(jié)構(gòu)體變量中的成員可以是簡單變量、數(shù)組或指針變量

B.不同結(jié)構(gòu)體的成員名不能相同

C.結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型可以是本結(jié)構(gòu)體類型

D.結(jié)構(gòu)體定義時,類型不同的成員項之間可以用逗號隔開

17.有以下程序:#include<stdio.h>main(){charch=‘1’;while(ch<‘9’){printf(“%d”,ch-‘0’);ch++;}}程序運行后的輸出結(jié)果是()。

A.12345678B.01234567C.0D.1

18.

19.有以下程序:voidfunl(char*p)程序執(zhí)行后的輸出結(jié)果是()A.ProhsbnB.PrphsbnC.ProgsbnD.Program

20.若有以下定義和語句:#include<stdio.h>charsl[10]=“abcd!”,*s2=“\nl23\\”;printf(“%d%d\n”,strlen(s1),strlen(s2));程序的運行結(jié)果是()。

A.107B.105C.55D.58

三、程序設計題(10題)21.編寫函數(shù)intproc(intlim,intaa[M]),該函數(shù)的功能是求出小于或等于lim的所有素數(shù)并放在aa數(shù)組中,該函數(shù)返回所求出的素數(shù)。例如,若輸入12時,則輸出:235711。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

22.請編寫一個函數(shù)proc(),它的功能是:根據(jù)以下公式求7c的值(要求滿足精度0.0005,即某項小于0.005時停止迭代)。程序運行后,如果輸入精度0.0005,則程序輸出3.140578。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

23.學生記錄由學號和成績組成,N名學生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)體數(shù)組中,請編寫函數(shù)fun,其功能是:把分數(shù)最低的學生數(shù)據(jù)放入b所指的數(shù)組中,注意:分數(shù)最低的學生可能不止一個,函數(shù)返回分數(shù)最低的學生人數(shù):

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

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

24.編寫函數(shù)proc(),它的功能是求m以內(nèi)(不包括m)同時能被5與11整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。

例如,m為100時,函數(shù)值應為s=7.416198。

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

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

試題程序:

25.某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù)fun,其功能是:求出該學生的平均分,并放入記錄的ave成員中。

例如,學生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應為78.875。注意:部分源程序在文件PROGl.C中。

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

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

27.請編寫函數(shù)fun(),其功能是:找出2M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:

28.請編一個函數(shù)fun(char*str),該函數(shù)的功能是把字符串中的內(nèi)容逆置。例如,字符串中原有的字符串為asdfg,則調(diào)用該函數(shù)后,串中的內(nèi)容為gfdsa。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

29.

30.請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式值。S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)例如,若主函數(shù)從鍵盤給n輸入20后,則輸出為s=0.680803。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

四、2.程序修改題(10題)31.給定程序MODll.C中函數(shù)fun的功能是:先從鍵盤上輸入一個3行3列矩陣的各個元素的值,然后輸出主對角線元素之和。

請改正函數(shù)fun中的錯誤或在橫線處填上適當?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。

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

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

請在橫線上填上適當?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");

}

33.下列給定程序中,函數(shù)fun()的功能是逐個比較a,b兩個字符串對應位置中的字符,把ASCII值小或相等的字符依次存放到c數(shù)組中,形成一個新的字符串。

例如:a中的字符串為fshADfg,b中的字符串為sdAEdi,則c中的字符串應為fdAADf。

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

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

試題程序:

#include<stdio.h>

#include<strinq.h>

voidfun(char*p,char*q,char*c)

{intk=0;

while(*p||*q)

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

{if(*p<=*q)

c[k]=*q;

elsec[k]:*p;

if(*p)p++;

if(*q)q++;

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

k++

}

}

main()

{chara[10]="fshADfg",b[10]="sdAEdi",

c[80]={'\0');

fun(a,b,c);

printf("Thestringa:");puts(a);

printf("Thestringb:");puts(b);

printf("Theresult:");puts(c);

}

34.下列給定程序中,函數(shù)fun()的功能是:對N名學生的學習成績,按從低到高的順序找出前m(m≤10)名學生來,并將這些學生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。

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

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

試題程序:

#include<conio.h>

#include<string.h>

#include<stdio.h>

#include<alloc.h>

#defineN10

typedefstructSS

{

charnum[10];

ints;

}STU;

STU*fun(STUa[],intm)

{

STUb[N],*t;

inti,j,k;

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

*t=calloc(m,sizeof(STU));

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

b[i]=a[i];

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

{

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

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

if(b[i].s<b[j],s)

j=i;

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

t[k].s=b[j].s;

b[j].s=100;

}

returnt;

}

outresult(STUa[],F(xiàn)ILE*pf)

{

inti;

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

fprintf(pf,"NO=%SMark=%d\n",

a[i].num,a[i].S);

fprintf(pf,"\n\n");

}

main()

{

STUa[N]={{“A01”,77},{“A02”,85},

{“A03”,96},{“A04”,65},{“A05”,75},

{“A06”,96},{“A07”,76},{“A08”,63},

{“A09”,69},{“A10”,78}};

STU*porder;

inti,m;

clrscr();

printf(“*****THERESULT*****\n”);

outresult(a,stdout);

printf(“\nGivethenumberofthestudentswhohavelowerscore:”);

scanf(“%d”,&m);

while(m>10)

{

printf(“\nGivethenumberofthestudentswhohavelowerscore:”);

scanf(“%d”,&m);

}

porder=fun(a,m);

printf(“*****THERESULT*****\n”);

printf(“Thelow:\n”);

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

printf(“%s%d\n”,porder[i].num,

porder[i].s);

free(porder);

}

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

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

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

36.給定程序MODll.C中函數(shù)fun的功能是:統(tǒng)計substr所指子字符串在str所指字符串中出現(xiàn)的次數(shù)。

例如,若字符串為aaaslkaaas,子字符串為as,則應輸出2。

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

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

37.給定程序MODll.C中函數(shù)fun的功能是:判斷一個整數(shù)是否是素數(shù),若是返回1,否則返回0。

在mai()函數(shù)中,若fun返回1輸出YES,若fun返回0輸出NO!。

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

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

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

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

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

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

39.給定程序MODll.C中函數(shù)fun的功能是:求三個數(shù)的最小公倍數(shù)。

例如,給主函數(shù)中的變量x1、x2、x3分別輸入15112,則輸出結(jié)果應當是:330。

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

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

40.下列給定程序中,函數(shù)fun()的功能是:對N名學生的學習成績,按從高到低的順序找出前叫m≤10)名學生來,并將這些學生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。

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

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

試題程序:

#include<conio.h>

#include<string.h>

#include<stdio.h>

#include<alloc.h>

#defineN10

typedefstructss

{charnum[10];

ints;

}STU;

STU*fun{STUa[],intm)

{STUb[N],*t;

inti,j,k;

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

*t=calloc(m,slzeof(STU));

for(i=0;i<N;i++)b[i]=a[i];

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

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

if(b[i].s>b[j].s)j=i;

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

t[k].num=b[j].num;

t[k].s=b[j]s;

b[j].s=0;

}

returnt;

}

outresult(STUa[],FILE*pf)

{inti;

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

fprintf(pf,"No=%sMark-%d\n",

a[i].num,a[i].s);

fprintf(pf,"\n\n");

}

main()

{STUa[N]={{"A01",81},{"A02",89},

{"A03",66},{"A04",87},{"A05",77},

{"A06",90},{"A07",79},{"A08",61},

{"A09",80},{"Al0",71}};

STU*pOrder;

inti,m;

clrscr();

printf("*****THERESULT*****\n");

outresult(a,stdout);

printf("\nGivethenumberofthestudents

whohavebetterscore:");

scanf("%d",&m);

while(m>10)

{printf("lnGivethenumberofthe

studentswhohavebetterscore:");

scanf("%d",%m);

pOrder=fun(a,m);

printf("*****THERESULT*****kn");

printf("Thetop:\n");

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

printf("%s%d\n",pOrder[i].num,

p0rder[i].s);

free(pOrder);

}

五、程序改錯題(2題)41.下列給定程序中,函數(shù)proc()的功能是:判斷一個整數(shù)m是否是素數(shù),若是返回1,否則返回0。在main()函數(shù)中,若proc()返回1,則輸出″YES″;若proc()返回0,則輸出″NO″!

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

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

試題程序:

42.寫出下列程序的運行結(jié)果。

main

{intn;

For(n=3;n<=10;n++)

{if(n%6==0)break;Printf(“%d”,n);}}

六、操作題(2題)43.使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是在形參s所指宇符串中尋找與參數(shù)c相同的字符,并在其后插入一個與之相同的字符,若找不到相同的字符則不做任何處理。例如,若s所指字符串為“baacda”,c中的字符為a,執(zhí)行后s所指字符串為“baaaacdaa”。請在程序的下劃線處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(char*s,charc){ inti,j,n;/*********found*********/ for(i=0;s[i]!=【1】;i++) if(s[i]==c) {/*********found*********/ n=【2】; while(s[i+1+n]!=‘\0’) n++; for(j=i+n+l;j>i;j--) s[j+1]=s[j];/*********found*********/ s[j+1]=【3】; i=i+1; }}main(){ chars[80]=’’baacda’、c; printf(“\nThestring:%s\n'Vs); printf(M\nlnputacharacter:”); scanf(“%c”,&c); fun(s,c); printf(n\nTheresultis:%s\n”,s);}

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

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

例如,若主函數(shù)從鍵盤給n輸入20后,則輸出為S=0.680803。

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

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

試題程序:

#includet:stdio.h>

doubleproc(intn)

{

}

voidmain

{

intn;

doublesum;

printf("\nInputn:");

scanf("%d",&n);

sum=proc(n)。

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

}

參考答案

1.6262解析:本題考查的是宏定義。帶參數(shù)的宏定義是按#indefine命令行中指定的字符串從左到右進行轉(zhuǎn)換。本題中替換的式子為:6+8*6+8,代入i,j的值得到62。

2.X<Z||y<zX<Z||y<z解析:本題考查邏輯運算符和邏輯表達式。x或y中至少有一個小于z,即X<Z或y<z,是“或”的關系。

3.1212解析:本題通過第一個for循坪將數(shù)組arr[0]-arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結(jié)果為12,具體分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

4.(x<y)&&(y<z)(x<y)&&(y<z)解析:x<y<z的意思是y大于x并且y小于z。在C語言中,表達“并且”用邏輯與運算符“&&”。

5.n/2n/2解析:刪除一個元素,平均移動的元素個數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2;所以總體平均移動元素個數(shù)為n/2。

6.ii解析:外循環(huán)是遞減的,方陣中的每個元素為(j-1)*4+i,因此空格處填i。

7.852852解析:循環(huán)前,變量y的值為9,其中,循環(huán)語句在y大于0情況下循環(huán),每次循環(huán)后y的值都減1。循環(huán)體是當y能被3整除時輸出表達式--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。

8.3535解析:函數(shù)swap(int*a,int*b)的功能是實現(xiàn)*a和*b中兩個數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。

9.structSTRUstructSTRU解析:結(jié)構(gòu)體類型是構(gòu)造數(shù)據(jù)類型,是用戶自己定義的一種類型。

結(jié)構(gòu)體類型的定義:

struct結(jié)構(gòu)體類型名

{

成員項表;

定義結(jié)構(gòu)休變量的的形式為:

struct結(jié)構(gòu)體類型名變量1,變量2,....

其中變量包括:一般變量、指針變量、數(shù)組變量等。

10.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS)

11.C統(tǒng)計1~9九個數(shù)中的奇數(shù)和,此題重點考察指向數(shù)組的指針。c語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址。因此*(t+i)代表數(shù)組的第i+1個元素。程序運行的結(jié)果是l+3+5+7+9=25。1

12.D

13.D

14.A由于a==l和a!=1兩者互斥,即總有一個為真,因此二者的或也必定為真。

15.C程序定義一個二維字符數(shù)組a,使用5個字符串對其初始化。另外定義字符指針數(shù)組P。for循環(huán)中,每次將數(shù)組a當前下標為i的字符串首地址賦給P[i],再求得P[i]的長度賦給len,第1個printf輸出p[i]字符串的首字母,第2個printf輸出p[i]字符串下標從len/2開始的子字符串。當下標i=0時輸出efg;當下標i=l時輸出acd;當下標i=2時輸出mopq;當下標i=3時輸出hjkl;當下標i=4時輸出rvwxyz。所以程序輸出:efgacdmopqhjklrvwxyz。本題答案為C選項。

16.A結(jié)構(gòu)體變量中的成員可以是簡單變量、數(shù)組、指針變量或者結(jié)構(gòu)體變量,選項A正確;不同結(jié)構(gòu)體成員名可以相同,選項B錯誤;結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型不能是本結(jié)構(gòu)體類型,選項C錯誤;結(jié)構(gòu)體定義時,類型不同的成員項之間使用分號隔開,選項D錯誤。本題答案為A選項。

17.A表達式“ch-‘0’’將數(shù)字字符轉(zhuǎn)為數(shù)字。輸出的格式為%d。while循環(huán)從‘1’~‘8’,因此輸出的結(jié)果是12345678。故本題答案為A選項。

18.B

19.A本題中使用了函數(shù)的調(diào)用,由funl函數(shù)中的while循環(huán)可知,循環(huán)的作用是為了把q所指向的內(nèi)容增加1,而從主函數(shù)傳到函數(shù)時是從下標為3開始傳,因此當調(diào)用函數(shù)執(zhí)行完后,傳過去的字符串為hsbn,前面不變。

20.Cstrlen函數(shù)返回字符串的長度。求字符串長度時,遇到結(jié)束標識‘\\0’為止,但是長度不包括結(jié)束標識。字符數(shù)組s1的后5個元素沒有賦值,都為‘\\0’,即“abcd!”后為‘\\0’,所以“strlen(s1)”的值為5。字符指針s2所指向的字符串中,“\\n”為轉(zhuǎn)義字符,代表換行符,是1個字符,“\\\\”也為轉(zhuǎn)義字符,代表“\\”,也是1個字符,其后為字符串結(jié)束標識‘\\0’,所以“strlen(s2)”的值也為5。故本題答案為C選項。

21.

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

22.

【解析】我們應定義一個變量表示其和,一個變量表示其分數(shù),由題目中可知循環(huán)結(jié)束的標志為分數(shù)小于eps,因此其為循環(huán)結(jié)束的條件,根據(jù)公式的變化規(guī)律,可求得s,最后把2*s返回到主函數(shù)中。

23.

【考點分析】

本題考查:查找結(jié)構(gòu)體數(shù)組中的最小數(shù)據(jù),需要通過for循環(huán)語句和if條件語句來完成。

【解題思路】

本題中第一個循環(huán)語句的作用是遍歷數(shù)組求出最低分數(shù),第二個循環(huán)語句的作用是將數(shù)組中的元素與最低分比較,查找是否存在與最低分相等的成績。

24.

【解析】按照題目中要求求m以內(nèi)(不包括m)同時能被5與11整除的所有自然數(shù)之和的平方根s,需要判斷m以內(nèi)的所有整數(shù)是否能同時被5與11整除,首先求出同時能被5與

11整除的所有自然數(shù)之和,然后再求和的平方根,最后返回到主函數(shù)當中。

25.

voidfun(STREC*a)

inti:

a一>ave=0.0:

fbr(i=0;i<N;i++)a一>ave=a—>ave+·一>s[i];/*求各門成績的總和}/

a->ave/=N;/}求平均分*/}

【考點分析】

本題考查:結(jié)構(gòu)體類型成員運算,指向結(jié)構(gòu)體類型的指針變量作函數(shù)參數(shù)。

【解題思路】

本題考查自定義形參的相關知識點,程序流程是這樣的:在如n()函數(shù)中求出平均分后,返回到主函數(shù)時平均分也要帶回,所以只能定義一個指針類型的形參STREC·a,此時,引用成員的方式可以使用指向運算符,即a一>ave和a—>s[i],當然也可用(*a),ave和(*a).S[i]。26.

voidfun(char*a){

while(*a!=’、0。)

a++:

a一一;/*指針a指向字符串的尾部*/while(}a==’*。)

a一一;/·指針a指向最后一個字母*/

*(a+1)=’、0’;/*在字符串最后加上結(jié)束標志符·/

【考點分析】

本題考查:刪除字符串尾部*號;刪除的主要思想是把不刪除的字符保留起來。

【解題思路】

對于一個字符串要刪除其尾部的*號,只需要在最后一個不是*號的字符后面加上結(jié)束符號‘、0’。具體操作為:首先找到字符串的結(jié)尾,然后從最后一個字符開始往前逐個判斷是否為*號,直到找到非·號字符為止。最后在該字符后面加上結(jié)束符號’\0。

27.

【解析】此題考查的是數(shù)組的查找算法。使用for循環(huán)嵌套完成對二維數(shù)組的遍歷。題目要求出最大值,則應采用將所有元素遍歷一遍,逐個比較的方式完成。定義變量max,將第一個元素賦值max,然后通過for循環(huán)將元素逐個與max比較,遇到比max大的則賦值max,替換原有數(shù)據(jù),當嵌套的for循環(huán)結(jié)束后,max即為二維數(shù)組中的最大值。

28.

【解析】在fun()函數(shù)中,首先求行字符串的長度,然后通過循環(huán)進行字符交換。要注意的是,如果字符串長度是奇數(shù),則最中間的元素在逆置前后的位置是沒有改變的。

29.

30.

【解析】由題目中所給的表達式可知,多項式的值為n項表達式的和??梢岳胣次循環(huán)求出n項表達式的值,求和放在變量s中。最后將多項式的值返回到主函數(shù)當中。

31.(1)sum=0(2)scanf(“%d”&a[i][j]);(1)sum=0(2)scanf(“%d,”,&a[i][j]);解析:該題中函數(shù)功能是計算元素的和。從已給定源程序的main主函數(shù)開始入手,然后通過“fun();”語句調(diào)用fun函數(shù)的功能。

32.(1)錯誤:缺少語句正確:應填入n%base或%16(2)錯誤:缺少語句正確:應填入[d](1)錯誤:缺少語句正確:應填入n%base或%16\r\n(2)錯誤:缺少語句正確:應填入[d]解析:在該程序中,字符數(shù)組b存儲十六進制的16個數(shù)字符,整型數(shù)組c存儲譯出的十六進制數(shù)的各位數(shù)值。從整數(shù)n譯出它的各位十六進制數(shù)值,需采用除16取余的方法,即求n除16的余,得到它的十六進制的個位數(shù),接著將n除以16。在n不等于0的情況下循環(huán),能順序求出n的十六進制的個位數(shù)、十位數(shù)、百位數(shù)等。程序中變量base已預置16,所以在第1個空框處可填代碼n%base或n%16。當n的十六進制數(shù)的個位、十位、百位等依次存放于數(shù)組c中后,就從最高位至最低位,參照數(shù)組c[i]的內(nèi)容d(以其內(nèi)容為下標),取十六進制數(shù)字符表中的字符b[d]輸出。所以在第2個空框處可填入代碼[d]。

33.(1)錯誤:{if(*P<=*q)正確:{if(*p>=*q)(2)錯誤:k++正確:k++;(1)錯誤:{if(*P<=*q)正確:{if(*p>=*q)\r\n(2)錯誤:k++正確:k++;解析:錯誤1:依題意,把ASCII值小或相等的字符存放到c數(shù)組中,故if語句的關系運算符應為“>=”。錯誤2:C語言規(guī)定,每個語句要用分號結(jié)束。

34.(1)錯誤:*t=calloc(msizeof(STU));正確:t=calloc(msizeof(STU));(2)錯誤:for(i=j=0;i<N;j++)正確:for(i=j=0;i<N;i++)(3)錯誤:t[k].s=b[j].s;正確:t[k]=b[j];(1)錯誤:*t=calloc(m,sizeof(STU));正確:t=calloc(m,sizeof(STU));\r\n(2)錯誤:for(i=j=0;i<N;j++)正確:for(i=j=0;i<N;i++)\r\n(3)錯誤:t[k].s=b[j].s;正確:t[k]=b[j];解析:錯誤1:calloc也用于分配內(nèi)存空間。調(diào)用形式:(類型說明符*)calloc(n,size),功能:在內(nèi)存動態(tài)存儲區(qū)中分配n塊長度為“size”字節(jié)的連續(xù)區(qū)域。函數(shù)的返回值為該區(qū)域的首地址,而本題中t定義為指針類型。(類型說明符*)用于強制類型轉(zhuǎn)換。calloc函數(shù)與malloc函數(shù)的區(qū)別僅在于一次可以分配n塊區(qū)域。例如:ps=(stmetstu*)calloc(2,sizeof(stmctstu));其中的sizeof(stmctstu)是求stu的結(jié)構(gòu)長度。因此該語句的意思是:按stu的長度分配兩塊連續(xù)區(qū)域,強制轉(zhuǎn)換為sm類型,并把其首地址賦予指針變量ps。錯誤2:此循環(huán)中,變量i遞增。錯誤3:本題旨在考查對結(jié)構(gòu)體概念的掌握和靈活應用程度。

35.(1)for(i=1;i<=y;i++)(2)t=t%1000;(1)for(i=1;i<=y;i++)(2)t=t%1000;解析:本題中函數(shù)的功能是求整數(shù)x的y次方的低3位值。本題解題過程首先是求y次方,然后對結(jié)果進行截取。

36.(1)for(i=0;str[i];i++)(2)if(substr[k+1]==‘\O’)(1)for(i=0;str[i];i++)(2)if(substr[k+1]==‘\O’)解析:本題中函數(shù)的功能是統(tǒng)計子字符串substr在字符串str中出現(xiàn)的次數(shù)。解題過程是在str中查找指定的子串,并且統(tǒng)計子串出現(xiàn)的次數(shù)。

37.(1)k++;(2)if(m==k)(1)k++;(2)if(m==k)解析:本題中函數(shù)的功能是判斷一

溫馨提示

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

評論

0/150

提交評論