2021年甘肅省嘉峪關(guān)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第1頁(yè)
2021年甘肅省嘉峪關(guān)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第2頁(yè)
2021年甘肅省嘉峪關(guān)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第3頁(yè)
2021年甘肅省嘉峪關(guān)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第4頁(yè)
2021年甘肅省嘉峪關(guān)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(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)介

2021年甘肅省嘉峪關(guān)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、2.填空題(10題)1.下列程序的運(yùn)行結(jié)果是______。

main()

{ints=0,i=1;

while(s<=10)

{s=s+i*i;

i++;

}

printf("%d",-i);

}

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

main()

{

intp[7]={11,13,14,15,16,17,18);

inti=0,j=0;

while(i<7&&p[i]%2==1)

j+p[i++];

printf(“%d\n”j);

}

3.設(shè)a、b、c為int型變量,且a=10、b=5、c=1,則執(zhí)行完以下語(yǔ)句,a的值變?yōu)椤尽俊?/p>

a/=10-(++b)-(c--);

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

{for(j=0;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

5.以下程序通過(guò)函數(shù)指針p調(diào)用函數(shù)fun,請(qǐng)?jiān)谔羁諜趦?nèi)寫出定義變量p的語(yǔ)句。

voidfun(intx,int*y)

{……}

main()

{inta=10,b=20;

【】;/*定義變量p*/

p=fun;p(&a,&b);

}

6.下列程序的運(yùn)行結(jié)果為【】。

main()

{intx=2,y,z;

x*=3+1;

printf("%d,",x++);

x+=y=z=5;

printf("%d,",x);

K=y==Z;

printf{"%d\n",x);

}

7.下列程序執(zhí)行后輸出的結(jié)果是【】。

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

}

8.以下條件表達(dá)式可計(jì)算:1+|a|的值,請(qǐng)?zhí)羁?。a>=0?【】:【】

9.以下程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){intf,f1,f2,i;f1=0;f2=1;printf("%d%d",f1,f2);for(i=3;i<=5;i++){f=-f1+f2,printf("%d",f);f2=f1;f1=f;}printf("\n");}

10.數(shù)據(jù)模型是用來(lái)描述數(shù)據(jù)庫(kù)的結(jié)構(gòu)和語(yǔ)義的,數(shù)據(jù)模型有概念數(shù)據(jù)模型和結(jié)構(gòu)數(shù)據(jù)模型兩類,E-R模型是【】

二、單選題(10題)11.若有定義“inta,b,c;”,想通過(guò)語(yǔ)句“scanf(“%d,%d%d”,&a,&b,&c);”把1、2、3分別賦給變量a、b、c,則正確的鍵盤輸入是()。

A.1,2,3<Enter>

B.1,2<tab>3<Enter>

C.1<Enter><tab>2<tab>3

D.1<Enter>2<Enter>3

12.若有定義;intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)

13.s1和s2已正確定義并分別指向兩個(gè)字符串。若要求:當(dāng)s1所指串大于s2所指串時(shí),執(zhí)行語(yǔ)句s;則以下選項(xiàng)中正確的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,sl)>O)S;

D.if(stremp(s1,s2)>O)S;

14.需求分析的主要任務(wù)是()。

A.確定軟件系統(tǒng)的功能B.確定軟件開發(fā)方法C.確定軟件開發(fā)工具D.確定軟件開發(fā)入員

15.關(guān)于C語(yǔ)言中數(shù)的表示,以下敘述中正確的是()。

A.只有整型數(shù)在允許范圍內(nèi)能精確無(wú)誤地表示,實(shí)型數(shù)會(huì)有誤差

B.只要在允許范圍內(nèi)整型數(shù)和實(shí)型數(shù)都能精確地表示

C.只有實(shí)型數(shù)在允許范圍內(nèi)能精確無(wú)誤地表示,整形數(shù)會(huì)有誤差

D.只有用八進(jìn)制表示的數(shù)才不會(huì)有誤差

16.以下敘述中正確的是A.局部變量說(shuō)明為static存儲(chǔ)數(shù),其生存期將得到延長(zhǎng)

B.全局變量說(shuō)明為static存儲(chǔ)類,其作用域?qū)⒈粩U(kuò)大

