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

下載本文檔

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

文檔簡(jiǎn)介

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

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

2.設(shè)x、y、z均為int型變量,請(qǐng)寫出描述"x或y中至少有一個(gè)小于z"的表達(dá)式______。

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.關(guān)系表達(dá)式x<y<z,用C語(yǔ)言的表達(dá)式為【】。

5.對(duì)于長(zhǎng)度為n的順序存儲(chǔ)的線性表,當(dāng)隨機(jī)插入和刪除一個(gè)元素時(shí),需平均移動(dòng)元素的個(gè)數(shù)為【】。

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

13141516

9101112

5678

1234

請(qǐng)?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)體說(shuō)明:

structSIRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

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

【】t[20]

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

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

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

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

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

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

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

A.初始化B.進(jìn)棧C.退棧D.判???/p>

14.若a是數(shù)值類型,則邏輯表達(dá)式(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)體變量中的成員可以是簡(jiǎn)單變量、數(shù)組或指針變量

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

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

D.結(jié)構(gòu)體定義時(shí),類型不同的成員項(xiàng)之間可以用逗號(hào)隔開(kāi)

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

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

18.

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

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

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

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

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

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

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

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

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

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

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

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

試題程序:

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

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

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

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

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

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

29.

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

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

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

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

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

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

注意:不要改動(dòng)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()的功能是逐個(gè)比較a,b兩個(gè)字符串對(duì)應(yīng)位置中的字符,把ASCII值小或相等的字符依次存放到c數(shù)組中,形成一個(gè)新的字符串。

例如:a中的字符串為fshADfg,b中的字符串為sdAEdi,則c中的字符串應(yīng)為fdAADf。

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

注意:不要改動(dòng)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()的功能是:對(duì)N名學(xué)生的學(xué)習(xí)成績(jī),按從低到高的順序找出前m(m≤10)名學(xué)生來(lái),并將這些學(xué)生數(shù)據(jù)存放在一個(gè)動(dòng)態(tài)分配的連續(xù)存儲(chǔ)區(qū)中,此存儲(chǔ)區(qū)的首地址作為函數(shù)值返回。

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

注意:不要改動(dòng)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。

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

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

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

例如,若字符串為aaaslkaaas,子字符串為as,則應(yīng)輸出2。

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

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

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

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

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

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

38.給定程序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。

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

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

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

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

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

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

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

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

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

}

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

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

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

試題程序:

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

main

{intn;

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

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

六、操作題(2題)43.使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是在形參s所指宇符串中尋找與參數(shù)c相同的字符,并在其后插入一個(gè)與之相同的字符,若找不到相同的字符則不做任何處理。例如,若s所指字符串為“baacda”,c中的字符為a,執(zhí)行后s所指字符串為“baaaacdaa”。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(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.請(qǐng)編寫函數(shù)proc,其功能是:計(jì)算并輸出下列多項(xiàng)式值。

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

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

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

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

試題程序:

#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命令行中指定的字符串從左到右進(jìn)行轉(zhuǎn)換。本題中替換的式子為:6+8*6+8,代入i,j的值得到62。

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

3.1212解析:本題通過(guò)第一個(gè)for循坪將數(shù)組arr[0]-arr[9]分別賦值為0-9,通過(guò)第二個(gè)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語(yǔ)言中,表達(dá)“并且”用邏輯與運(yùn)算符“&&”。

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

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

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

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

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

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

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

{

成員項(xiàng)表;

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

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

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

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

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

12.D

13.D

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

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

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

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

18.B

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

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

21.

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

22.

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

23.

【考點(diǎn)分析】

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

【解題思路】

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

24.

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

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

25.

voidfun(STREC*a)

inti:

a一>ave=0.0:

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

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

【考點(diǎn)分析】

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

【解題思路】

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

voidfun(char*a){

while(*a!=’、0。)

a++:

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

a一一;/·指針a指向最后一個(gè)字母*/

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

【考點(diǎn)分析】

本題考查:刪除字符串尾部*號(hào);刪除的主要思想是把不刪除的字符保留起來(lái)。

【解題思路】

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

27.

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

28.

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

29.

30.

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

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

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

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

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

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位值。本題解題過(guò)程首先是求y次方,然后對(duì)結(jié)果進(jìn)行截取。

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)計(jì)子字符串substr在字符串str中出現(xiàn)的次數(shù)。解題過(guò)程是在str中查找指定的子串,并且統(tǒng)計(jì)子串出現(xiàn)的次數(shù)。

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論