版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023年浙江省金華市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、2.填空題(10題)1.在Windows環(huán)境下,可以利用單擊、雙擊、拖動(dòng)這三種鼠標(biāo)操作之一的【】操作實(shí)現(xiàn)窗口的移動(dòng)。
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.以下程序運(yùn)行后的輸出結(jié)果是______。
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
4.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式double(1+x/y)的值為【】。
5.有以下程序
main()
{intn=0,m+1,X=2;
if(!n)X-=l;
if(m)X-=2;
if(X)X-=3;
printf("%d\n",x);
}
執(zhí)行后輸出的結(jié)果是【】。
6.以下程序段的運(yùn)行結(jié)果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}
7.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{inta=1234;
floatb=123.456;
doublec=12345.54321;
printf("\n%2d,%2.1f,%2.11f",a,b,C);
}
8.實(shí)體聯(lián)系模型是一種常用的高級(jí)概念數(shù)據(jù)模型,而______是實(shí)體聯(lián)系模型中的核心。
9.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計(jì)算它們的和值。和值通過(guò)形參傳回主函數(shù)輸出。請(qǐng)?zhí)羁铡?/p>
#defineM2
#defineN4
voidSumColumMin(inta[M][N],int*Sum)
{inti,j,k,s=0
for(i=0;i<N;i++)
{k=0;
for(j=1;j<M;j++)
if(a[k][i]>a[j][i])k=j;
s+=【】;
}
【】=s;
}
main()
{intx[M][N]={3,2,5,1,4,l,8,3),s;
SumColumMin(【】);
printf("%d\n",s);
}
10.已有定義:double*p;,請(qǐng)寫(xiě)出完整的語(yǔ)句,利用malloc函數(shù)使p指向一個(gè)雙精度型的動(dòng)態(tài)存儲(chǔ)單元______。
二、單選題(10題)11.執(zhí)行下面的程序后,a的值為()。main{inta,b;for(a=1,b=1;a<=10;a++){if(b%3==l){b+=3;continue;}b-=5;}}A.7B.8C.9D.10
12.棧和隊(duì)列的共同點(diǎn)是()。
A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點(diǎn)處插入和刪除元素D.沒(méi)有共同特點(diǎn)
13.線性表是具有n個(gè)()的有限序列。
A.字符B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.表元素
14.對(duì)于n個(gè)結(jié)點(diǎn)的單向鏈表(無(wú)表頭結(jié)點(diǎn)),需要指針單元的個(gè)數(shù)至少為_(kāi)_____。
A.n-1B.nC.n+1D.2n
15.下列關(guān)于函數(shù)的敘述中正確的是()。A.A.每個(gè)函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))
B.每個(gè)函數(shù)都可以被單獨(dú)編譯
C.每個(gè)函數(shù)都可以單獨(dú)運(yùn)行
D.在一個(gè)函數(shù)內(nèi)部可以定義另一個(gè)函數(shù)
16.帶有頭節(jié)點(diǎn)的單向鏈表head,其3個(gè)數(shù)據(jù)節(jié)點(diǎn)A、B、C的連接關(guān)系如下圖所示:節(jié)點(diǎn)類(lèi)型的定義為structlink{doubledt;structlink*next;};若指針P指向A節(jié)點(diǎn),在不改變P指向的前提下,以下選項(xiàng)中不能訪問(wèn)C節(jié)點(diǎn)數(shù)據(jù)成員dt的表達(dá)式是()。A.*(*p).next->next->dt
B.p->next->next->dt
C.(*(*(*p).next).next).dt
D.(*(p->next->next)).dt
17.有說(shuō)明語(yǔ)句“inta,b;”,如果輸入111222333,使得a的值為111,b的值為333,則以下正確的語(yǔ)句是()。A.scanf("%3d%*3d%3d",&a,&b);
B.scanf("%*3d%3d%3d",&a,&b);
C.scanf("%3d%3d%*3d",&a,&b);
D.scanf("%3d%*2d%3d",&a,&b);
18.以下是if語(yǔ)句的基本形式:if
(表達(dá)式)語(yǔ)句,其中表達(dá)式A.A.必須是邏輯表達(dá)式B.必須是關(guān)系表達(dá)式C.必須是邏輯表達(dá)式或關(guān)系表達(dá)式D.可以是任意合法的表達(dá)式
19.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a(chǎn)’+‘A’);}程序運(yùn)行后的輸出結(jié)果是()。
A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR
20.若變量x、y已正確定義并賦值,以下符合C語(yǔ)言語(yǔ)法的表達(dá)式是()。
A.x+1=yB.++x,y=x--C.x=x+10=x+yD.double(x)/10
三、程序設(shè)計(jì)題(10題)21.請(qǐng)編寫(xiě)函數(shù)proc(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p到n-1(p≤n-1)的數(shù)組元素平移到數(shù)組的前面。例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,P的值為4。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為5,6,7,8,9,10.11,12,13,14,1,2,3,4。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
22.N名學(xué)生的成績(jī)已在主函數(shù)中放人一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫(xiě)函數(shù)fun,其功能是:求出平均分,并由函數(shù)值返回。
例如,若學(xué)生的成績(jī)是:8576698591726487,則平均分應(yīng)當(dāng)是:78.625。注意:部分源程序在文件PROGl.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填人你編寫(xiě)的若干語(yǔ)句。
23.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫(xiě)函數(shù)proc(),它的功能是:函數(shù)返回指定學(xué)號(hào)的學(xué)生數(shù)據(jù),指定的序號(hào)在主函數(shù)中輸入。若沒(méi)找到指定的學(xué)號(hào),在結(jié)構(gòu)體變量中給學(xué)號(hào)置空串,給成績(jī)置-1,作為函數(shù)值返回(用于字符串比較的函數(shù)是strcmp)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
24.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫(xiě)函數(shù)fun(),該函數(shù)的功能是統(tǒng)計(jì)一行字符串中單詞的個(gè)數(shù),并將其作為函數(shù)值返回。字符串在主函數(shù)中輸入,規(guī)定所有單詞由小寫(xiě)字母組成,單詞之間由若干個(gè)空格隔開(kāi),一行的開(kāi)始沒(méi)有空格。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:1#include<string.h>2#include<stdio.h>3#defineN804intfun(char*s)5{67}8voidmain()9{10FILE*wf;11charline[N];12intnum=0;13printf("Enterastring:\n");14gets(line);15num=fun(line);16printf("Thenumberofwordsis:%d\n\n",num);17/*********found*********/18wf=fopen("out.dat","w");19fprintf(wf,"%d",fun("abigcar"));20fclose(wf);21/*********found*********/22}25.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)一個(gè)函數(shù),用來(lái)刪除字符串中的所有空格。例如,輸入asdafaaz67,則輸出為asdafaaz67。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:26.使用vc++2010打開(kāi)文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)函數(shù)fun(),其功能是在一組得分中,去掉一個(gè)最高分和一個(gè)最低分,然后求平均值,并通過(guò)函數(shù)返回該值。函數(shù)形參a指向存放得分的數(shù)組,形參n中存放得分個(gè)數(shù)(n>2)。例如,若輸入8.4共10個(gè)得分,則輸出結(jié)果為8.687500。注意:部分源程序存放在文件prog1.c中,請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:27.請(qǐng)編寫(xiě)函數(shù)proc,該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲(chǔ)單元中。
例如,若二維數(shù)組中的數(shù)據(jù)為
13233343
14243444
15253545
則一維數(shù)組中的內(nèi)容應(yīng)該是132333431424344415253545。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
voidproc(int(*s)[103,int*b,int*n,intrain.intnn)
{}
voidmain
{
intarr[10][10]={{33,33,33,33),{44,44,44,44},
{55,55,55,55}),i,j;
inta[l00]={o),n=o;
printf("Thematrix:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%3d",arr[i][j]):
printf("\n");
}
proc(arr,a,&n,3,4):
printf("TheAarray:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]):
printf("\n\n");
}
28.編寫(xiě)函數(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)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
29.規(guī)定輸入的字符串中只包含字母和*號(hào)。編寫(xiě)函數(shù)fun,其功能是:刪除字符串中所有的*號(hào)。編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。
例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)maini)函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(chara)
{
voidmain
{
chars[81];
print{("Enterastring:\n");
gets(s):
fun(S);
printf("Thestringafterdeleted:\n");
puts(s);
}
30.編寫(xiě)函數(shù)fun,其功能是:求出1~1000之間能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。
注意:部分原程序在文件PROGl.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填人你編寫(xiě)的若干語(yǔ)句。
四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是:計(jì)算整數(shù)n的階乘。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)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));
}
32.下列給定程序中,函數(shù)fun()的功能是:給定n個(gè)實(shí)數(shù),輸出平均值,并統(tǒng)計(jì)平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。例如,n=8時(shí),輸入193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值為195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為5。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
intfun(floatx[],intn)
/***************found*******************/
ihtj,c=0;floatxa=0.0;
for(j=0;j<n;.j++)
xa+=x[j]/n;
printf("ave=%f\n",xa);
for(j=0;j<n;j++)
if(x[j]>=xa)
c++;
returnc;
}
main()
{floatx[l00]={193.199,195.673,195.757,
196.051,196.092,196.596,
196.579,196.763};
clrscr();
printf("%d\n",fun(x,8));
}
33.給定程序MODll.C的功能是:讀入一個(gè)英文文本行,將其中每個(gè)單詞的第一個(gè)字母改成大寫(xiě),然后輸出此文本行(這里的“單詞”是指由空格隔開(kāi)的字符串)。
例如,若輸入:Iamastudenttotaketheexamination.,則應(yīng)輸出:IAmAStudentToTakeTheExamination.。
請(qǐng)改正程序中的錯(cuò)誤,使程序能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
34.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)以下公式求π值,并作為函數(shù)值返回。
例如,給指定精度的變量eps輸入0.0005時(shí),應(yīng)當(dāng)輸出Pi=3.141480。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
35.給定程序MODll.C中函數(shù)fun的功能是:將字符串中的字符按逆序輸出,但不改變字符串中的內(nèi)容。
例如,若字符串為abcd,則應(yīng)輸出:dcba。
請(qǐng)改正程序中的錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
36.下列給定程序中,函數(shù)fun()的功能是:根據(jù)整型形參n,計(jì)算如下公式的值。
A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=(1/(1+A(n-1))
例如,若p=10,則應(yīng)輸出0.617977。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)mah函數(shù),不得增行或刪行,也不得更改程序的蛄構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
/**************found********************/
ihtfun(ihtn)
{floatA=l;inti;
/**************foudn********************/
for(i=2;i<n;i++)
A=1.0/(i+A);
returnA;
}
main()
{intn;
clrscr();
printf("\nPleaseentern:");
$canf("%d",&n);
printf("A%d=%lf\n",n,fun(n));
}
37.下列給定程序中函數(shù)fun()的功能是計(jì)算正整數(shù)num的各位上的數(shù)字之平方和。
例如:輸入352,則輸出應(yīng)該是38;若輸入328,則輸出應(yīng)該是77。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
longfun(longnum)
{
/*+**+*+*+*found************/
longk=1;
do
{
k+=(num%10)*(num%10);
num/=10;
/*********+found*+**+*+******/
}while(num)
return(k);
}
main()
{
longn;
clrscr();
printf("\Pleaseenteranumber:");
scanf("%ld",&n);
printf("\n%ld\n",fun(n));
}
38.下列給定程序中,函數(shù)fun()的功能是根據(jù)整型形參m,計(jì)算如下公式的值。
y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)
例如:m中的值為5,則應(yīng)輸出0.838611。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
{doubley=1.0;
/**********found*************/
intj=1;
inti;
for(i=2;i<=m;i++)
{
j=-1*j;
/****************found*******+******/
y+=1/(i*i);
}
return(y);
}
main()
{
intn=5;
clrscr();
printf("\nTheresultis%lf\n",fun(n));
}
39.給定程序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)!
40.下列給定程序中,函數(shù)fun()的功能是:用遞歸算法計(jì)算斐波拉契級(jí)數(shù)列中第n項(xiàng)的值。從第一項(xiàng)起,斐波`拉契級(jí)數(shù)序列為1,1,2,3,5,8,13,21,……例如,若給n輸入7,
該項(xiàng)的斐波拉契級(jí)數(shù)值為13。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
longfun(intg)
{
/*************found**************/
switch(g);
{case0:return0;
switch(g)
case1;case2:return1;
}
return(fun(g-1)+fun(g-2));
}
main()
{
longfib;intn;
printf("Inputn:");scanf("%d",&n);
printf("n-%d\n",n);
fib=fun(n);
printf("fib=%d\D\n",fib);
}
五、程序改錯(cuò)題(2題)41.下列給定程序中函數(shù)fun的功能是:將長(zhǎng)整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。
例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為7531。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
42.下列給定的程序中,proc()函數(shù)的功能是:將str所指字符串中每個(gè)單詞的最后一個(gè)字母改成大寫(xiě)(這里的“單詞”是指有空格隔開(kāi)的字符串)。
例如,若輸人:Howdoyoudo,則輸出:HoWdOyoUd0。
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、操作題(2題)43.函數(shù)delete(s,i,n)是作用是從字符串s中刪除從第i個(gè)字符開(kāi)始的n個(gè)字符,請(qǐng)?zhí)羁铡?/p>
voiddelete(chars[],inti,intn)
{intj,k,length=0;
while(s[length])
【】;
-i;
j=i
}
if(【】)
{k=i+n;
if(i+n<=length)
while(k<length)
s[j++]=s[k++];
s[j]='\0';
}
44.執(zhí)行以下程序后的輸出結(jié)果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
}
參考答案
1.拖動(dòng)拖動(dòng)
2.24
3.136136解析:本題考核的知識(shí)點(diǎn)是函數(shù)遞歸。主函數(shù)調(diào)用函數(shù)fun(6),由于6/2>0為真遞歸調(diào)用fun(3),接著遞歸調(diào)用fun(1),輸出1,返回上一層輸出3,在返回上一層輸出6。故空格處應(yīng)該填136。
4.11解析:本題考查兩個(gè)知識(shí)點(diǎn):一是x/y的值為整型,即為0;二是數(shù)1是double類(lèi)型。
5.-4-4解析:if-else構(gòu)造了一種二路分支選擇,是一種最基本的選擇結(jié)構(gòu),if(條件)S1(if分結(jié)構(gòu))elseS2(else分結(jié)構(gòu)),它的工作過(guò)程是:先對(duì)條件表達(dá)式進(jìn)行判斷,若為真(成立,值為非零),就執(zhí)行if分結(jié)構(gòu)(S1);否則(不成立,值為0),就執(zhí)行else分結(jié)構(gòu)(S2)。本題中,n=O,可以判斷(!n)為真,執(zhí)行“x=x-1=2-1=1;m=1”,可以判斷(m)為真,執(zhí)行“x=x-2=1-2=-1;”進(jìn)而可以判斷(x)為真,執(zhí)行x=x-3=-1-3=-4。所以,最后輸出為-4。
6.x=2
7.1234123.512345.51234,123.5,12345.5解析:在primf()函數(shù)的格式控制符中:'%2d'表示輸出一個(gè)有符號(hào)整數(shù),如果輸出長(zhǎng)度小于2,則左端補(bǔ)以空格,否則按實(shí)際長(zhǎng)度輸出。所以本題中的a按原樣輸出為1234:'%2.1尸表示輸出一個(gè)單精度實(shí)數(shù),只輸出小數(shù)點(diǎn)后1位,后面若有小數(shù)則四舍五入,如果輸出長(zhǎng)度小于2,則左端補(bǔ)以空格,否則按實(shí)際長(zhǎng)度輸出。所以本題中的b四舍五入到小數(shù)點(diǎn)后1位再輸出為123.5;'%2.11f'除了表示輸出一個(gè)雙精度實(shí)數(shù)外,其余參數(shù)和'%2.1f'一樣。所以本題中的c四舍五入到小數(shù)點(diǎn)后1位再輸出為12345.5。故輸出結(jié)果是:1234,123.5,12345.5。
8.實(shí)體聯(lián)系圖或E-R圖實(shí)體聯(lián)系圖或E-R圖解析:實(shí)體聯(lián)系圖(B-R圖)是實(shí)體聯(lián)系模型中的核心。由于E-R圖描述的是數(shù)據(jù)流圖中數(shù)據(jù)存儲(chǔ)及其之間的關(guān)系,因此它是數(shù)據(jù)庫(kù)觀念設(shè)計(jì)的最常用的工具。
9.a[k][i]*sumx&sa[k][i]\r\n*sum\r\nx,&s解析:本題中定義了一個(gè)函數(shù)SumColumMin(),該函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)為數(shù)組名,第二個(gè)參數(shù)為一個(gè)指針,用來(lái)訪問(wèn)存放數(shù)組中每列元素中最小值的存儲(chǔ)空間的變量。所以在主函數(shù)中調(diào)用SumColumMin()函數(shù),應(yīng)該將數(shù)組x和sam作為實(shí)參傳給SumColumMin()中的形參,故第19個(gè)空格處應(yīng)該填x,&s。在SumColumMin()函數(shù)中用了兩重循環(huán),用N記錄數(shù)組的列,M記錄數(shù)組的行。內(nèi)循環(huán)共循環(huán)了M次,每循環(huán)一次將a[k][i]比較a[j][i](當(dāng)k=O時(shí),a[k][i]第一行第一列的值,然后將該值依次和第一列中的每個(gè)值比較,讓a[k][i]表示較小的值,那么比較到最后一個(gè)元素后a[k][i]就是改列中最小元素的值),讓k記錄較小值元素的行下標(biāo),這樣通過(guò)M次循環(huán)得到每列中的最小元素,然后退出內(nèi)循環(huán),繼續(xù)執(zhí)行該次外循環(huán)里的其他語(yǔ)句,即將剛求得第i列的最小值a[k][i]累加到s中,故第17個(gè)空格處應(yīng)該填a[k][i],最后外循環(huán)共循環(huán)N次,將每列的最小值累加到s中,退出循環(huán),然后讓指針sum所指向的存儲(chǔ)空間的值為s,故第18個(gè)空格處應(yīng)該填*sum。
10.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函數(shù)只有一個(gè)參數(shù),該參數(shù)指定了需要分配多少字節(jié)的內(nèi)存。然后將分配好的內(nèi)存塊的首地址作為void*(未知類(lèi)型指針)返回.故標(biāo)準(zhǔn)的調(diào)用形式應(yīng)該寫(xiě)成:
p(double*)malloc(sizeof(double));
11.D本題考查continue的用法,continue語(yǔ)句的作用是結(jié)束本次循環(huán),直接進(jìn)行下次循環(huán)。所以在程序中,只有當(dāng)a=10時(shí),才退出循環(huán),故選擇D選項(xiàng)。
12.C解析:棧和隊(duì)列都是操作受限制的線性表,只允許在端點(diǎn)插入和刪除。不同點(diǎn)是:棧只允許在表的一端進(jìn)行插入和刪除操作,而隊(duì)列允許在表的一端進(jìn)行插入操作,而在另一端進(jìn)行刪除操作。
13.B
14.C解析:在n個(gè)結(jié)點(diǎn)的單向鏈表(無(wú)表頭結(jié)點(diǎn))中,每個(gè)結(jié)點(diǎn)都有一個(gè)指針單元(即指針域),加上頭指針,至少需要n+1個(gè)指針單元。
15.B在C語(yǔ)言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即函數(shù)之間沒(méi)有從屬關(guān)系。雖然函數(shù)之間可以相互調(diào)用,但main函數(shù)不能被調(diào)用,選項(xiàng)A)錯(cuò)誤;C程序從main函數(shù)開(kāi)始執(zhí)行,當(dāng)main數(shù)執(zhí)行完畢時(shí),整個(gè)程序就結(jié)束了。C程序的執(zhí)行必須從main函數(shù)開(kāi)始,選項(xiàng)C)選項(xiàng)錯(cuò)誤;函數(shù)不能嵌套定義,選項(xiàng)D)錯(cuò)誤。
16.Alink結(jié)構(gòu)體中的next是鏈表中下一個(gè)節(jié)點(diǎn)的地址。由于p當(dāng)前指向節(jié)點(diǎn)A,因此p->next是B的地址。p->next->next是C的地址,訪問(wèn)C的節(jié)點(diǎn)數(shù)據(jù)成員dt可以使用C的地址訪問(wèn),即p->next->next->dt,選項(xiàng)B正確?;蛘呤褂媒庖谩?”運(yùn)算符:(*p)表示節(jié)點(diǎn)A,(*p).next表示B的地址,*((*p).next)表示節(jié)點(diǎn)B,(*((*p).next)).next表示C的地址,*((*((*p).next)).next)表示節(jié)點(diǎn)C,所以C的數(shù)據(jù)成員dt可以表示為(*((*(*p).next).next)).dt,因?yàn)椤?”運(yùn)算符優(yōu)先級(jí)高于“*”運(yùn)算符,所以也可以寫(xiě)為(*(*(*p).next).next).dt,選項(xiàng)C正確。同理,也可以既使用指針運(yùn)算符,又使用解引用運(yùn)算符來(lái)訪問(wèn)C的節(jié)點(diǎn)數(shù)據(jù)成員dt,即(*(p->next->next)).dt,選項(xiàng)D正確。選項(xiàng)A中,*p表示A節(jié)點(diǎn),(*p).next表示節(jié)點(diǎn)B的地址,由于“->”運(yùn)算符的優(yōu)先級(jí)高于“*”運(yùn)算符,因此先執(zhí)行“->”,即表達(dá)式(*p).next->next->dt引用了C節(jié)點(diǎn)的數(shù)據(jù)成員dt,然后再執(zhí)行解引用運(yùn)算“*”,這是錯(cuò)誤的。故本題答案為A選項(xiàng)。
17.A根據(jù)題意,要使a的值為111,b的值為333,必須在讀入時(shí)指定a的讀入寬度為3,b的讀入寬度為3,且a和b的控制字符之間必須額外增加%*控制符,用于跳過(guò)中間的3位輸入數(shù)字,選項(xiàng)A正確。本題答案為A選項(xiàng)。
18.D
19.C程序定義一個(gè)字符數(shù)組b,并使用字符串“happynewyeai”進(jìn)行初始化。然后通過(guò)for循環(huán),遍歷字符數(shù)組b中的每個(gè)字符,再將b中的字符元素修改為大寫(xiě)字母。程序輸出:HAPPYNEWYEAR。故本題答案為C選項(xiàng)。
20.B不能將變量賦給表達(dá)式,故A、C選項(xiàng)錯(cuò)誤。D選項(xiàng)中強(qiáng)制類(lèi)型轉(zhuǎn)換表達(dá)式應(yīng)寫(xiě)成“(double)x/10”。故本題答案為B選項(xiàng)。
21.
【解析】題目中要求把下標(biāo)從p到n-1的數(shù)組元素平移到數(shù)組的前面,可以通過(guò)每一次循環(huán)將最后一個(gè)元素放在第一個(gè)位置上,使其成為第一個(gè)元素,其余元素后移一個(gè)位置。通過(guò)n-1-p次循環(huán)實(shí)現(xiàn)將從p到n-1的數(shù)組元素平移到數(shù)組的前面。
22.
【考點(diǎn)分析】
本題考查:鏈表的操作,對(duì)鏈表的主要操作有以下幾種:建立鏈表、結(jié)構(gòu)的查找與輸出、插入一個(gè)結(jié)點(diǎn)、刪除一個(gè)結(jié)點(diǎn)。
【解題思路】
題目要求求鏈表中數(shù)據(jù)域的平均值,應(yīng)首先使用循環(huán)語(yǔ)句遍歷鏈表,求各結(jié)點(diǎn)數(shù)據(jù)域中數(shù)值的和,再對(duì)和求平均分。遍歷鏈表時(shí)應(yīng)定義一個(gè)指向結(jié)點(diǎn)的指針P,因?yàn)椤邦^結(jié)點(diǎn)”中沒(méi)有數(shù)值,所以程序中讓P直接指向“頭結(jié)點(diǎn)”的下一個(gè)結(jié)點(diǎn),使用語(yǔ)句STREC+P=h÷next。
23.
【解析】首先將一個(gè)STREC結(jié)構(gòu)的變量學(xué)號(hào)賦值為空,成績(jī)?yōu)?1。要返回指定學(xué)生的數(shù)據(jù),應(yīng)該將每一個(gè)學(xué)生的學(xué)號(hào)與給定的學(xué)生學(xué)號(hào)相比較。若有相同的,則把其數(shù)據(jù)返回給主函數(shù)。如果沒(méi)有該學(xué)號(hào)的學(xué)生,就將定義的學(xué)號(hào)為空,成績(jī)?yōu)?1的記錄返回給主函數(shù)。
24.Intfun(char*s){Inti,j=0;for(i=0;s[i]!=’\\o’/i++)if(s[i]!=’'&&(s[i+i]==’’||s[i+1]=='\\0'))/*如果一個(gè)字母的下一個(gè)字符為空格或者結(jié)束標(biāo)記,則表示一個(gè)單詞結(jié)束*/J++;_returnj;/*返回單詞個(gè)數(shù)*/}要判斷單詞的個(gè)數(shù),首先考慮怎樣識(shí)別一個(gè)單詞。如果一個(gè)字母的下一個(gè)字符為空格或者字符串結(jié)束標(biāo)志,則表示一個(gè)單詞結(jié)束。因此程序使用for循環(huán)語(yǔ)句遍歷整個(gè)字符串,用if條件語(yǔ)句判斷當(dāng)前字符是否表示一個(gè)單詞的結(jié)束。如果當(dāng)前字符表示一個(gè)單詞結(jié)束,則存放單詞個(gè)數(shù)的變量加1,最后返回單詞的個(gè)數(shù)。25.1voidfun(char*str)2{3inti=0;4char*p=str;5while(*p)6{7if(*p!='')/*刪除空格*/8{9str[i++]=*p;10}11p++;12}13str[i]='\\0';/*加上結(jié)束符*/14}本題要求刪除所有空格,即保留除了空格以外的其他所有字符。由于C語(yǔ)言中沒(méi)有直接刪除字符的操作,因此對(duì)不需要?jiǎng)h除的字符采用“保留”的操作。用指針P指向字符串中的每一個(gè)字符,每指向一個(gè)字符都判斷其是否為空格,若不是空格則將其保存到數(shù)組Str。26.1doublefun(doublea[],intn)Doublesum=0,max,min;inti;max=min=a[0];for(i=0;i<n;i++){</n;i++)<n;i++)sum=sum+a[i];</n;i++)if(max<a[i])max=a[i];<n;i++)if(min>a[i])min=a[i];</n;i++)<n;i++)sum=sum-max-min;</n;i++)<n;i++)return(sum/(n-2));</n;i++)<n;i++)}</n;i++)<n;i++)設(shè)定3個(gè)變量,sum存放和值,max存放最大值,min存放最小值。max和min都賦為數(shù)組中第1個(gè)元素的值。利用循環(huán)將數(shù)組中元素累加到sum中,并找出最大值和最小值。sum值減去最大值和最小值。函數(shù)返回sum除以(元素個(gè)數(shù)減2)得平均值。</n;i++)27.\r\n\tvoidproc(int(*s)[10],int*b,int*n,intmm,intnn)
{
inti,j,k=0;
for(i=0;i<mm;i++)//i是表示其行的下標(biāo)
for(j=0;j<nn;j++)//j是表示其列的下標(biāo)
b[k++]=s[i][j];//把其放到b的一維數(shù)組中
*n=k;//把b數(shù)組的長(zhǎng)度通過(guò)形參n傳回到主函數(shù)中
}
【解析】要將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,可以通過(guò)首先行循環(huán),然后列循環(huán)取出二維數(shù)組中的每一個(gè)元素,并將其放入一維數(shù)組中。最后,將一維數(shù)組的長(zhǎng)度通過(guò)形參返回到主函數(shù)當(dāng)中。
28.
【解析】首先判斷小于等于整數(shù)lim的所有整數(shù)是否為素?cái)?shù)。然后將一個(gè)素?cái)?shù)放入數(shù)組aa中,最后將素?cái)?shù)的個(gè)數(shù)返回給主函數(shù)。
29.\n\tvoidfun(char*a)
\n{
\ninti,j=0;
\nfor(i=0;a[i]!=\0;i++)
\nif(a[i]!=*)
\na[j++]=a[i];//若不是要?jiǎng)h除的字符*則保留
\na[j]=\0;//最后加上字符串結(jié)束符\0
\n}
\n【解析】此題是刪除字符串中的星號(hào)。思路是通過(guò)for循環(huán)完成對(duì)字符串的遍歷,通過(guò)if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中星號(hào)前的位置,“if(a[i]!=*)”“a[i++]=a[i]”,最后返回主函數(shù)將刪除*后的字符串輸出即可。\n
30.
【考點(diǎn)分析】
本題考查:if語(yǔ)句,用來(lái)判斷能被7整除或者能被11整除,但是又不能同時(shí)被7和11整除的數(shù),在這里充分理解”邏輯與”和”邏輯或”的區(qū)別;for循環(huán)語(yǔ)句的循環(huán)變量用來(lái)控制取值范圍。
【解題思路】
該題需要運(yùn)用循環(huán)判斷結(jié)構(gòu)來(lái)實(shí)現(xiàn),其中循環(huán)語(yǔ)句比較容易,只要確定循環(huán)變量的范圍即可,下面來(lái)看判斷語(yǔ)句,題目要求找出能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù)。能同時(shí)被7和ll整除的整數(shù)一定能被77整除,且不能被
77整除的數(shù)不一定就是能被7或11整除的數(shù),所以可得出程序中的if語(yǔ)句。注意:(i%7==0||i%11==0)兩邊必須要有小括號(hào)。
31.(1)錯(cuò)誤:result*=--n;正確:result*=n--;(2)錯(cuò)誤:return;正確:returnresult;(1)錯(cuò)誤:result*=--n;正確:result*=n--;\r\n(2)錯(cuò)誤:return;正確:returnresult;解析:該題采用循環(huán)語(yǔ)句計(jì)算n的階乘。當(dāng)n大于1且小于170時(shí),令result與n相乘,同時(shí)n自動(dòng)減1,循環(huán)至n=2(n=1時(shí)無(wú)需相乘):注意:o和1的階乘都等于1,可用條件語(yǔ)句和循環(huán)語(yǔ)句實(shí)現(xiàn)上述功能。
32.錯(cuò)誤:缺{正確:加{錯(cuò)誤:缺{正確:加{解析:本題我們可以拆分成兩個(gè)簡(jiǎn)單的c語(yǔ)言試題:
(1)求出n個(gè)數(shù)的平均值。
(2)將大于平均值的數(shù)字個(gè)數(shù)計(jì)算出來(lái)。可利用循環(huán)和條件選擇語(yǔ)句,對(duì)x數(shù)組進(jìn)行遍歷,若某個(gè)值大于平均成績(jī),則將該元素累加計(jì)入c中。我們先來(lái)摘清楚一個(gè)簡(jiǎn)單的求10個(gè)整數(shù)平均值的例子。
#include'stdio.h'
voidmain()
{
inti,a[10],s=0;
floataver=0.0;
for(i=0;i<10;i++)
{
scanf('%d',&a[i]);
s=s+i;
}
aver=s/10.0;
printf('這十整數(shù)中的平均值為:%f',aver);
}
其實(shí),n個(gè)整數(shù)求和也就是10個(gè)整數(shù)的拓展,沒(méi)什么難的!
33.(1)#include<stdio.h>(2)upfst(char*p)(1)#include<stdio.h>(2)upfst(char*p)解析:本題中函數(shù)的功能是將每個(gè)單詞的第一個(gè)字母改成大寫(xiě)。該題的解題思路根據(jù)題干中“這里的‘單詞’是指由空格隔開(kāi)的字符串”可以歸納為主要是對(duì)字符串中空格字符的查找。
34.(1)t=1;(2)return(2*s);(1)t=1;(2)return(2*s);解析:該題中函數(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個(gè)人貸款合同模板小微企業(yè)發(fā)展助力
- 二零二五年度設(shè)計(jì)作品版權(quán)轉(zhuǎn)讓合同協(xié)議書(shū)3篇
- 二零二五版玩具回收再利用合作協(xié)議3篇
- 人教版八年級(jí)上冊(cè)語(yǔ)文第二單元測(cè)試題及答案
- 2025-2030全球銀行云解決方案行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球固體氯(氯錠)殺菌滅藻劑行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球基于區(qū)塊鏈的自主主權(quán)身份(SIS)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)增材制造用商業(yè)純鈦粉行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 二零二五年度虛擬現(xiàn)實(shí)游戲出樣及推廣合作協(xié)議4篇
- 二零二五年度高校教師校園文化建設(shè)與傳播協(xié)議4篇
- 公司差旅費(fèi)報(bào)銷(xiāo)單
- 梁山伯與祝英臺(tái)小提琴譜樂(lè)譜
- 我國(guó)全科醫(yī)生培訓(xùn)模式
- 2021年上海市楊浦區(qū)初三一模語(yǔ)文試卷及參考答案(精校word打印版)
- 八年級(jí)上冊(cè)英語(yǔ)完形填空、閱讀理解100題含參考答案
- 八年級(jí)物理下冊(cè)功率課件
- DBJ51-T 188-2022 預(yù)拌流態(tài)固化土工程應(yīng)用技術(shù)標(biāo)準(zhǔn)
- 《長(zhǎng)津湖》電影賞析PPT
- 銷(xiāo)售禮儀培訓(xùn)PPT
- 滑雪運(yùn)動(dòng)介紹
- 最新滋補(bǔ)類(lèi)中藥的用藥保健主題講座課件
評(píng)論
0/150
提交評(píng)論