C.任何存儲(chǔ)類的變量在未賦初值時(shí),其值都是不確定的

D.形參可以使用的存儲(chǔ)類說(shuō)明符與局部變量完全相同

17.下面程序輸出的結(jié)果是main(){intx;x=-3+4*5-6;printf("%d",x);x=3+4%5-6;printf("%d",x);x=-3+4%6/5;printf("%d",x);x=(7+6)%5/2;printf("%d",x);}

A.111-31B.11-321C.12-321D.11121

18.軟件生命周期中,花費(fèi)最多的階段是()。

A.詳細(xì)設(shè)計(jì)B.軟件編碼C.軟件測(cè)試D.軟件維護(hù)

19.

20.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1三、程序設(shè)計(jì)題(10題)21.規(guī)定輸入的字符串中只包含字母和+號(hào)。編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)和尾部的母號(hào)外,將其他的*號(hào)全部刪除。形參h已指向字符串中第一個(gè)字母,形參P指向字符串中最后一個(gè)字母。在編寫函數(shù)時(shí),不得使用c語(yǔ)言提供的字符串函數(shù)。22.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫一個(gè)函數(shù),其功能是從傳入的num個(gè)字符串中找出最長(zhǎng)的一個(gè)字符串,并通過(guò)形參指針max傳回該字符串的地址(用****作為結(jié)束輸入的標(biāo)識(shí))。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:1#include<conio.h>2#include<stdio.h>3#include<string.h>4#include<stdlib.h>5char*fun(char(*a)[81],intnum,char*max)6{78}9voidmain()10{11FILE*wf;12charss[10][81],*ps=NULL;13chars[3][81]={"abed","deg","diegns"},*p=NULL;14inti=0,n;15system("CLS");16printf("輸入若干個(gè)字符串:");17gets(ss[i]);18puts(ss[i]);19while(!stremp(ss[i],"****")==0)/*用4個(gè)星號(hào)作為結(jié)束輸入的標(biāo)志*/20{21i++;22gets(ss[i]);24puts(ss[i]);25}26n=i;27ps=fun(ss,n,ps);28printf("\nmax=%s\n",ps);29/********************/30wf=fopen("out.dat","w");31p=fun(s,3,p);32fprintf(wf,"%s",p);33fclose(wf);34/********************/23.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是求斐波那契數(shù)列中大于t的最小的數(shù),結(jié)果由函數(shù)返回。斐波那契數(shù)列F(n)的定義為F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2)例如,當(dāng)t=1000時(shí),函數(shù)值為1597。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<conio.h>#include<math.h>#include<stdio.h>intfun(intt){}main(){intn;n=1000;printf(“n=%d,f=%d\n”,n,fun(n));}

24.編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素?cái)?shù)存人xx所指數(shù)組中,非素?cái)?shù)的個(gè)數(shù)通過(guò)k返回。

例如,若輸入l7,則應(yīng)輸出:46891012141516。

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

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

25.請(qǐng)編寫一個(gè)函數(shù)voidproc(chara[],charbE3,intn),其功能是:刪除一個(gè)字符串中指定下標(biāo)的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。例如,輸入一個(gè)字符串student,然后輸入5,則調(diào)用該函數(shù)后的結(jié)果為studet。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:

26.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)其功能是移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)為0~p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。例如,一維數(shù)組中的原始內(nèi)容為1、2、3、4、5、6、7、8、9、10;P的值為3。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){ inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; inti,p,n=15; printf(“Theoriginaldata:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\nEnterp:”); scanf(“%d”,&p); fun(a,p,n); printf(“\nThedataaftermoving:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\n”);}

27.請(qǐng)編寫一個(gè)函數(shù)intproc(int*s,intt,int*k),用來(lái)求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。例如,輸入如下整數(shù):876675896101999401980431451777則輸出結(jié)果為4,999。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:

28.請(qǐng)編一個(gè)函數(shù)floatproe(doubleh),函數(shù)的功能是對(duì)變量h中的值保留2位小數(shù),并對(duì)第3位進(jìn)行四舍五人(規(guī)定h中的值為正數(shù))。例如,若h值為7.32596,則函數(shù)返回7.33;若h值為7.32496,則函數(shù)返回7.32。注意:部分源程序給出如下。.請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:

