




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2023年湖北省十堰市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)學(xué)校:________班級:________姓名:________考號:________
一、2.填空題(10題)1.若有以下程序
intf(intx,inty)
{return(y-x)*x;}
main()
{inta=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
ptintf("%d\n",D);
執(zhí)行后輸出結(jié)果是______。
2.下面程序的輸出是【】。
main()
{enumem{em1=3,em2=1,em3};
char*aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
3.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d,%d\",a,b);
elseprintf("%d,%d\n",b,a);}
4.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、______和處理過程。
5.以下程序的輸出結(jié)果是【】。
main()
{
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%d\n",*(p+3));
}
6.棧的3種基本運算是:入棧、退棧和______。
7.通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為【】。
8.下面程序有兩個printf語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結(jié)果是【】。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);
printf("%x\n,p+9);
}
9.以下程序的輸出結(jié)果是______。
main()
{inta=1,b=2;
a=a+b;b=a-b;a=a-b;
printf("%d,%d\n",a,b);
}
10.下列的for語句的循環(huán)次數(shù)為______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
二、單選題(10題)11.以下針對相應(yīng)語句的注釋中,說法錯誤的是()。
A.int*pt[2];/*pt是一個指針數(shù)組名*/
B.int(*pt)[2];/*pt是一維數(shù)組名*/
C.int(*pt)();/*pt是指向函數(shù)的指針*/
D.int*pt();/*pt是一個函數(shù)名*/
12.一個算法應(yīng)當(dāng)具有5個特性,以下敘述中正確的是()。
A.有窮性、確定性、復(fù)雜性、有零個或多個輸入、有一個或多個輸出
B.有窮性、確定性、可行性、有零個或多個輸入、有一個或多個輸出
C.有窮性、確定性、可行性、必須要有一個以上的輸入、有一個或多個輸出
D.有窮性、確定性、復(fù)雜性、有零個或多個輸入、必須要有多個輸出
13.有以下程序
#include<stdio.h>
voidfun(intP)
{intd=2;
P=d++;printf(“%d”,P);}
main()
{inta=1;
fun(A);prinff(“%.d\n”,A);}
程序運行后的輸出結(jié)果是A.32B.12C.21D.22
14.下面程序的輸出結(jié)果是()。chars()="ABCD",*p;main(){for(p=s;p<s+4;p++)printf("%s\n",p);)
A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA
15.下列程序的輸出結(jié)果是()。voidfun(int*X,inty){printf("%d%d",*x,*y);*x=3;*y=1;}main{intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A.2143B.1212C.1234D.2112
16.軟件需求分析一般應(yīng)確定的是用戶對軟件的______。
A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求
17.
18.
19.有以下程序:main{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,12,},{13,14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<i;j++)printf("%4c",);for(j=________;J<4;j++)printf("%4d",num[i][j]);printf("\n");}}若要按以下形式輸出數(shù)組右上半三角1234678111216則在程序下劃線處應(yīng)填入的是()。A.i-1B.iC.i+1D.4一i
20.
三、程序設(shè)計題(10題)21.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),它的功能是求出能整除x且不是偶數(shù)的整數(shù),并將這些整數(shù)按從小到大的順序放在PP所指的數(shù)組中,總個數(shù)通過形參n返回。如x中的值為30,則有4個數(shù)符合要求,它們是1、3、5、15。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
22.程序定義了M×M的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)proc(inta[][M],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的值加上n。例如,a數(shù)組中的值為:
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
23.編寫函數(shù)fun(),其功能是計算:
s作為函數(shù)值返回。
在C語言中可調(diào)用log(n)函數(shù)求1n(n)。log函數(shù)的引
用說明為:doublelog(doublex)。
例如,若m的值為20,則fun()函數(shù)值為6.506583。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。
試題程序:
24.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,定義了NxN的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(),該函數(shù)的功能是使數(shù)組上三角元素中的值乘以m。若m的值為2,a數(shù)組中的值為197238456則返回主程序后a數(shù)組中的值應(yīng)為2181426164512注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#include5#defineN56voidfun(inta[][N],intm)7{89}10main()11{12inta[N][N],m,i,j;13FILE*out;14printf("***Thearray***\n");15for(i=0;i<n;i++)16{for(j=0;j<n;i++)27{for(j=0;j38{for(j=0;j<n;j++)39fprintf(out,"%4d",a[i][j]);40fprintf(out,"\n");41}42fclose(out);43/*********found********/44}1voidfun(inta[][n],intm)2{3inti,j;4for(j=0;j<n;j++)5:for(i=0;i<=j;i++)6:a[i][j]=a[i][j]*m;/*上三角元素中的值乘以m*/
25.請編寫fun函數(shù),其功能是:計算并輸出3~m所有素數(shù)的平方根之和。
例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=68.665791。
請勿改動main函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
注意:m的值要大于2但不大于100。部分源程序給出如下。
試題程序:
#include<math.h>
#include<stdio.h>
doublefun(intm)
{}
voidmain
{
intm;
doubles;
FILE*out:
printf("\n\nInputm:");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
ut=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
felose(out);
}26.請編寫函數(shù)proc(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的字符數(shù)據(jù),按列的順序依次放到一個字符串中。例如,若二維數(shù)組中的數(shù)據(jù)為:
WWW
SSS
HHH
III
則字符串中的內(nèi)容應(yīng)是WSHIWSHIWSHI。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填人所編寫的若干語句。
試題程序:
27.編寫函數(shù)intproc(intlim,intaa[M]),該函數(shù)的功能是求出小于或等于lim的所有素數(shù)并放在aa數(shù)組中,該函數(shù)返回所求出的素數(shù)。例如,若輸入12時,則輸出:235711。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
28.某學(xué)生的記錄由學(xué)號、8門課程成績和平均分組成,學(xué)號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voldfun(STREC*a){}voidmainSTRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};inti;fun(&s);printf("The%ssstudentdata:\n",s.num);for(i=0;i<N;i++)printf("%4.1fkn",s.s[i]);printf("\nknave=%7.3fkn",s.aVe);printf("\n");}
29.某學(xué)生的記錄由學(xué)號、8門課程成績和平均分組成,學(xué)號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù)fun,其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。
例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fIm的花括號中填入你編寫的若干語句。
30.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g。***,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是****a*bc*def*g。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:
四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是計算并輸出high以內(nèi)的素數(shù)之和。high由主函數(shù)傳給fun()函數(shù)。若high的值為100,則函數(shù)的值為1060。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
intfun(inthigh)
{
intsum=0,n=0,j,yes;
while(high>=2)
{
yes=1;
for(j=2;j<=high/2;j++)
/*************found**************/
ifhigh%j==0
{
yes=0;
break;
}
/*************found**************/
if(yes==0)
{
sum+=high;
n++;
}
high--;
}
returnsum;
}
main()
{
clrscr();
printf("%d\n",fun(100));
}
32.下列給定程序中,函數(shù)fun()的功能是:找出一個大于給定整數(shù)m且緊隨m的素數(shù),并作為函數(shù)值返回。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
intfun(intm)
{inti,k;
for(i=m+1;;i++)
{for(k=2;k<i;k++)
/*************found**************/
if(i%k!=0)
break;
/*************found**************/
if(k<i)
return(i);
}
}
main()
{intn;
clrscr();
printf("\nPleaseentern:");
scanf("%d",&n);
printf("%d\n",fun(n));
}
33.給定程序MODll.C中函數(shù)fun的功能是:計算小于形參k的最大的10個能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的值為500,則函數(shù)值為4622。
請改正程序中的錯誤,使程序能輸出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
34.下列給定程序中,函數(shù)fun()的功能是:將m(1≤m≤10)個字符串反著連接起來,組成一個新串,放入pt所指字符串中,例如:把3個串DEG,ac,df反著串聯(lián)起來,結(jié)果是dfacDEG。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或者刪行,也不得改變程序的結(jié)構(gòu)!
試題程序:
#include<conio.h>
#include<string.h>
#include<stdio.h>
voidfun(charstr[][10],intm,char*pt)
{
intk,q,i,j=0;
/*************found*************/
for(k=m;k>0;k--)
{
q=strlen(str[k]);
j+=q;
for(i=0;i<q;i++)
pt[i]=str[k][i];
pt+=q;
pt[0]=0;
}
/*************found**************/
pt=j;
}
main()
{intm,h;
chars[10][10],p[120];
clrscr();
printf("\nPleaseenterm:");
scanf("%d",&m);
printf("\nPleaseenter%dstring:\n",m);
gets(s[0]);
for(h=0;h<m;h++)
gets(s[h]);
fun(S,m,p);
printf("/nTheresultiS:%s\n",p);
}
35.下列給定程序中,fun()函數(shù)的功能是:根據(jù)形參m,計算下列公式的值。
t=-1+1/2+1/3+1/4+…+1/m
例如,若輸入5,則應(yīng)輸出2.283333。
請改正程序中的錯誤,使它能計算出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
{
doublet=1.0;
inti;
for(i=2;i<=m;i++)
/*************found**************/
t+=1.0/k;
/*************found**************/
returni;
}
main()
{intm;
clrscr();
printf("\nPleaseenterlintegernumber:");
scanf("%d",&m);
printf("\nTheresultis%1f\n",fun(m));
}
36.下列給定程序中,函數(shù)fun()的功能是求出數(shù)組中最小數(shù)和次最小數(shù),并把最小數(shù)和a[0]中的數(shù)對調(diào),次最小數(shù)和a[1]中的數(shù)對調(diào)。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#defineN20
voidfun(int*a,intn)
{
inti,m,t,k;
/*************found**************/
for(i=O;i<n;i++)
{
m==i;
for(k=i;k<n;k++)
if(a[k]<a[m])
/*************found**************/
k=m;
t=a[i];
a[i]=a[m];
a[m]=t;
}
}
main()
{
intx,b[N]={11,5,12,0,3,6,9,7,10,8},
n=10,i;
clrscr();
for(i=0;i<n;i++)
printf("%d",b[i]);
printf("\n");
fun(b,n);
for(i=0;i<n;i++)
printf("%d",b[i]);
printf("\n");
}
37.給定程序MODll.c中函數(shù)fun的功能是;由形參給定n個實數(shù),輸出平均值,并統(tǒng)計在平均值以上(含平均值)的實數(shù)個數(shù)。
例如,n=8時,輸入:193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763
所得平均值為:195.838745,在平均值以上的實數(shù)個數(shù)應(yīng)為:5
請改正程序中的錯誤,使程序能輸出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
38.下列給定程序中,函數(shù)fun()的功能是:對N名學(xué)生的學(xué)習(xí)成績,按從低到高的順序找出前m(m≤10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<string.h>
#include<stdio.h>
#include<alloc.h>
#defineN10
typedefstructSS
{
charnum[10];
ints;
}STU;
STU*fun(STUa[],intm)
{
STUb[N],*t;
inti,j,k;
/*************found*************/
*t=calloc(m,sizeof(STU));
for(i=0;i<N;i++)
b[i]=a[i];
for(k=0;k<m;k++)
{
/*************found*************/
for(i=j=0;i<N;j++)
if(b[i].s<b[j],s)
j=i;
/*************found*************/
t[k].s=b[j].s;
b[j].s=100;
}
returnt;
}
outresult(STUa[],F(xiàn)ILE*pf)
{
inti;
for(i=0;i<N;i++)
fprintf(pf,"NO=%SMark=%d\n",
a[i].num,a[i].S);
fprintf(pf,"\n\n");
}
main()
{
STUa[N]={{“A01”,77},{“A02”,85},
{“A03”,96},{“A04”,65},{“A05”,75},
{“A06”,96},{“A07”,76},{“A08”,63},
{“A09”,69},{“A10”,78}};
STU*porder;
inti,m;
clrscr();
printf(“*****THERESULT*****\n”);
outresult(a,stdout);
printf(“\nGivethenumberofthestudentswhohavelowerscore:”);
scanf(“%d”,&m);
while(m>10)
{
printf(“\nGivethenumberofthestudentswhohavelowerscore:”);
scanf(“%d”,&m);
}
porder=fun(a,m);
printf(“*****THERESULT*****\n”);
printf(“Thelow:\n”);
for(i=0;i<m;i++)
printf(“%s%d\n”,porder[i].num,
porder[i].s);
free(porder);
}
39.下列給定程序中,函數(shù)fun()的功能是求出數(shù)組中最小數(shù)和次最小數(shù),并把最小數(shù)和a[0]中的數(shù)對調(diào),次最小數(shù)和a[1]中的數(shù)對調(diào)。
請改正程序中的錯誤,使它能得到正確結(jié)果。
[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<stdio.h>
#include<conio.h>
#defineN20
voidfun(int*a,intn)
{
inti,m,t,k;
/************************found************************/
for(i=0;i<n;i++)
{
m=i;
for(k=i;k<n;k++)
if(a[k]<a[m])
/************************found************************/
k=m;
t=a[i];
a[i]=a[m];
a[m]=t;
}
}
40.下列給定程序中,函數(shù)fun()的功能是:從3個紅球,5個白球,6個黑球中任意取出8個作為一組,進行輸出。在每組中,可以沒有黑球,但必須要有紅球和白球。組合數(shù)作為函數(shù)值返回。正確的組合數(shù)應(yīng)該是15。程序中i的值代表紅球數(shù),j的值代表白球數(shù),k的值代表黑球數(shù)。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注童:不要改動main函數(shù),不得增行或刪行,也不得更改程序的蛄構(gòu)。
試題程序:
#include<stdio.h>
intfun()
{inti,j,k,sum=0;
printf("\nTheresult:\n\n");
/**************found***************/
for(i=0;i<=3;i++)
{for(j=1;j<=5;j++)
{k=8-i-j;
/**************found******************/
if(k>=1&&k<=6)
{sum=sum+1;
printf("red:%4dwhite:%4d
black:%4d\n",i,j,k);
}
)
}
returnsum;
}
main()
{intsum;
sum=fun();
printf("sum=%4d\n\n",sum);
}
五、程序改錯題(2題)41.下列給定程序中,函數(shù)proc()的功能是:將m(1≤m≤10)個字符串反著連接起來,組成一個新串,放入pt所指字符串中,例如,把“ab、cd、ef9”3個字符串反著串連起來,結(jié)果是efgcdab。
請修改程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或者刪行,也不得改變程序的結(jié)構(gòu)!
試題程序:
42.下列給定程序中,函數(shù)proc()的作用是:將字符串str中的大寫字母都改為對應(yīng)的小寫字母,其他字符不變。例如,若輸入“abD,dFAD”,則輸出“abd,dfad”。請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、操作題(2題)43.請補充main()函數(shù),該函數(shù)的功能是:從鍵盤輸入一個長整數(shù),如果這個數(shù)是負(fù)數(shù),則取它的絕對值,并顯示出來。例如,輸入:-123456,結(jié)果為:123456。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在橫線上填入所編寫的若干表達式或語句。試題程序:
44.下列給定程序中,函數(shù)fun()的功能是:按順序給s所指數(shù)組中的元素賦予從2開始的偶數(shù),然后再按順序?qū)γ?個元素求一個平均值,并將這些值依次存放在w所指的數(shù)組中。若s所指數(shù)組中元素的個數(shù)不是5的倍數(shù),多余部分忽略不計。例如,s所指數(shù)組有14個元素,則只對前10個元素進行處理,不對最后的4個元素求平均值。
請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#defineSIZE20
fun(double*s,double*w)
{intk,i;doublesum;
for(k=2,i=0;i<SIZE;i++)
{s[i]=k;k+=2;}
sum=0.0;
for(k=0,i=0;i<SIZE;i++)
{sum+=s[i];
/*************found**************/
if(i+1%5==0)
{w[k]=sum/5;Sum=0;k++;}
}
returnk;
}
main()
{doublea[SIZE],b[SIZE/5];
inti,k;
k=fun(a/b);
printf("Theoriginaldata:\n");
for(i=0;i<SIZE;i++)
{
if(i%5==0)printf("\n");
printf("%4.0f"/a[i]);
}
printf{"\n\nTheresult:\n");
for(i=0;i<k;i++)printf("%6.2f",b[i]);
printf("\n\n");
}
參考答案
1.99解析:在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給d。函數(shù)的第一個參數(shù)為f(3,4)的返回值,函數(shù)f(9,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數(shù)f(f(3,4),f(3,5))等價于函數(shù)f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9;所以輸出9。
2.DDBBCCDDBBCC解析:C語言對枚舉的定義規(guī)定:在枚舉中聲明的各個枚舉元素,如果沒有明確指出某個枚舉元素的值,它的上一個元素存在并有明確值的情況下,這個枚舉元素的值為其上一個元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=em2+1=1+1=2,進而可知,在printf()打印函數(shù)中,要打印的數(shù)組元素是aa[3]、aa[1]、aa[2],因此最后的打印結(jié)果應(yīng)當(dāng)為“DDBBCC”。
3.101,0解析:與運算兩邊的語句必須同時為真時,結(jié)果才為真。當(dāng)執(zhí)行完if((++a<0)&&!(b--<=0))時,a,b的值已經(jīng)發(fā)生了變化。
4.數(shù)據(jù)存儲數(shù)據(jù)存儲
5.1010解析:整型指針最初被賦的值是數(shù)組arr的頭指針,即指向數(shù)組的第一個元素30,p++后,指針指向數(shù)組的下一個元素,即*p=arr[1]=25,在執(zhí)行*(p+3)時,則相當(dāng)于a[1+3],即10。因此,輸出應(yīng)為100。
6.讀棧頂元素讀棧頂元素解析:棧的基本運算有3種:入棧、退棧和讀取棧頂元素。其中,入棧是指在棧頂插入一個新的元素;退棧是指取出棧頂元素并賦值給一個變量;讀棧頂元素是將棧頂元素賦值給一個指定的變量,不刪除棧頂元素。
7.軟件生命周期軟件生命周期解析:軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。一般包括可行性研究與需求分析、設(shè)計、實現(xiàn)、測試、交付使用以及維護等活動。
8.1a61a6解析:對于指針變量的運算,就是對地址的運算。本題中由于指針指向的是整型變量,所以,使指針變量移動9個位置也就是移動18個字節(jié)。注意,本題是以十六進制輸出的。
9.21
10.66解析:分析程序可知,每循環(huán)一次,x的值加1,然后檢測循環(huán)控制條件(y!=19)&&(x<7),因y的值不變,故滿足x<7時循環(huán)6次。
11.B選項A定義了一個數(shù)組pt,它包含兩個整型指針元素,所以pt是一個指針數(shù)組名,正確;選項B定義了一個數(shù)組指針Pt,pt指向一個數(shù)組,該數(shù)組包含兩個整型元素,錯誤;選項C定義了一個函數(shù),pt是函數(shù)指針,指向的函數(shù)沒有參數(shù),返回類型為整型,正確;選項D定義了一個函數(shù),函數(shù)名為pt,函數(shù)返回整型指針類型,正確。故本題答案為B選項。
12.B算法是指為解決某個特定問題而采取的確定且有限的步驟,一個算法應(yīng)當(dāng)具有5個特征:有窮性、確定性、可行性、有雩個或多個輸入、有一個或多個輸出。本題答案為B選項。
13.C程序運行后,首先輸出的是p的值,然后再輸出a的值。p=d++,得到p的值為d的初始值2;a的值不變,仍為1。
14.A解析:p為指針型變量。第一次循環(huán),p=s,p的值為字符數(shù)組s的首地址,輸出字符串'ABCD'。p++,第二次循環(huán),p的值為字符數(shù)組s的首地址加1,輸出字符串'BCD'。p++,第三次循環(huán),p的值為字符數(shù)組s的首地址加2,輸出字符串'CD'。p++,第4次循環(huán),p的值為字符數(shù)組s的首地址加3,輸出字符串\'D'。
15.C當(dāng)執(zhí)行fun函數(shù)時,因為參數(shù)傳遞時是地址傳遞,因此形參值的改變會影響實參中的數(shù),在執(zhí)行fun函數(shù)時先輸出12,接著把*X賦3,*y賦4,此時帶回主函數(shù)中,輸出的值為34。
16.DD?!窘馕觥寇浖枨蠓治鲋行枰獦?gòu)造一個完全的系統(tǒng)邏輯模型,理解用戶提出的每一功能與性能要求,使用戶明確自己的任務(wù)。因此,需求分析應(yīng)確定用戶對軟件的功能需求和非功能需求。
17.A
18.A
19.B本題中要求輸出右上半角的數(shù),對角線上的數(shù)的下標(biāo)相同,所以j=i。
20.C
21.1voidfun(intx,intpp[],int*n)2{3inti,j=0;4for(i=l;i<=x;i=i+2)/*i的初值為1,步長為2,確保i為奇數(shù)*/5if(x%i==0)/*將能整除x的數(shù)存入數(shù)組pp中*/6pp[j++]=i;7*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/8}本題考查:偶數(shù)的判定方法;整除的實現(xiàn)。本題題干信息:能整除X且不是偶數(shù)的所有整數(shù)。循環(huán)語句中變量i從1開始且每次遞增2,所以i始終是奇數(shù)。將能整除x的i值存放到數(shù)組PP中,整除采用求余運算符“%”,即“x%i==0”。最后將數(shù)據(jù)元素個數(shù)j保存到n中。
22.
【解析】使數(shù)組左下半三角元素中的值加上n,首先要找出數(shù)組中下半三角元素。數(shù)組中下半三角元素的特點是,其列下標(biāo)小于等于行下標(biāo)。根據(jù)這個特點找出所有的下半三角元素再加上n放在原來的位置上。
23.
【解析】題目要求寫出程序?qū)崿F(xiàn)數(shù)學(xué)表達式的功能,需要用for循環(huán)計算累加的結(jié)果,調(diào)用sqrt函數(shù)實現(xiàn)求平方根。循環(huán)變量的范圍是1~m,每次循環(huán)都進行一次累加求和。需要特別注意的是,log函數(shù)的形式參數(shù)為double型變量,用于循環(huán)的計數(shù)變量為整數(shù),所以必須強制轉(zhuǎn)換。最后返回所求出的平方根。
24.1voidfun(inta[][n],intm)2{3inti,j;4for(j=0;j
<="">5for(i=0;i<=j;i++)6a[i][j]=a[i][j]*m;/*上三角元素中的值乘以m*/7}本程序?qū)崿F(xiàn)的是:矩陣上三角元素的值乘以m。上三角元素下標(biāo)的特點是行下標(biāo)小于等于列下標(biāo),即“i<=j”使用循環(huán)語句遍歷數(shù)組元素,第1個循環(huán)用于控制列坐標(biāo),第2個循環(huán)用于控制行下標(biāo)。25.\r\n\tintn,k,i;
doublesum=0.0;
for(n=3;n<=m;n++)//判斷n是否為素數(shù)
{
k=sqrt(n);//求n平方根
for(i=2;i<=k:i++)
if(n%i==0)break;//如果n不是素數(shù),跳出
if(i>=k+1)
sum+=sqrt(n);//求平方根的和
}
returnsum;
【解析】首先判斷循環(huán)中n是否為素數(shù),如果不是素數(shù),求其平方根的累加和,并返回計算結(jié)果,否則跳出判斷循環(huán)。其中,對于平方根的求解可以使用C語句中的sqrt函數(shù)。
26.
(2)錯誤:if(*r==0)
正確:if(*r==ˊ\0ˊ)
【解析】由于后面的語句控制變量r是指向字符串t的指針,而不是指向字符串str的指針,因此,“r=p;”應(yīng)改為“r=t;”。while循環(huán)結(jié)束后,如果r指向字符串t的結(jié)束符,證明字符串str中包含一個t字符串,因此,“if(*r=0)”應(yīng)改為“if(*r==ˊ\0ˊ)”。
27.
【解析】首先判斷小于等于整數(shù)lim的所有整數(shù)是否為素數(shù)。然后將一個素數(shù)放入數(shù)組aa中,最后將素數(shù)的個數(shù)返回給主函數(shù)。
28.voidfun(STREC*a){inti;a->ave=0.0;for(i=0;i<N;i++)a->ave=a->ave+a->s[i];/*求各門課程成績的總和*/a->ave=a->ave/N;/*求平均分*/}【解析】本題考查的是指向結(jié)構(gòu)體類型的指針變量做參數(shù)和結(jié)構(gòu)體類型成員的運算。fun函數(shù)中求出平均成績,要帶回主函數(shù)則必須定義一個指針類型的形參STREC*a,同時引用成員使用指向運算符,a->ave和a->s[i]。29.
voidfun(STREC*a)
inti:
a一>ave=0.0:
fbr(i=0;i<N;i++)a一>ave=a—>ave+·一>s[i];/*求各門成績的總和}/
a->ave/=N;/}求平均分*/}
【考點分析】
本題考查:結(jié)構(gòu)體類型成員運算,指向結(jié)構(gòu)體類型的指針變量作函數(shù)參數(shù)。
【解題思路】
本題考查自定義形參的相關(guān)知識點,程序流程是這樣的:在如n()函數(shù)中求出平均分后,返回到主函數(shù)時平均分也要帶回,所以只能定義一個指針類型的形參STREC·a,此時,引用成員的方式可以使用指向運算符,即a一>ave和a—>s[i],當(dāng)然也可用(*a),ave和(*a).S[i]。
30.
【解析】要刪除字符串尾部的所有*,只要將尾部所有*中的第一個改為字符串結(jié)束符即可。首先,將字符串指針移動到字符串最后一個位置,檢查最后一個字符,是*則將指針前移,否則將指針后移一個位置賦值作為結(jié)束符。
31.(1)錯誤:ifhigh%j=0正確:if(high%j==0)(2)錯誤:if(yes==0)正確:if(yes)(1)錯誤:ifhigh%j=0正確:if(high%j==0)\r\n(2)錯誤:if(yes==0)正確:if(yes)解析:錯誤1:if語句的兩側(cè)要加括號。錯誤2:yes為1時,說明被判斷的數(shù)為素數(shù),要加入總和。
32.(1)錯誤:if(i%k!=0)正確:if(i%k=0)(2)錯誤:if(k<i)正確:if(k>=i)(1)錯誤:if(i%k!=0)正確:if(i%k=0)\r\n(2)錯誤:if(k<i)正確:if(k>=i)解析:也許剛接觸C語言的學(xué)習(xí)者對素數(shù)的概念不清楚,在這里說明一下,素數(shù)就是質(zhì)數(shù),本題的任務(wù)是隨便輸入一個整數(shù)m,然后在m的后面尋找緊跟m的一個質(zhì)數(shù),作為函數(shù)值返回。
for(i=m+1;;i++){
是從m后面的一位開始循環(huán),將m后面一位的值賦予i。然后;我們依次判斷m后面的一位是否為素數(shù)。
for(k=2;k<i;k++)
if(i%k==0)
是一個簡單的數(shù)學(xué)判斷問題,判斷i被賦予的值與k的余數(shù)是否為零。
33.(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));”語句中的fun函數(shù)將500傳給n,計算小于500的能被13或17整除的自然數(shù)之和。
34.(1)錯誤:for(k=m;k>0;k--)正確:for(k=m-1;k>=0;k--)(2)錯誤:pt=j;正確:pt-=j;(1)錯誤:for(k=m;k>0;k--)正確:for(k=m-1;k>=0;k--)\r\n(2)錯誤:pt=j;正確:pt-=j;解析:錯誤1:本題旨在考查二維數(shù)組下標(biāo)的靈活使用,如果二維數(shù)組有m行,則行下標(biāo)取值從0到m-1。錯誤2:此時指針pt指向字符串的尾部,而函數(shù)返回的應(yīng)是字符串的首地址,所以pt向前移動j個字符,則到達字符串的首部。
35.(1)錯誤:t+=1.0/k;正確:t+=1.0/i;(2)錯誤:returni;正確:returnt;(1)錯誤:t+=1.0/k;正確:t+=1.0/i;\r\n(2)錯誤:returni;正確:returnt;解析:該題目考查分母成等差數(shù)列遞增的一個數(shù)學(xué)公式,我們先看看循環(huán)條件for(i=2;i<=m;i++),i是從2開始遞增到m,所以t的值應(yīng)該由1.0/i的值逐步循環(huán)疊加后的結(jié)果,而不是t+=1.0/k;,returni;考查對程序的解讀能力,當(dāng)循環(huán)結(jié)束后(由輸入m的值決定),函數(shù)值返回當(dāng)前t的值。
36.(1)錯誤:for(i=0;i<n;i++)正確:for(i=0;i<2;i++)(2)錯誤:k=m;正確:m=k;(1)錯誤:for(i=0;i<n;i++)正確:for(i=0;i<2;i++)\r\n(2)錯誤:k=m;正確:m=k;解析:錯誤1:由于題目要求將最小數(shù)和次最小數(shù)分別與a[0]和a[1]中的數(shù)對調(diào),因此這層循環(huán)只需循環(huán)兩次。錯誤2:賦值語句的執(zhí)行方向是從右向左,即把右邊的值賦給左邊的變量。
37.(1)intj-c=0;doublexa=0.0;(2)if(x[j]>=xa)(1)intj-c=0;doublexa=0.0;(2)if(x[j]>=xa)解析:本題中函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧師范高等??茖W(xué)?!督Y(jié)晶化學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 工程項目投資監(jiān)理的合理化意見
- 耐火澆注料施工方案
- 廣東省廣州市2024-2025學(xué)年高二(上)期末生物試卷(含解析)
- 掛梯施工方案
- consul 節(jié)點查詢、服務(wù)提出和節(jié)點驅(qū)逐的命令
- chatbi落地應(yīng)用實例
- can電路的寄生電容
- ards肺保護通氣策略講課后點評
- 架空光纜 施工方案
- 2025年常州機電職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫參考答案
- 2024年四川大學(xué)華西醫(yī)院招聘考試真題
- 2025年安徽衛(wèi)生健康職業(yè)學(xué)院單招職業(yè)技能測試題庫及參考答案1套
- 《澳大利亞》導(dǎo)學(xué)案
- 2025年寧夏工商職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫必考題
- 2025四川省安全員A證考試題庫附答案
- 2025年高考語文備考訓(xùn)練之社會現(xiàn)象:“數(shù)字囤積癥”
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫帶答案
- 蘇教版三年級科學(xué)下冊第一單元第3課《植物開花了》課件
- 休閑海島開發(fā)策劃方案
- DB36-T 2097-2024 固定資產(chǎn)投資項目節(jié)能報告編制規(guī)范
評論
0/150
提交評論