




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2021-2022學(xué)年河北省唐山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(12題)1.以下程序段中的變量已正確定義:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf(“*”);該程序段的輸出結(jié)果是()。
A.*B.****C.**D.********
2.有以下程序#include<stdio.h>voidfun(intx){if(x/2>1)fun(x/2);printf("%d",x);}main{fun(7);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A.137B.731C.73D.37
3.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.2,14,3,18,4,18
B.1,14,2,18,3,18
C.2,14,3,18,4,22
D.1,14,2,18,3,18,4,18
4.若x和y都是int型變量,x=100,y=200,且有程序片段:printf("%d",(x,y));上面程序片段的輸出結(jié)果()
A.200B.100C.100200D.輸出格式符不夠,輸出不確定的值
5.
6.在一個(gè)雙向鏈表中,q的前一個(gè)節(jié)點(diǎn)為p,q的后一個(gè)節(jié)點(diǎn)為n,刪除q所指向節(jié)點(diǎn),則執(zhí)行()
A.deleteq;
B.q->prev->next=q->prev;q->next->prev=q->next;deleteq;
C.q->prev=p->next;p->next=p->prev;deleteq;
D.q->next=q->prev->next;q->prev=q->next->prev;deleteq;
E.q->prev->next=q->next;q->next->prev=q->prev;deleteq;
F.p->prev->next=p->next;p->next->prev=p->prev;deleteq->next;
7.對(duì)線性表進(jìn)行折半查找時(shí),要求線性表必須()。A.A.以順序方式存儲(chǔ)
B.以順序方式存儲(chǔ),且結(jié)點(diǎn)按關(guān)鍵字有序排列
C.以鏈?zhǔn)椒绞酱鎯?chǔ)
D.以鏈?zhǔn)椒绞酱鎯?chǔ),且結(jié)點(diǎn)按關(guān)鍵字有序排列
8.軟件生命周期中的活動(dòng)不包括()
A.軟件維護(hù)B.市場(chǎng)調(diào)研C.軟件測(cè)試D.需求分析
9.若函數(shù)調(diào)用時(shí)的實(shí)參為變量,下列關(guān)于函數(shù)形參和實(shí)參的敘述中正確的是()。
A.函數(shù)的形參和實(shí)參分別占用不同的存儲(chǔ)單元
B.形參只是形式上的存在,不占用具體存儲(chǔ)單元
C.同名的實(shí)參和形參占同一存儲(chǔ)單元
D.函數(shù)的實(shí)參和其對(duì)應(yīng)的形參共占同一存儲(chǔ)單元
10.若某表最常用的操作是在最后一個(gè)結(jié)點(diǎn)之后插入一個(gè)結(jié)點(diǎn)或刪除最后一個(gè)結(jié)點(diǎn),則采用()存儲(chǔ)方式最節(jié)省運(yùn)算時(shí)間。
A.單鏈表B.給出表頭指針的單循環(huán)鏈表C.雙鏈表D.帶頭結(jié)點(diǎn)的雙循環(huán)鏈表
11.一個(gè)隊(duì)列的入隊(duì)序列是1,2,3,4,則隊(duì)列的輸出序列是()。
A.4,3,2,1B.1,2,3,4C.1,4,3,2D.3,2,4,1
12.設(shè)計(jì)一個(gè)判別表達(dá)式中左、右括號(hào)是否配對(duì)出現(xiàn)的算法,采用()數(shù)據(jù)結(jié)構(gòu)最佳。A.線性表的順序存儲(chǔ)結(jié)構(gòu)B.隊(duì)列C.線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)D.棧
二、2.填空題(12題)13.下面的語(yǔ)句要使指針p指向一個(gè)double類型的動(dòng)態(tài)存儲(chǔ)單元,請(qǐng)?zhí)羁铡?/p>
p=【】malloc(sizeof(double));
14.設(shè)有定義“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,則對(duì)結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc______。
15.一個(gè)模塊直接訪問(wèn)另一個(gè)模塊的內(nèi)容,稱為【】藕合。
16.若a是int型變量,則下列表達(dá)式的值為______。
(a=2*3,a*2),a+4
17.軟件工程研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和【】。
18.以下函數(shù)用以求y的x次方。補(bǔ)足所缺語(yǔ)句。
doublefun(doubley,intx)
{inti;
doublez=1.0;
for(i=1;i______;i++)
z=______;
returnz;
}
19.有以下程序段,且變量已正確定義和賦值
for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
請(qǐng)?zhí)羁眨瓜旅娉绦蚨蔚墓δ芘c之完全相同
S=1.0;k=1;
while([8]){s=s+1.0/(k*(k+1));[9];}
printf("s=%f\n\n",s);
20.表示“整數(shù)x的絕對(duì)值大于5”時(shí)值為“假”的C語(yǔ)言表達(dá)式是______。
21.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語(yǔ)句,且fun函數(shù)為void類型;請(qǐng)寫出fun函數(shù)的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}
22.以下程序統(tǒng)計(jì)從終端輸入的字符中大寫字母的個(gè)數(shù)。用#號(hào)作為輸入結(jié)束標(biāo)志,請(qǐng)?zhí)羁铡?include<stdio.h>#include<ctype.h>main(){intnum[26],i;charc;for(i=0;i<26;i++)num[i]=0;();while(c!='#'}{if(isupperC)num[c-65]+=1;}for(i=0;i<26;i++)if(num[i])printf("%c,%d\n",i+65,num[i]);}
23.常用的軟件結(jié)構(gòu)設(shè)計(jì)工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
24.對(duì)軟件是否能達(dá)到用戶所期望的要求的測(cè)試稱為【】。
三、3.程序設(shè)計(jì)題(10題)25.N名學(xué)生的成績(jī)已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫函數(shù)fun(),它的功能是:找出學(xué)生的最低分,由函數(shù)值返回。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<Stdlib.h>
#defineN8
StructSlist
{doubles;
StructSlist*next;
};
tyPedefStructSlistSTREC;
doublefun(STREC*h)
{
}
STREC*Creat(double*S)
{
STREC*h,*p,*q;
inti=0;
h=p={STREC*)malloc(sizeof(STREC));
p->S=0;
while(i<N)
/*產(chǎn)生8個(gè)節(jié)點(diǎn)的鏈表,各分?jǐn)?shù)存入鏈表中*/
{q=(STREC*)malloc(sizeOf(STREC));
p->S=S[i];i++;p->next=q;p=q;
}
p->next=NULL;
returnh;
/*返回鏈表的首地址*/
}
outlist(STREC*h)
{
STREC*p;
p=h;
printf("head");
do
{printf("->%2.of",p->s);p=p->next;}
/*輸/出各分?jǐn)?shù)*/
while(p!=NULL);
printf("\n\n");
}
main()
{
doubles[N]={56,89,76,95,91,68,75,
85},min;
STREC*h;
h=creat(S);
outlist(h);
min=fun(h);
printf("min=%6.If\n",min);
}
26.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun(),它的功能是:除了尾部的,:號(hào)之外,將字符串中其他*號(hào)全部刪除。形參p已指向字符串中最后一個(gè)字母。在編寫函數(shù)時(shí),不得使用C語(yǔ)言的字符串函數(shù)。
例如,若字符串中的內(nèi)容為****A*BC*DEF*G******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是ABCDEFG******。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(char*a,char*p)
{
}
main()
chars[81],*t;
printf("Enterastring:\n");
gets(s);
t=s;
while(*t)
t++;
t--;/*指針t指向字符串尾部*/
while(*t=='*')
t--;/*指針t指向最后一個(gè)字母*/
fun(s,t);
printf("Thestringafterdeleted:\n");
puts(s);
}
27.請(qǐng)編寫函數(shù)fun(),其功能是:計(jì)算并輸出給定10個(gè)數(shù)的方差。
其中
例如,給定的10個(gè)數(shù)為95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,則輸出為S=11.730729。
注意;部分源程序給出如下.
請(qǐng)勿改動(dòng)主函數(shù)mam和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#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);
}
28.請(qǐng)編寫一個(gè)函數(shù)fun(),它的功能是:求出1到m(含m)之內(nèi)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。
例如,若傳給m的值為50,則程序輸出:
7111421X283335424449
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
#defineM100
voidfun(intm,int*a,int*n)
{
}
main()
{
intaa[M],n,k;
clrscr();
fun(50,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)/*每行輸出20個(gè)數(shù)*/
{printf("%4d",aa[k]);
printf("\n");
}
else
printf("%4d",aa[k]);
printf("\n");
}
29.請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。
注意:部分源程序存在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。
30.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun(),它的功能是:只刪除字符串前導(dǎo)和尾部的*號(hào),串中字母之間的*號(hào)都不刪除。形參n給出了字符串的K度,形參h給出了字符串中前導(dǎo)*號(hào)的個(gè)數(shù),形參e給出了字符山中最后*號(hào)的個(gè)數(shù)。在編寫函數(shù)時(shí),不得使用c語(yǔ)言提供的字符串函數(shù)。
例如,若字符串中的內(nèi)容為****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是A*BC*DEF*G。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,儀在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(char*a;intn,inth,inte)
{
}
main()
{
chars[81],*t,*f;
intm=0,tn=0,fn=0;
printf("Enterastring:\n");
gets(s);
t=f=s;
while(*t)
{t++;m++;}/*m為字符串的長(zhǎng)度*/
t--;/*指針t指身字符串尾部*/
while(*t=='*')
{t--;tn++;}
/*指針t指向最后一個(gè)字母,tn統(tǒng)計(jì)尾部'*'的個(gè)數(shù)*/
while(*f=='*')
{f++;fn++;}
/*指針f指向第一個(gè)字母,tn統(tǒng)計(jì)導(dǎo)'*'的個(gè)數(shù)*/
fun(s,m,fn,tn);
printf("Thestringafterdeleted:\n");
puts(s);
}
31.已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是;找出成績(jī)最高的學(xué)生記錄,通過(guò)形參返回主函數(shù)(規(guī)定只有一個(gè)最高分)。已給出函數(shù)的首部,請(qǐng)完成該函數(shù)。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#defineN10
typedefstructss/*定義結(jié)構(gòu)體*/
{charnum[10];
ints;
}STU;
fun(STUa[],STU*s)
{
}
main()
{
STUa[N]={{"A01",81},{"A02",89},
{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},
{"A09",80},{"A10",71}},m;
inti;
clrscr();
printf("*****Theoriginaldata*****");
for(i=0;i<N;i++)
printf("No=%sMark=%d\n",a[i].hum,
a[i].s);
fun(a,&m);
printf("*****THERESULT*****\n");
printf("Thetop:%s,%d\n",m.num,m.s);
}
32.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,它的功能是:只刪除字符串前導(dǎo)和尾部的*號(hào),串中字母之間的*號(hào)都不刪除。形參n給出了字符串的長(zhǎng)度,形參h給出了字符串中前導(dǎo)*號(hào)的個(gè)數(shù),形參e給出了字符串中最后*號(hào)的個(gè)數(shù)。在編寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。
例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:A*BC*DEF*G。
注意:部分源程序在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。
33.請(qǐng)編寫函數(shù)fun(),它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。
S=1-x+x2(上標(biāo))/2!-x3(上標(biāo))/3!+…+(-1*x)n(上標(biāo))/n!
例如,當(dāng)n=15,x=0.5時(shí),函數(shù)值為0.606531。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
doublefun(doublex,intn)
{
}
main()
{
clrscr();
printf("%f",fun(0.5,15));
}
34.編寫函數(shù)fun(),它的功能是:求出1~1000之內(nèi)能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),并將它們放在a所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。
[注意]部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
[試題源程序]
#include<conio.h>
#include<stdio.h>
voidfun(int*a,int*n)
{
}
main()
{
intaa[1000],n,k;
clrscr();
fun(aa,&n);
for(k=0;k<n;k++)
if(k+1)%10==0)
{
printf("%5d",aa[k]);
printf("\n");
}
else
printf("%5d",aa[i]);
}
四、單選題(0題)35.為了隱藏在文本框中輸入的信息,用占位符代替顯示用戶輸入的字符,需要設(shè)置的屬性是()。
A.ValueB.ControlSoureeC.InputMaskD.PasswordChar
五、單選題(0題)36.用不帶頭結(jié)點(diǎn)的單鏈表存儲(chǔ)隊(duì)列,其頭指針指向隊(duì)頭結(jié)點(diǎn),尾指針指向隊(duì)尾結(jié)點(diǎn),則在進(jìn)行出隊(duì)操作時(shí)()。
A.僅修改隊(duì)頭指針B.僅修改隊(duì)尾指針C.隊(duì)頭、隊(duì)尾指針都可能要修改D.隊(duì)頭、隊(duì)尾指針都要修改
六、單選題(0題)37.設(shè)有定義“intk=3,i=2;”,以下選項(xiàng)中,變量k的值與其他3個(gè)不同的是()。
A.k-=i;B.k=--i;C.k=i-1;D.k=i--;
參考答案
1.AC語(yǔ)言中,分號(hào)為一條語(yǔ)句的結(jié)束。因此“for(i=0;i<4;i++,i++)for(k=1;k<3;k++);”是完整的語(yǔ)句,“printf(“*”);”是獨(dú)立語(yǔ)句,不屬于for循環(huán)。最后執(zhí)行printf語(yǔ)句輸出“*”。故本題答案為A選項(xiàng)。
2.D本程序主要考查遞歸函數(shù)。fun(7),首先將參數(shù)代入函數(shù),因?yàn)?7/2)>1,所以執(zhí)行f(3),依此類推直到f(1.5),(1.5/2)<1,所以執(zhí)行打印函數(shù),此時(shí)X值為3,然后退出f(1.5),返回f(3),打印x值即7。所以選D。
3.A程序定義整型變量a和i,其中a的初值為7。for循環(huán)中,循環(huán)變量i的取值為1,2,3。循環(huán)體中判斷a的取值,當(dāng)a>14時(shí),執(zhí)行break跳出循環(huán);當(dāng)a取值為奇數(shù)時(shí),a%2==1,a自增3,執(zhí)行continue繼續(xù)執(zhí)行循環(huán)體;當(dāng)a取值為偶數(shù)時(shí),a%2==0,a自增4,輸出i和a的值。i取值為1時(shí),a取值為7,自增3后a的值為10,執(zhí)行下一個(gè)循環(huán)。i取值為2時(shí),a取值為10,自增4后a的值為14,輸出2,14。i取值為3時(shí),a取值為14,自增4后a的值為18,輸出3,18。i取值為4時(shí),a取值為18,循環(huán)終止,輸出4,18。綜上,程序輸出:2,14,3,18,4,18。本題答案為A選項(xiàng)。
4.A
5.A
6.E
7.B
8.B【答案】:B
【知識(shí)點(diǎn)】:軟件生命周期
【解析】:一個(gè)軟件產(chǎn)品或軟件系統(tǒng)要經(jīng)歷孕育、誕生、成長(zhǎng)、成熟、衰亡等階段,一般稱為軟件生命周期。它把整個(gè)軟件生存周期劃分為若干階段,使得每個(gè)階段有明確的任務(wù),使規(guī)模大,結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變的容易控制和管理。通常,軟件生存周期包括可行性分析與開發(fā)項(xiàng)計(jì)劃、需求分析、設(shè)計(jì)(概要設(shè)計(jì)和詳細(xì)設(shè)計(jì))、編碼、測(cè)試、維護(hù)等活動(dòng),可以將這些活動(dòng)以適當(dāng)?shù)姆绞椒峙涞讲煌碾A段去完成。故選B。
9.A在定義函數(shù)時(shí),函數(shù)名后面圓括號(hào)中的變量名稱為“形式參數(shù)”(簡(jiǎn)稱形參)。在主調(diào)函數(shù)中調(diào)用一個(gè)函數(shù)時(shí),函數(shù)名后面圓括號(hào)中的參數(shù)(可以是一個(gè)表達(dá)式)稱為“實(shí)際參數(shù)”(簡(jiǎn)稱實(shí)參)。C語(yǔ)言規(guī)定,實(shí)參變量對(duì)形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實(shí)參傳給形參,而不能由形參傳給實(shí)參。在內(nèi)存中,實(shí)參單元與形參單元是不同的單元。故本題答案為A選項(xiàng)。
10.D
11.B
12.D
13.(double*)(double*)解析:本題考查強(qiáng)制類型轉(zhuǎn)換。函數(shù)malloc的默認(rèn)返回是void*,若要使指針指向double類型,必須進(jìn)行類型轉(zhuǎn)換,類型轉(zhuǎn)換格式為:(數(shù)據(jù)類型*)。
14.若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abe,則引用變量abe成員s的標(biāo)記形式有abe.a和p_abc->a。
15.內(nèi)容內(nèi)容
16.1010解析:此題考查逗號(hào)表達(dá)式。逗號(hào)表達(dá)式的值是最后一個(gè)表達(dá)式的值,所以本題的返回值是a+4。前面已經(jīng)給a賦值6,所以追回值a+4=6+4=10。
17.軟件工程管理軟件工程管理解析:軟件工程足指,采用工程的概念、原理、技術(shù)和方法指導(dǎo)軟件的開發(fā)與維護(hù):軟件工程學(xué)的主要研究對(duì)象包括軟件開發(fā)與維護(hù)的技術(shù)、方法、工具和管理等方面。即軟件工程研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和軟件工程管理。
18.i<=xz*y。i<=xz*y。解析:循環(huán)次數(shù)應(yīng)該是x次,相當(dāng)于x個(gè)y相乘,循環(huán)體中z作為累乘器,值為z*y。
19.本題要求將一個(gè)for循環(huán)改成while循環(huán)。首先要保證循環(huán)條件相同,在for循環(huán)中,每次執(zhí)行循環(huán)之后,循環(huán)控制變量k都會(huì)加1,而while循環(huán)則沒(méi)有,故需在循環(huán)體中增加改變k數(shù)值的語(yǔ)句“k++”。\r\n\r\n
20.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本題考查基本邏輯表達(dá),“整數(shù)x的絕對(duì)值大于5”時(shí)值為“假”,即整數(shù)x的絕對(duì)值小于等于5,也就是整數(shù)x要大于等于-5且要小于等于5。這里“且”用“與(&&)”表示,所以C語(yǔ)言表達(dá)式為:(x>-5)&&(x<5)。
21.
22.c=getchar()
23.模塊模塊解析:矩形表示的是模塊,箭頭表示的是模塊間的調(diào)用關(guān)系。用帶實(shí)心圓的箭頭表示傳遞的是控制信息,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
24.有效性測(cè)試有效性測(cè)試
25.doublefun(STREC*h){doublemin=h->s;while(h!=NULL)/*通過(guò)循環(huán)找到最低分?jǐn)?shù)*/{if(min>h->s)min=h->s;h=h->next;}returnmin;}doublefun(STREC\u3000*h)\r\n{\r\ndoublemin=h->s;\r\nwhile(h!=NULL)/*通過(guò)循環(huán)找到最低分?jǐn)?shù)*/\r\n{if(min>h->s)\r\nmin=h->s;\r\nh=h->next;\r\n}\r\nreturnmin;\r\n}解析:在本題中,h為—個(gè)指向結(jié)構(gòu)體的指針變量,若要引用它所指向的結(jié)構(gòu)體中的某一成員時(shí),要用指向運(yùn)算符“->”。由于是鏈表,所以要使h逐一往后移動(dòng),使用的是h=h->next。
26.voidfun(char*achar*p){char*t=a;for(;t<=p;t++)if(*t!='*')*(a++)=*t;/*將p以前所有不是*號(hào)的字符保留下來(lái)*/for(;*t!='\0';t++)*(a++)=.t;/*將p以后的所有*號(hào)保留下來(lái)*/*a='\0';/*在字符串最后加上結(jié)束標(biāo)記位*/voidfun(char*a,char*p)\r\n{\r\nchar*t=a;\r\nfor(;t<=p;t++)\r\nif(*t!='*')\r\n*(a++)=*t;/*將p以前所有不是*號(hào)的字符保留下來(lái)*/\r\nfor(;*t!='\\0';t++)\r\n*(a++)=.t;/*將p以后的所有*號(hào)保留下來(lái)*/\r\n*a='\\0';/*在字符串最后加上結(jié)束標(biāo)記位*/解析:本題曾在歷年上機(jī)考試及模擬試題中多次出現(xiàn),一般用兩個(gè)循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)。第1個(gè)循環(huán)的作用是將p以前所有不是*號(hào)的字符保留下來(lái),即刪除所有的*號(hào)。第2個(gè)循環(huán)的作用是將p以后的所有*號(hào)保留下來(lái)。
27.doublefun(doublex[10]){doublexl=0.0s=0.0;inti;for(i=0;i<10;i++)xl=xl+x[i];xl-xl/10;/*求10個(gè)數(shù)的平均值*/for(i=0;i<l0;i++)s=s+(x[i]-xl)*(x[i]-x1);returnsqrt(s/l0);/*求10個(gè)數(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個(gè)數(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個(gè)數(shù)的方差*/\r\n}解析:又是一道算式表達(dá)題,程序中用第1個(gè)循環(huán)來(lái)完成求10個(gè)數(shù)的總和,接著再用x1=x1/10來(lái)求出平均值。
28.voidfun(intmint*aint*n){intij=0;for(i=1;i<=m;i++)if(i%7==0||i%11==0)/*求出1到m(含m)之內(nèi)能被7或11整除的所有整數(shù)放在數(shù)組a中*/a[j++]=i;*n=j;/*返回這些數(shù)的個(gè)數(shù)*/}voidfun(intm,int*a,int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<=m;i++)\r\nif(i%7==0||i%11==0)/*求出1到m(含m)之內(nèi)能被7或11整除的所有整數(shù)放在數(shù)組a中*/\r\na[j++]=i;\r\n*n=j;/*返回這些數(shù)的個(gè)數(shù)*/\r\n}解析:本題要找出能被7或11整除的所有整數(shù),注意數(shù)學(xué)中的“或”和C語(yǔ)言中的“或”的區(qū)別,但在此處,if條件語(yǔ)句中用了“||”運(yùn)算符,若要找能同時(shí)被7和11整除的所有整數(shù)則在if()中應(yīng)用“&&”運(yùn)算符。
29.
解析:該程序功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)。其中,解題思路是將每位數(shù)字字符串的ASCII碼減去48(字符“0”的ASCII碼值),變成數(shù)字0~9。然后再不斷進(jìn)行高位乘以10加低位的運(yùn)算,或者反過(guò)來(lái)從低位向高位求,即不斷進(jìn)行低位加高位乘以10的運(yùn)算。
30.voidfun(char*aintninthinte){intij=0for(i=h;i<n-e;i++)/*第一個(gè)字母和最后一個(gè)字母之間的字符全不刪除*/a[j++]=a[i];a[j]='\0;/*在字符串最后加上結(jié)束標(biāo)記*/}voidfun(char*a,intn,inth,inte)\r\n{\r\ninti,j=0\r\nfor(i=h;i<n-e;i++)/*第一個(gè)字母和最后一個(gè)字母之間的字符全不刪除*/\r\na[j++]=a[i];\r\na[j]='\\0;/*在字符串最后加上結(jié)束標(biāo)記*/\r\n}解析:注意循環(huán)變量i的初值(h)和終止值(n-e),由于h和e分別是a中的前導(dǎo)*和尾部*的個(gè)數(shù),n是字符串的長(zhǎng)度,所以從a[h])到a[n-e-1]之間的所有字符都要留下,而其他字符均刪除。刪除操作(即留下相應(yīng)字符)現(xiàn)己由循環(huán)完成。
本題技巧部分:
voidfun(char*a,intn,inth,inte)
{a[n-e]='\\0;
strcpy(a,a+h);}
另外,請(qǐng)注意,a(n-e]的作用是使最后一個(gè)字母后出現(xiàn)字符串結(jié)束符。木程序采用了strcpy()庫(kù)函數(shù)。
31.fun(STUa[]STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=0;i<N;i++)/*找出成績(jī)最高的學(xué)生記錄*/\r\nif(s->s<a[i].s)\r\n*s==a[i];\r\n}fun(STUa[],STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=0;i<N;i++)/*找出成績(jī)最高的學(xué)生記錄*/\r\nif(s->s<a[i].s)\r\n*s==a[i];\r\n}解析:本題的流程是這樣的,先使s指向第1個(gè)學(xué)生,我們的題干目的是找出分?jǐn)?shù)最高的學(xué)生,所以if語(yǔ)句的條件是s->s<a[i].s。此外,在做本題時(shí),我們應(yīng)該熟練掌握“指向運(yùn)算符”和“成員運(yùn)算符”的相關(guān)知識(shí)。題中“s->s”也可換成“(*s).s”。
32.
解析:該程序功能是刪除字符串前導(dǎo)和尾部的“*”號(hào)。解題過(guò)程是根據(jù)主函數(shù)中求出的前導(dǎo)和尾部的“*”數(shù)目,作為for循環(huán)條件,并且在循環(huán)過(guò)程中第一個(gè)非“*'號(hào)開始前移,實(shí)現(xiàn)函數(shù)功能。
33.doublefun(doublexintn){intij=1;doubles=1.0s1=1.0;for(i=1;i<=n;i++){j=-1*j;s1=s1*i/*各項(xiàng)中的階乘*/s=s+j*pow(xi)/s1;/*按公式求出*/}returns;}doublefun(doublex,intn)\r\n{\r\ninti,j=1;\r\ndoubles=1.0,s1=1.0;\r\nfor(i=1;i<=n;i++)\r\n{\r\nj=-1*j;\r\ns1=s1*i/*各項(xiàng)中的階乘*/\r\ns=s+j*pow(x,i)/s1;/*按公式求出*/\r\n}\r\nreturns;\r\n}解析:本程序中用s1來(lái)表示每項(xiàng)的分母(即各項(xiàng)中的階乘),要注意本程序中s和s1的初值都為1。注意到本題的公式中是加減相間的,這里要學(xué)會(huì)使用語(yǔ)句j=-1*j來(lái)實(shí)現(xiàn)。
34.voidfun(int*aint*n){intij=0;for(i=1;i<=1000;i++)if((i%7=0||i%11==0)&&i%77!=0)a[j++]=i;*n=j;}voidfun(int*a,int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<=1000;i++)\r\nif((i%7=0||i%11==0)&&i%77!=0)\r\na[j++]=i;\r\n*n=j;\r\n}解析:本題的關(guān)鍵是if條件語(yǔ)句及參數(shù)傳遞。本題的設(shè)計(jì)思路是:(1)利用循環(huán)遍歷1到1000之內(nèi)的整數(shù);(2)利用if語(yǔ)句判斷,把查找到的整數(shù)保存到形參數(shù)組a中;(3)把數(shù)組a中數(shù)組元素的個(gè)數(shù)賦值到形參指針n所指的內(nèi)存。注意程序中if語(yǔ)句的判斷條件,本題是找出能被7或11整除但不能同時(shí)被7和11整除的所有整數(shù)。能同時(shí)被7和11整除的數(shù)一定能被77整除,且不能被7整除的數(shù)不一定就是能被7或11整除的數(shù)。所以,可得出程序中的if語(yǔ)句。
35.DD。【解析】本框的PasswordChar屬性用來(lái)指定文本框是顯示用戶輸入的字符還是顯示占位符,指定用做占位符的字符。
36.C
37.D選項(xiàng)A是復(fù)合的賦值運(yùn)算符,等價(jià)于“k=k-i”,所以k的值為1;選項(xiàng)B中前綴自減運(yùn)算符首先將i的值自減1,然后將自減后的值賦給k,所以k和i的值都是1;選項(xiàng)C中k的值為1;選項(xiàng)D中后綴自減運(yùn)算符將i的值先賦給k,然后i自減1,所以k的值為2。故本題答案為D選項(xiàng)。2021-2022學(xué)年河北省唐山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(12題)1.以下程序段中的變量已正確定義:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf(“*”);該程序段的輸出結(jié)果是()。
A.*B.****C.**D.********
2.有以下程序#include<stdio.h>voidfun(intx){if(x/2>1)fun(x/2);printf("%d",x);}main{fun(7);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A.137B.731C.73D.37
3.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.2,14,3,18,4,18
B.1,14,2,18,3,18
C.2,14,3,18,4,22
D.1,14,2,18,3,18,4,18
4.若x和y都是int型變量,x=100,y=200,且有程序片段:printf("%d",(x,y));上面程序片段的輸出結(jié)果()
A.200B.100C.100200D.輸出格式符不夠,輸出不確定的值
5.
6.在一個(gè)雙向鏈表中,q的前一個(gè)節(jié)點(diǎn)為p,q的后一個(gè)節(jié)點(diǎn)為n,刪除q所指向節(jié)點(diǎn),則執(zhí)行()
A.deleteq;
B.q->prev->next=q->prev;q->next->prev=q->next;deleteq;
C.q->prev=p->next;p->next=p->prev;deleteq;
D.q->next=q->prev->next;q->prev=q->next->prev;deleteq;
E.q->prev->next=q->next;q->next->prev=q->prev;deleteq;
F.p->prev->next=p->next;p->next->prev=p->prev;deleteq->next;
7.對(duì)線性表進(jìn)行折半查找時(shí),要求線性表必須()。A.A.以順序方式存儲(chǔ)
B.以順序方式存儲(chǔ),且結(jié)點(diǎn)按關(guān)鍵字有序排列
C.以鏈?zhǔn)椒绞酱鎯?chǔ)
D.以鏈?zhǔn)椒绞酱鎯?chǔ),且結(jié)點(diǎn)按關(guān)鍵字有序排列
8.軟件生命周期中的活動(dòng)不包括()
A.軟件維護(hù)B.市場(chǎng)調(diào)研C.軟件測(cè)試D.需求分析
9.若函數(shù)調(diào)用時(shí)的實(shí)參為變量,下列關(guān)于函數(shù)形參和實(shí)參的敘述中正確的是()。
A.函數(shù)的形參和實(shí)參分別占用不同的存儲(chǔ)單元
B.形參只是形式上的存在,不占用具體存儲(chǔ)單元
C.同名的實(shí)參和形參占同一存儲(chǔ)單元
D.函數(shù)的實(shí)參和其對(duì)應(yīng)的形參共占同一存儲(chǔ)單元
10.若某表最常用的操作是在最后一個(gè)結(jié)點(diǎn)之后插入一個(gè)結(jié)點(diǎn)或刪除最后一個(gè)結(jié)點(diǎn),則采用()存儲(chǔ)方式最節(jié)省運(yùn)算時(shí)間。
A.單鏈表B.給出表頭指針的單循環(huán)鏈表C.雙鏈表D.帶頭結(jié)點(diǎn)的雙循環(huán)鏈表
11.一個(gè)隊(duì)列的入隊(duì)序列是1,2,3,4,則隊(duì)列的輸出序列是()。
A.4,3,2,1B.1,2,3,4C.1,4,3,2D.3,2,4,1
12.設(shè)計(jì)一個(gè)判別表達(dá)式中左、右括號(hào)是否配對(duì)出現(xiàn)的算法,采用()數(shù)據(jù)結(jié)構(gòu)最佳。A.線性表的順序存儲(chǔ)結(jié)構(gòu)B.隊(duì)列C.線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)D.棧
二、2.填空題(12題)13.下面的語(yǔ)句要使指針p指向一個(gè)double類型的動(dòng)態(tài)存儲(chǔ)單元,請(qǐng)?zhí)羁铡?/p>
p=【】malloc(sizeof(double));
14.設(shè)有定義“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,則對(duì)結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc______。
15.一個(gè)模塊直接訪問(wèn)另一個(gè)模塊的內(nèi)容,稱為【】藕合。
16.若a是int型變量,則下列表達(dá)式的值為______。
(a=2*3,a*2),a+4
17.軟件工程研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和【】。
18.以下函數(shù)用以求y的x次方。補(bǔ)足所缺語(yǔ)句。
doublefun(doubley,intx)
{inti;
doublez=1.0;
for(i=1;i______;i++)
z=______;
returnz;
}
19.有以下程序段,且變量已正確定義和賦值
for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
請(qǐng)?zhí)羁眨瓜旅娉绦蚨蔚墓δ芘c之完全相同
S=1.0;k=1;
while([8]){s=s+1.0/(k*(k+1));[9];}
printf("s=%f\n\n",s);
20.表示“整數(shù)x的絕對(duì)值大于5”時(shí)值為“假”的C語(yǔ)言表達(dá)式是______。
21.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語(yǔ)句,且fun函數(shù)為void類型;請(qǐng)寫出fun函數(shù)的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}
22.以下程序統(tǒng)計(jì)從終端輸入的字符中大寫字母的個(gè)數(shù)。用#號(hào)作為輸入結(jié)束標(biāo)志,請(qǐng)?zhí)羁铡?include<stdio.h>#include<ctype.h>main(){intnum[26],i;charc;for(i=0;i<26;i++)num[i]=0;();while(c!='#'}{if(isupperC)num[c-65]+=1;}for(i=0;i<26;i++)if(num[i])printf("%c,%d\n",i+65,num[i]);}
23.常用的軟件結(jié)構(gòu)設(shè)計(jì)工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
24.對(duì)軟件是否能達(dá)到用戶所期望的要求的測(cè)試稱為【】。
三、3.程序設(shè)計(jì)題(10題)25.N名學(xué)生的成績(jī)已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫函數(shù)fun(),它的功能是:找出學(xué)生的最低分,由函數(shù)值返回。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<Stdlib.h>
#defineN8
StructSlist
{doubles;
StructSlist*next;
};
tyPedefStructSlistSTREC;
doublefun(STREC*h)
{
}
STREC*Creat(double*S)
{
STREC*h,*p,*q;
inti=0;
h=p={STREC*)malloc(sizeof(STREC));
p->S=0;
while(i<N)
/*產(chǎn)生8個(gè)節(jié)點(diǎn)的鏈表,各分?jǐn)?shù)存入鏈表中*/
{q=(STREC*)malloc(sizeOf(STREC));
p->S=S[i];i++;p->next=q;p=q;
}
p->next=NULL;
returnh;
/*返回鏈表的首地址*/
}
outlist(STREC*h)
{
STREC*p;
p=h;
printf("head");
do
{printf("->%2.of",p->s);p=p->next;}
/*輸/出各分?jǐn)?shù)*/
while(p!=NULL);
printf("\n\n");
}
main()
{
doubles[N]={56,89,76,95,91,68,75,
85},min;
STREC*h;
h=creat(S);
outlist(h);
min=fun(h);
printf("min=%6.If\n",min);
}
26.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun(),它的功能是:除了尾部的,:號(hào)之外,將字符串中其他*號(hào)全部刪除。形參p已指向字符串中最后一個(gè)字母。在編寫函數(shù)時(shí),不得使用C語(yǔ)言的字符串函數(shù)。
例如,若字符串中的內(nèi)容為****A*BC*DEF*G******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是ABCDEFG******。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(char*a,char*p)
{
}
main()
chars[81],*t;
printf("Enterastring:\n");
gets(s);
t=s;
while(*t)
t++;
t--;/*指針t指向字符串尾部*/
while(*t=='*')
t--;/*指針t指向最后一個(gè)字母*/
fun(s,t);
printf("Thestringafterdeleted:\n");
puts(s);
}
27.請(qǐng)編寫函數(shù)fun(),其功能是:計(jì)算并輸出給定10個(gè)數(shù)的方差。
其中
例如,給定的10個(gè)數(shù)為95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,則輸出為S=11.730729。
注意;部分源程序給出如下.
請(qǐng)勿改動(dòng)主函數(shù)mam和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#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);
}
28.請(qǐng)編寫一個(gè)函數(shù)fun(),它的功能是:求出1到m(含m)之內(nèi)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。
例如,若傳給m的值為50,則程序輸出:
7111421X283335424449
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
#defineM100
voidfun(intm,int*a,int*n)
{
}
main()
{
intaa[M],n,k;
clrscr();
fun(50,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)/*每行輸出20個(gè)數(shù)*/
{printf("%4d",aa[k]);
printf("\n");
}
else
printf("%4d",aa[k]);
printf("\n");
}
29.請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。
注意:部分源程序存在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。
30.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun(),它的功能是:只刪除字符串前導(dǎo)和尾部的*號(hào),串中字母之間的*號(hào)都不刪除。形參n給出了字符串的K度,形參h給出了字符串中前導(dǎo)*號(hào)的個(gè)數(shù),形參e給出了字符山中最后*號(hào)的個(gè)數(shù)。在編寫函數(shù)時(shí),不得使用c語(yǔ)言提供的字符串函數(shù)。
例如,若字符串中的內(nèi)容為****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是A*BC*DEF*G。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,儀在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(char*a;intn,inth,inte)
{
}
main()
{
chars[81],*t,*f;
intm=0,tn=0,fn=0;
printf("Enterastring:\n");
gets(s);
t=f=s;
while(*t)
{t++;m++;}/*m為字符串的長(zhǎng)度*/
t--;/*指針t指身字符串尾部*/
while(*t=='*')
{t--;tn++;}
/*指針t指向最后一個(gè)字母,tn統(tǒng)計(jì)尾部'*'的個(gè)數(shù)*/
while(*f=='*')
{f++;fn++;}
/*指針f指向第一個(gè)字母,tn統(tǒng)計(jì)導(dǎo)'*'的個(gè)數(shù)*/
fun(s,m,fn,tn);
printf("Thestringafterdeleted:\n");
puts(s);
}
31.已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是;找出成績(jī)最高的學(xué)生記錄,通過(guò)形參返回主函數(shù)(規(guī)定只有一個(gè)最高分)。已給出函數(shù)的首部,請(qǐng)完成該函數(shù)。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#defineN10
typedefstructss/*定義結(jié)構(gòu)體*/
{charnum[10];
ints;
}STU;
fun(STUa[],STU*s)
{
}
main()
{
STUa[N]={{"A01",81},{"A02",89},
{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},
{"A09",80},{"A10",71}},m;
inti;
clrscr();
printf("*****Theoriginaldata*****");
for(i=0;i<N;i++)
printf("No=%sMark=%d\n",a[i].hum,
a[i].s);
fun(a,&m);
printf("*****THERESULT*****\n");
printf("Thetop:%s,%d\n",m.num,m.s);
}
32.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,它的功能是:只刪除字符串前導(dǎo)和尾部的*號(hào),串中字母之間的*號(hào)都不刪除。形參n給出了字符串的長(zhǎng)度,形參h給出了字符串中前導(dǎo)*號(hào)的個(gè)數(shù),形參e給出了字符串中最后*號(hào)的個(gè)數(shù)。在編寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。
例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:A*BC*DEF*G。
注意:部分源程序在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。
33.請(qǐng)編寫函數(shù)fun(),它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。
S=1-x+x2(上標(biāo))/2!-x3(上標(biāo))/3!+…+(-1*x)n(上標(biāo))/n!
例如,當(dāng)n=15,x=0.5時(shí),函數(shù)值為0.606531。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
doublefun(doublex,intn)
{
}
main()
{
clrscr();
printf("%f",fun(0.5,15));
}
34.編寫函數(shù)fun(),它的功能是:求出1~1000之內(nèi)能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),并將它們放在a所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。
[注意]部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
[試題源程序]
#include<conio.h>
#include<stdio.h>
voidfun(int*a,int*n)
{
}
main()
{
intaa[1000],n,k;
clrscr();
fun(aa,&n);
for(k=0;k<n;k++)
if(k+1)%10==0)
{
printf("%5d",aa[k]);
printf("\n");
}
else
printf("%5d",aa[i]);
}
四、單選題(0題)35.為了隱藏在文本框中輸入的信息,用占位符代替顯示用戶輸入的字符,需要設(shè)置的屬性是()。
A.ValueB.ControlSoureeC.InputMaskD.PasswordChar
五、單選題(0題)36.用不帶頭結(jié)點(diǎn)的單鏈表存儲(chǔ)隊(duì)列,其頭指針指向隊(duì)頭結(jié)點(diǎn),尾指針指向隊(duì)尾結(jié)點(diǎn),則在進(jìn)行出隊(duì)操作時(shí)()。
A.僅修改隊(duì)頭指針B.僅修改隊(duì)尾指針C.隊(duì)頭、隊(duì)尾指針都可能要修改D.隊(duì)頭、隊(duì)尾指針都要修改
六、單選題(0題)37.設(shè)有定義“intk=3,i=2;”,以下選項(xiàng)中,變量k的值與其他3個(gè)不同的是()。
A.k-=i;B.k=--i;C.k=i-1;D.k=i--;
參考答案
1.AC語(yǔ)言中,分號(hào)為一條語(yǔ)句的結(jié)束。因此“for(i=0;i<4;i++,i++)for(k=1;k<3;k++);”是完整的語(yǔ)句,“printf(“*”);”是獨(dú)立語(yǔ)句,不屬于for循環(huán)。最后執(zhí)行printf語(yǔ)句輸出“*”。故本題答案為A選項(xiàng)。
2.D本程序主要考查遞歸函數(shù)。fun(7),首先將參數(shù)代入函數(shù),因?yàn)?7/2)>1,所以執(zhí)行f(3),依此類推直到f(1.5),(1.5/2)<1,所以執(zhí)行打印函數(shù),此時(shí)X值為3,然后退出f(1.5),返回f(3),打印x值即7。所以選D。
3.A程序定義整型變量a和i,其中a的初值為7。for循環(huán)中,循環(huán)變量i的取值為1,2,3。循環(huán)體中判斷a的取值,當(dāng)a>14時(shí),執(zhí)行break跳出循環(huán);當(dāng)a取值為奇數(shù)時(shí),a%2==1,a自增3,執(zhí)行continue繼續(xù)執(zhí)行循環(huán)體;當(dāng)a取值為偶數(shù)時(shí),a%2==0,a自增4,輸出i和a的值。i取值為1時(shí),a取值為7,自增3后a的值為10,執(zhí)行下一個(gè)循環(huán)。i取值為2時(shí),a取值為10,自增4后a的值為14,輸出2,14。i取值為3時(shí),a取值為14,自增4后a的值為18,輸出3,18。i取值為4時(shí),a取值為18,循環(huán)終止,輸出4,18。綜上,程序輸出:2,14,3,18,4,18。本題答案為A選項(xiàng)。
4.A
5.A
6.E
7.B
8.B【答案】:B
【知識(shí)點(diǎn)】:軟件生命周期
【解析】:一個(gè)軟件產(chǎn)品或軟件系統(tǒng)要經(jīng)歷孕育、誕生、成長(zhǎng)、成熟、衰亡等階段,一般稱為軟件生命周期。它把整個(gè)軟件生存周期劃分為若干階段,使得每個(gè)階段有明確的任務(wù),使規(guī)模大,結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變的容易控制和管理。通常,軟件生存周期包括可行性分析與開發(fā)項(xiàng)計(jì)劃、需求分析、設(shè)計(jì)(概要設(shè)計(jì)和詳細(xì)設(shè)計(jì))、編碼、測(cè)試、維護(hù)等活動(dòng),可以將這些活動(dòng)以適當(dāng)?shù)姆绞椒峙涞讲煌碾A段去完成。故選B。
9.A在定義函數(shù)時(shí),函數(shù)名后面圓括號(hào)中的變量名稱為“形式參數(shù)”(簡(jiǎn)稱形參)。在主調(diào)函數(shù)中調(diào)用一個(gè)函數(shù)時(shí),函數(shù)名后面圓括號(hào)中的參數(shù)(可以是一個(gè)表達(dá)式)稱為“實(shí)際參數(shù)”(簡(jiǎn)稱實(shí)參)。C語(yǔ)言規(guī)定,實(shí)參變量對(duì)形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實(shí)參傳給形參,而不能由形參傳給實(shí)參。在內(nèi)存中,實(shí)參單元與形參單元是不同的單元。故本題答案為A選項(xiàng)。
10.D
11.B
12.D
13.(double*)(double*)解析:本題考查強(qiáng)制類型轉(zhuǎn)換。函數(shù)malloc的默認(rèn)返回是void*,若要使指針指向double類型,必須進(jìn)行類型轉(zhuǎn)換,類型轉(zhuǎn)換格式為:(數(shù)據(jù)類型*)。
14.若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abe,則引用變量abe成員s的標(biāo)記形式有abe.a和p_abc->a。
15.內(nèi)容內(nèi)容
16.1010解析:此題考查逗號(hào)表達(dá)式。逗號(hào)表達(dá)式的值是最后一個(gè)表達(dá)式的值,所以本題的返回值是a+4。前面已經(jīng)給a賦值6,所以追回值a+4=6+4=10。
17.軟件工程管理軟件工程管理解析:軟件工程足指,采用工程的概念、原理、技術(shù)和方法指導(dǎo)軟件的開發(fā)與維護(hù):軟件工程學(xué)的主要研究對(duì)象包括軟件開發(fā)與維護(hù)的技術(shù)、方法、工具和管理等方面。即軟件工程研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和軟件工程管理。
18.i<=xz*y。i<=xz*y。解析:循環(huán)次數(shù)應(yīng)該是x次,相當(dāng)于x個(gè)y相乘,循環(huán)體中z作為累乘器,值為z*y。
19.本題要求將一個(gè)for循環(huán)改成while循環(huán)。首先要保證循環(huán)條件相同,在for循環(huán)中,每次執(zhí)行循環(huán)之后,循環(huán)控制變量k都會(huì)加1,而while循環(huán)則沒(méi)有,故需在循環(huán)體中增加改變k數(shù)值的語(yǔ)句“k++”。\r\n\r\n
20.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本題考查基本邏輯表達(dá),“整數(shù)x的絕對(duì)值大于5”時(shí)值為“假”,即整數(shù)x的絕對(duì)值小于等于5,也就是整數(shù)x要大于等于-5且要小于等于5。這里“且”用“與(&&)”表示,所以C語(yǔ)言表達(dá)式為:(x>-5)&&(x<5)。
21.
22.c=getchar()
23.模塊模塊解析:矩形表示的是模塊,箭頭表示的是模塊間的調(diào)用關(guān)系。用帶實(shí)心圓的箭頭表示傳遞的是控制信息,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
24.有效性測(cè)試有效性測(cè)試
25.doublefun(STREC*h){doublemin=h->s;while(h!=NULL)/*通過(guò)循環(huán)找到最低分?jǐn)?shù)*/{if(min>h->s)min=h->s;h=h->next;}returnmin;}doublefun(STREC\u3000*h)\r\n{\r\ndoublemin=h->s;\r\nwhile(h!=NULL)/*通過(guò)循環(huán)找到最低分?jǐn)?shù)*/\r\n{if(min>h->s)\r\nmin=h->s;\r\nh=h->next;\r\n}\r\nreturnmin;\r\n}解析:在本題中,h為—個(gè)指向結(jié)構(gòu)體的指針變量,若要引用它所指向的結(jié)構(gòu)體中的某一成員時(shí),要用指向運(yùn)算符“->”。由于是鏈表,所以要使h逐一往后移動(dòng),使用的是h=h->next。
26.voidfun(char*achar*p){char*t=a;for(;t<=p;t++)if(*t!='*')*(a++)=*t;/*將p以前所有不是*號(hào)的字符保留下來(lái)*/for(;*t!='\0';t++)*(a++)=.t;/*將p以后的所有*號(hào)保留下來(lái)*/*a='\0';/*在字符串最后加上結(jié)束標(biāo)記位*/voidfun(char*a,char*p)\r\n{\r\nchar*t=a;\r\nfor(;t<=p;t++)\r\nif(*t!='*')\r\n*(a++)=*t;/*將p以前所有不是*號(hào)的字符保留下來(lái)*/\r\nfor(;*t!='\\0';t++)\r\n*(a++)=.t;/*將p以后的所有*號(hào)保留下來(lái)*/\r\n*a='\\0';/*在字符串最后加上結(jié)束標(biāo)記位*/解析:本題曾在歷年上機(jī)考試及模擬試題中多次出現(xiàn),一般用兩個(gè)循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)。第1個(gè)循環(huán)的作用是將p以前所有不是*號(hào)的字符保留下來(lái),即刪除所有的*號(hào)。第2個(gè)循環(huán)的作用是將p以后的所有*號(hào)保留下來(lái)。
27.doublefun(doublex[10]){doublexl=0.0s=0.0;inti;for(i=0;i<10;i++)xl=xl+x[i];xl-xl/10;/*求10個(gè)數(shù)的平均值*/for(i=0;i<l0;i++)s=s+(x[i]-xl)*(x[i]-x1);returnsqrt(s/l0);/*求10個(gè)數(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個(gè)數(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個(gè)數(shù)的方差*/\r\n}解析:又是一道
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 供水報(bào)裝驗(yàn)收管理制度
- 供熱公司電氣運(yùn)行管理制度
- 預(yù)防艾梅乙母嬰傳播
- 供電公司報(bào)銷管理制度
- 供電公司防毒管理制度
- 便民流動(dòng)餐廳管理制度
- 保存文物設(shè)備管理制度
- 保安公司衛(wèi)生管理制度
- 保安公司文員管理制度
- 保安報(bào)警記錄管理制度
- 中學(xué)學(xué)生心理健康教育個(gè)案輔導(dǎo)記錄表
- 護(hù)理帶教角色轉(zhuǎn)換實(shí)踐路徑
- 2025年安全生產(chǎn)考試題庫(kù)(行業(yè)安全規(guī)范)-水上安全試題匯編
- 2025年05月四川阿壩州級(jí)事業(yè)單位公開選調(diào)工作人員78人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025-2030中國(guó)硫酸鈣晶須行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告
- 2025屆中考地理全真模擬卷 【山東專用】(含答案)
- 沿街商鋪轉(zhuǎn)讓合同協(xié)議書
- 法律職業(yè)倫理歷年試題及答案
- 2025小升初人教版六年級(jí)英語(yǔ)下學(xué)期期末綜合測(cè)試模擬練習(xí)卷
- 保潔臺(tái)賬管理制度
- 2025年水利工程專業(yè)考試試卷及答案
評(píng)論
0/150
提交評(píng)論