29.編寫函數(shù)fun,其功能是:根據(jù)以下公式求π的值(要求精度0.0005,即某項(xiàng)小于0.0005時(shí)停止迭代)。

程序運(yùn)行后,若輸入精度

0.0005,則程序應(yīng)輸出為3.14…

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

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

30.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),其功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換成一個(gè)整數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換成整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換成整數(shù)值-1234。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<stdio.h>#include<string.h>longfun(char*p){}voidmain(){ chars[6]; longn; printf(“Enterastring:\n”); gets(s); n=fun(s); printf(“%ld\n”,n);}

四、2.程序修改題(10題)31.給定程序MODll.C中函數(shù)fun的功能是:計(jì)算小于形參k的最大的10個(gè)能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的值為500,則函數(shù)值為4622。

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

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

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

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

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

試題程序:

#include<stdio.h>

voidfun(char*s)

{

inti,j;

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

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

if(s[i]!='F')

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

s[j]=s[i];

s[j]='\0';

}

main()

{

chars[80];

printf("\nEnterastring:");

gets(s);

printf("Theoriginalstring:");

puts(s);

fun(s);

printf("Thestringafterdeleted:");

puts(s);

printf("\n\n");

}

33.下列給定程序中,函數(shù)fun()的功能是:用下面的公式求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止。

π/4≈1-1/3+1/5-1/7+…

例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。

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

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

試題程序:

#include<math.h>

#include<stdio.h>

floatfun(floatnum)

{ints;

floatn,t,pi;

t=1;pi=0;n=1;s=1;

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

while(t>=num)

{

pi=pi+t;

n=n+2;

s=-s;

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

t=s%n;

}

pi=pi*4;

returnpi;

}

main()

{floatn1,n2;

clrscr();

printf("Enterafloatnumber:");

scanf("%f",&n1);

n2=fun(n1);

printf("%6.4f\n",n2);

}

34.給定程序MODll.C中函數(shù)fun的功能是:計(jì)算n!。

例如,給n輸入5,則輸出120.000000。

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

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

35.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)輸入的三個(gè)邊長(zhǎng)(整型值),判斷能否構(gòu)成三角形:構(gòu)成的是等邊三角形,還是等腰三角形。若能構(gòu)成等邊三角形函數(shù)返回3,若能構(gòu)成等腰三角形函數(shù)返回2,若能構(gòu)成一般三角形函數(shù)返回1,若不能構(gòu)成三角形函數(shù)返回0。

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

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

36.下列給定的程序中,fun()函數(shù)的功能是:將p所指字符串中每個(gè)單詞的最后一個(gè)字母改成大寫(這里的“單詞”是指有空格隔開的字符串)。例如,若輸入:

Iamastudenttotaketheexamination

則應(yīng)輸出:IaMAstudenTtOtakethEexaminatioN

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

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

試題程序:

#include<conio.h>

#include<ctype.h>

#include<stdio.h>

voidfun(char*p)

{

intk=0;

for(;*p;p++)

if(k)

{

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

if(p=='')

{

k=0;

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

*p=toupper(*(p-1));

}

}

else

k=1;

}

main()

{charchrstr[64];

intd;

clrscr();

printf("\nPleaseenteranEnglishsentencewithin63letters:");

gets(chrstr);

d=strlen(chrstr);

chrstr[d=='';

chrstr[d+1]=0;

printf("\nBoforechanging:\n%s",chrstr);

fun(chrstr);

printf("\nAfterchanging:\n%s",chrstr);

}

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

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

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

試題程序:

#include<stdio.h>

intfun()

{

inta[3][3],sum;

inti,j;

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

sum=1;

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

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

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

scanf("%d",a[i][j]);

}

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

sum=sum+a[i][i];

printf("Sum=%d\n",sum);

}

main()

{

fun();

}

38.給定程序MODll.C中函數(shù)fun的功能是:找出100至n(不大于1000)之間三位數(shù)字相等的所有整數(shù),把這些整數(shù)放在s所指數(shù)組中,個(gè)數(shù)作為函數(shù)值返回。

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

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

39.下列給定程序中,函數(shù)fun()的功能是:在字符串str中找出ASCII碼值最小的字符,將其放在第一個(gè)位置上,并將該字符前的原字符向后順序移動(dòng)。例如,調(diào)用fun()函數(shù)之前給字符串輸入fagAgBDh,調(diào)用后寧符串中的內(nèi)容為AfaggBDh。

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

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

試題程序:

#include<stdio.h>

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

voidfun(charp)

{

charmin,*q;

inti=0;

min=p[i];

while(p[i]!=0)

{

if(min>p[i])

{

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

p=q+i;

min=p[i];

}

i++;

}

while(q>p)

{*q=*(q-1);

q--;

}

p[0]=min;

}

main()

{

charstr[80];

printf("Enterastring:");

gets(str);

printf("\nTheoriginalstring:");

puts(str);

fun(str);

printf("\nThestringaftermoving:");

puts(str);

printf("\n\n");

}

40.N個(gè)有序整數(shù)數(shù)列已放在一維數(shù)組中,給定下列程序中,函數(shù)fun()的功能是:利用折半查找算法查找整數(shù)m在數(shù)組中的位置。若找到,則返回其下標(biāo)值:反之,則返回-1。

折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍:low和high(low<high),然后把m與中間位置(mid)中元素的值進(jìn)行比較。如果m的值大于中間位置元素中的值,則下一次的查找范圍放在中間位置之后的元素中;反之,下次查找范圍落在中間位置之前的元素中。直到low>high,查找結(jié)束。

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

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

試題程序:

#include<stdio.h>

#defineN10

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

voidfun(inta[],intm)

{intlow--0,high=N-l,mid;

while(low<=high)

{mid=(low+high)/2;

if(m<a[mid])

high=mid-1;

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

elseif(m>=a[mid])

low=mid+1;

elsereturn(mid);

}

return(-1);

}

main()

{inti,a[N]={-3,4,7,9,13,24,67,89,100,180},k,m;

printf("a數(shù)組中的數(shù)據(jù)如下:");

for(i=0;i<N;i++)printf("%d",a[i]);

printf("Enterm:");scanf("%d",&m);

k=fun(a,m);

if(k>=0)printf("m=%d,index=%d\n",m,k);

elseprintf("Notbefound!\n");

}

五、程序改錯(cuò)題(2題)41.下列給定程序中,proc()函數(shù)的功能是:根據(jù)形參m,計(jì)算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若輸入10,則應(yīng)輸出2.928968。請(qǐng)修改程序中的錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

42.下列給定程序中,函數(shù)proc()的功能是:通過(guò)某種方式實(shí)現(xiàn)兩個(gè)變量值的交換,規(guī)定不允許增加語(yǔ)句和表達(dá)式。例如變量num1中的值原為2,num2中的值原為1,程序運(yùn)行后,num1中的值為l,num2中的值為2。請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、操作題(2題)43.以下程序的輸出結(jié)果是【】。

main()

{charc='z';

printf("%c",c-25);}

44.請(qǐng)補(bǔ)充函數(shù)proc(),其功能是:計(jì)算并輸出給定l0個(gè)數(shù)的方差。例如,給定的10個(gè)數(shù)為12.0,9.0,26.0,5.0,6.0,31.0,9.0,3.0,8.0,18.0,輸出為s=8.877500。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的橫線上填入所編寫的若干表達(dá)式或語(yǔ)句。試題程序:

參考答案

1.33解析:分析程序運(yùn)行過(guò)程,第1次循環(huán):s=s+i*i=0+1*1=1,i=2;第2次循環(huán):s=s+i*i=1+2*2=5,i=3;第3次循環(huán):s=s+i*i=5+3*3=14,i=4;循環(huán)條件不成立輸出i,--i使i的值減1,軸出結(jié)果為3。

2.2424解析:本題考核的知識(shí)點(diǎn)是數(shù)組的定義和數(shù)組元素的引用。主函數(shù)中首先定義了一個(gè)長(zhǎng)度為7的數(shù)組,然后用一個(gè)while循環(huán)引用數(shù)組的元素,當(dāng)i大于7或者p[i]為偶數(shù)時(shí),循環(huán)結(jié)束。顯然當(dāng)i=2時(shí),p12]=14為偶數(shù)時(shí),循環(huán)結(jié)束,此時(shí)j的值為j=p[0]+p[1]=24;

3.3

4.123056009123\r\n056\r\n009解析:數(shù)組a中元素的初值為:a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[12][0]=7、a[2][1]=8、a[2][2]=9。執(zhí)行第1個(gè)for循環(huán)后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2個(gè)for循環(huán)的功能是將數(shù)組元素按照3行3列的格式輸出。

5.void(*p)()或void(*p)(int*int*)void(*p)()或void(*p)(int*,int*)

6.8141

7.1212解析:本題的第—個(gè)for循環(huán)用于紿數(shù)組arr賦初值,第二個(gè)for循環(huán)用于求和運(yùn)算。由于第二個(gè)for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。

8.1+a1-a1+a,1-a解析:考查條件運(yùn)算符的使用。因?yàn)轭}目中求的是1+|a|的值,即1和a的絕對(duì)值之和,所以根據(jù)數(shù)學(xué)中求絕對(duì)值的規(guī)則;當(dāng)a>=0時(shí),絕對(duì)值取本身,當(dāng)a<0時(shí),絕對(duì)值取相反數(shù),再結(jié)合條件運(yùn)算符的計(jì)算規(guī)則,可得到本題的答案為a>=0。

9.0111201112解析:在主函數(shù)中定義了整型變量f1和f2,并把其值賦為0和1,在屏幕上輸出。然后在第一次運(yùn)行for循環(huán)語(yǔ)句時(shí),變量f的值等于1,把其值輸出,把變量f1的值0賦給變量f2,變量f的值1賦給n,在執(zhí)行第二次for循環(huán)語(yǔ)句時(shí),變量f的值等于1,把此值輸出。然后再把變量f1的值1賦給變量f2,變量f的值1賦給f1,在執(zhí)行第三次for循環(huán)語(yǔ)句時(shí),變量f的值等于2,把此值輸出。所以程序運(yùn)行后的結(jié)果為01112。

10.概念數(shù)據(jù)模型概念數(shù)據(jù)模型

11.B題干中,格式輸入函數(shù)scanf的格式控制字符串中,第1個(gè)%d與第2個(gè)%d之間有一個(gè)逗號(hào)。所以輸入的第1個(gè)整數(shù)和第2個(gè)整數(shù)之間必須要有一個(gè)逗號(hào),選項(xiàng)C、D錯(cuò)誤;輸入的第2個(gè)整數(shù)和第3個(gè)整數(shù)之間需要間隔符,可以使用<Tab>鍵、<Enter>鍵、空格符。故本題答案為B選項(xiàng)。

12.B通過(guò)—維數(shù)組名或指向維數(shù)組元素的指針來(lái)引用數(shù)組元素有兩種寫法:a[i]和*(a+i),它們是等價(jià)的。這是一種運(yùn)算符之間的等價(jià)轉(zhuǎn)換,就好像a-(b-C)等價(jià)于a-b+c一樣。知道了這種轉(zhuǎn)換,我們可以將之?dāng)U展到二維數(shù)組甚至任意維數(shù)組上來(lái)。因?yàn)閇]運(yùn)算符的結(jié)合性是從左至右的,所以w[i][j]等價(jià)于(w[i][j],此時(shí)可以先將任意一個(gè)[]運(yùn)算符轉(zhuǎn)換為指針形式為:(*(w+i)[j]或*(w[i]+j),或者同時(shí)轉(zhuǎn)換:*(*(w+i)+j)。上述幾種形式都完全等價(jià)于w[i][j]。選項(xiàng)A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正確的。選項(xiàng)B小,因?yàn)閇]運(yùn)算符的優(yōu)先級(jí)高于*運(yùn)算符,所以*(w+1)[4]等價(jià)于*((w+1)[4]等價(jià)于*(*((w+1)+4)),即*(*(w+5)+0),它等價(jià)于w[5][0],很明顯它超過(guò)數(shù)組的范圍了,故不正確。選項(xiàng)C等價(jià)于w[1][0],是下確的。選項(xiàng)D中,&w[0][0]是數(shù)組w第1個(gè)元素的地址,它等價(jià)于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以個(gè)數(shù),然后再除以這個(gè)數(shù)一樣。所以,&w[0][0]等價(jià)于*(w+0)+0。即*w。所以原式就變?yōu)?(*w+1)等價(jià)于w[0][1],這個(gè)也是合法的。綜上所述,本題應(yīng)該選擇B。

13.D在C語(yǔ)言中,不能直接比較兩個(gè)字符串的大小,必須用特定的函數(shù)來(lái)完成,選項(xiàng)A錯(cuò)誤;選項(xiàng)B不管大于還是小于都執(zhí)行S,不符合題意;選項(xiàng)C正好相反,當(dāng)s2大于s1時(shí),執(zhí)行語(yǔ)句S,可知選項(xiàng)D正確。

14.A需求分析是軟件開發(fā)之前必須要做的準(zhǔn)備工作之一。需求是指用戶對(duì)目標(biāo)軟件系統(tǒng)在功能、行為、性能、設(shè)計(jì)約束等方面的期望。故需求分析的主要任務(wù)是確定軟件系統(tǒng)的功能。本題答案為A選項(xiàng)。

15.A當(dāng)數(shù)據(jù)類型是實(shí)數(shù)時(shí),在存儲(chǔ)過(guò)程中,當(dāng)小數(shù)部分無(wú)限長(zhǎng)時(shí),會(huì)存在小數(shù)部分的截?cái)啵瑫?huì)存在誤差,所以答案選擇A。

16.A解析:全局變量說(shuō)明為static存儲(chǔ)類,其生命周期將得到延長(zhǎng),但作用域不能被擴(kuò)大;static存儲(chǔ)類變量在未賦初值時(shí),是有默認(rèn)值的,形參中的存儲(chǔ)類說(shuō)明符與局部變量完全相同。

17.A解析:本題考查的是算術(shù)運(yùn)算符的各種運(yùn)算,x=-3+4*5-6=-3+20-6=11;x=3+4%5-6=3+4-6=1;x=-3+4%6/5=-3+4/5=-3+0=-3;x=(7+6)%5/2=13%5/2=3/2=1。故正確答案為選項(xiàng)A)。

18.D本題考查對(duì)軟件生命周期的理解,軟件生命周期整體上可分為定義階段、開發(fā)階段和維護(hù)階段。其中定義階段包括可行性研究與計(jì)劃制訂和需求分析;開發(fā)階段包括概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、開發(fā)和測(cè)試;維護(hù)階段是一個(gè)單獨(dú)階段,不包含在開發(fā)階段內(nèi),它是所花費(fèi)用最多的一個(gè)階段。

19.C

20.D本題考查邏輯運(yùn)算符的使用。當(dāng)“&&”的兩個(gè)運(yùn)算對(duì)象都是邏輯1時(shí),表達(dá)式返回值才是1;“||”的兩個(gè)運(yùn)算對(duì)象至少有一個(gè)是邏輯1時(shí),表達(dá)式返回值也是1,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。

21.22.1char*fun(char(*a)[81],intnum,char*max)2{3inti=0;4max=a[0];5for(i=0;i<num;i++)/*找出最長(zhǎng)的一個(gè)字符串*/6if(strlen(max)<strlen(a[i]))7max=a[i];8returnmax;/*傳回最長(zhǎng)字符串的地址*/9}<strlen(a[i]))解答本題之前,首先應(yīng)該明白ss是數(shù)組名,是指數(shù)組首元素的地址。max是字符指針變量,可以指向一個(gè)字符串。假定max指向數(shù)組中第1個(gè)字符串,它的長(zhǎng)度最長(zhǎng)。再使用循環(huán)語(yǔ)句遍歷字符串?dāng)?shù)組,使用條件語(yǔ)句判斷該字符串的長(zhǎng)度是否大于max指向的字符串的長(zhǎng)度,如大于,則max指向該字符串。保證max指向的字符串最長(zhǎng),并將其作為函數(shù)值返回。</strlen(a[i]))23.intfun(intt){intf0=0,f1=1,f;do{/*根據(jù)斐波那契數(shù)列的定義求數(shù)值*/f=f0+f1;f0=f1;f1=f;}while(f<t);/*如果求的數(shù)值小于t則繼續(xù)*/</t);returnf;}根據(jù)斐波那契數(shù)列定義不難發(fā)現(xiàn),該數(shù)列最終的結(jié)果由兩個(gè)數(shù)列之和組成,所以可以在循環(huán)內(nèi)部始終把f看成前兩項(xiàng)之和,而f0始終代表第n-2項(xiàng),f1代表第n-1項(xiàng)。退出循環(huán)時(shí)得到的數(shù)f,就是大于指定數(shù)的最小的數(shù)。24.【參考答案】

【考點(diǎn)分析】

本題考查:如何判斷非素?cái)?shù);循環(huán)判斷結(jié)構(gòu);數(shù)組的引用。

【解題思路】

題目要求將l~m之間的非素?cái)?shù)存人數(shù)組中,應(yīng)使用循環(huán)判斷結(jié)構(gòu)。循環(huán)語(yǔ)句用來(lái)遍歷1~m之間的每個(gè)數(shù),判斷語(yǔ)句用來(lái)判斷該數(shù)是否素?cái)?shù),若不是素?cái)?shù),則將其存人數(shù)組中。這道題目是考查一個(gè)數(shù)是否為素?cái)?shù)的簡(jiǎn)單延伸,只要掌握了判斷素?cái)?shù)的方法,問(wèn)題便能順利解決。

【解題寶典】

判定一個(gè)數(shù)是否為素?cái)?shù),即該數(shù)除了能被l和它本身外,不能被任何數(shù)整除。

代碼實(shí)現(xiàn)為:

此語(yǔ)句需要熟記,很多判斷素?cái)?shù)的題目也可通過(guò)此法解決。

25.

【解析】按照題目中的要求,刪除一個(gè)字符串中指定下標(biāo)的字符。首先,將指定下標(biāo)之前的字符放入字符數(shù)組b中,然后將指定下標(biāo)之后的字符也放入字符數(shù)組b中,最后為新的字符數(shù)組b添加結(jié)束符。

26.voidfun(int*w,intp,intn){ intX,j,ch; for(x=0;x<=p;x++) { ch=w[0]; for(j=1;j /*通過(guò)for循環(huán)語(yǔ)句,將p+1~n-1(含n-1)之間的數(shù)組元素依次向前移動(dòng)p+1個(gè)存儲(chǔ)單元*/ { w[j-1]=w[j]; } w[n-1]=ch; /*將下標(biāo)為0~p的數(shù)組元素逐一賦給數(shù)組w[n-1]*/ }}本題要求把下標(biāo)為0~p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。可以根據(jù)輸入的p值,通過(guò)for循環(huán)語(yǔ)句,將p+1~n-1(含n-1)之間的數(shù)組元素依次向前移動(dòng)p+1個(gè)存儲(chǔ)單元,即w[j-1]=w[j];。同時(shí)將下標(biāo)為0~p的數(shù)組元素逐一賦給數(shù)組w[n-1],也就是通過(guò)語(yǔ)句w[n-1]=ch;來(lái)實(shí)現(xiàn)此操作。

27.

【解析】要得到數(shù)組中的最大元素的下標(biāo),需要比較數(shù)組中的每一個(gè)元素。將最大的元素返回給主函數(shù),最大元素的下標(biāo)通過(guò)形參返回給主函數(shù)。

28.

【解析】要實(shí)現(xiàn)對(duì)變量的值保留2位小數(shù)。并對(duì)第3位小數(shù)進(jìn)行四舍五入,可以通過(guò)先將其小數(shù)點(diǎn)后3位變?yōu)檎龜?shù)后加5,所得到的數(shù)除10,最后再除100來(lái)實(shí)現(xiàn)。

29.

【考點(diǎn)分析】

本題考查:迭代法求給定多項(xiàng)式的值。迭代算法:讓計(jì)算機(jī)對(duì)一組指令(或一定步驟)進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時(shí),都從變量的原值推出它的一個(gè)新值。需要注意變量的數(shù)據(jù)類型以及賦初值操作。

【解題思路】

首先應(yīng)該定義double類型變量,并且賦初值,用來(lái)存放多項(xiàng)式的某一項(xiàng)和最后的總和。從第2項(xiàng)開始以后的每一項(xiàng)都是其前面一項(xiàng)乘以n/(2*n+1),程序中用sl來(lái)表示每一項(xiàng),s表示求和后的結(jié)果。需注意sl和S的初值都為1.0,因?yàn)檠h(huán)變量從第二項(xiàng)開始累加。30.longfun(char*p){ longn=0; intflag=1; if(*p==‘-’) /*負(fù)數(shù)時(shí)置flag為-1*/ {p++;flag=-1;} elseif(*p==‘+’) /*正數(shù)時(shí)置flag為1*/ p++; while(*p!=‘\0’) { n=n*10+*p-‘\0’; /*將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)*/ p++; } returnn*flag;}if語(yǔ)句的作用是判斷該字符串為正數(shù)還是負(fù)數(shù),while循環(huán)的作用是將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)。注意:*P是一個(gè)字符(如‘9’、‘4’),并不是一個(gè)數(shù),要將其轉(zhuǎn)換成相應(yīng)的數(shù)字需令其減去‘0’(而不是‘\\0’),即*p-‘0’就得到*P這個(gè)字符的相應(yīng)數(shù)字,如‘0’-‘0’=0、‘8’-‘0’=8等。

31.(1)if((k%13==0)II(k%17==0))(2)}(1)if((k%13==0)II(k%17==0))(2)}解析:該題中函數(shù)功能是求能被13或17整除的自然數(shù)之和。從已給定源程序的main主函數(shù)開始入手,“printf("%d\\n",fun(500));”語(yǔ)句中的fun函數(shù)將500傳給n,計(jì)算小于500的能被13或17整除的自然數(shù)之和。

32.(1)錯(cuò)誤:for(i=j=0;s[i]!='0';i++)正確:for(i=j=0;s[i]!'\0';i++)(2)錯(cuò)誤:s[j]=s[i]正確:s[j++]=s[i];(1)錯(cuò)誤:for(i=j=0;s[i]!='0';i++)正確:for(i=j=0;s[i]!'\\0';i++)\r\n(2)錯(cuò)誤:s[j]=s[i]正確:s[j++]=s[i];解析:錯(cuò)誤1:本題考查是否掌握字符串的最后一個(gè)字符是結(jié)束標(biāo)志符'\\0'。錯(cuò)誤2:在循環(huán)中,新字符串的下標(biāo)也要遞增,這樣最終產(chǎn)生一個(gè)新的字符串。

33.(1)錯(cuò)誤:while(t>=num)正確:while(fabs(t)>=num)(2)錯(cuò)誤;t=s%n;正確:t=s/n;(1)錯(cuò)誤:while(t>=num)正確:while(fabs(t)>=num)\r\n(2)錯(cuò)誤;t=s%n;正確:t=s/n;解析:函數(shù)fun()中while語(yǔ)句的含義是,當(dāng)新的一項(xiàng)大于給定參數(shù)時(shí),循環(huán)累計(jì),計(jì)算s的值。而題目要求是最后一項(xiàng)的絕對(duì)值小于給定參數(shù),因此循環(huán)條件應(yīng)當(dāng)為while(fabs(t)>=num),而非while(t>=num)。

34.(1)if(n==0)(2)result*=n--;(1)if(n==0)(2)result*=n--;解析:本題中函數(shù)的功能是計(jì)算階乘,其中,階乘的計(jì)算公式分為參數(shù)n是1和大于1兩種情況,例如,1的階乘1!=1;5的階乘5!=5×4×3×2×1。

35.(1)intfun(intaintbintc)(2)elsereturn1;(1)intfun(inta,intb,intc)(2)elsereturn1;解析:本題中函數(shù)的功能是判斷能否構(gòu)成三角形;構(gòu)成的是等邊三角形,還是等腰三角形,利用if語(yǔ)句判斷三邊值之間的關(guān)系,然后根據(jù)判斷結(jié)果,返回題干中要求的值。

構(gòu)成三角形的條件是任意兩邊之和大于第三邊,等腰三角形的條件是在構(gòu)成三角形的基礎(chǔ)上還需要兩條邊相等,等邊三角形是三條邊均相等。

36.(1)錯(cuò)誤:if(p=='')正確:if(*p=='')(2)錯(cuò)誤:*p=toupper(*(p-1));正確:*(p-1)=toupper(*(p-1));(1)錯(cuò)誤:if(p=='')正確:if(*p=='')\r\n(2)錯(cuò)誤:*p=toupper(*(p-1));正確

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論