版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2023年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)真題(含答案)學(xué)校:________班級:________姓名:________考號:________
一、2.填空題(10題)1.若有以下定義,則使指針p指向值為35的數(shù)組元素的語句是______。
inta[10]={14,27,47,29,35,21,49,71},*p;
2.數(shù)據(jù)庫系統(tǒng)在三級模式之間提供了兩層映像,這兩層映像是外模式/模式映像和【】。
3.以下程序運(yùn)行后的輸出結(jié)果是______。
main()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{
case0:m++;n++;break;
case10:n++;;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
4.表達(dá)式pow(2.8,sqrt(float(x)))值的數(shù)據(jù)類型為______型。
5.以下程序的運(yùn)行結(jié)果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
case3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
6.測試的目的是暴露錯(cuò)誤,評價(jià)程序的可靠性;而______的目的是發(fā)現(xiàn)錯(cuò)誤的位置并改正錯(cuò)誤。
7.設(shè)i,j,k均是int型變量,則執(zhí)行以下for循環(huán)后,k的值為【】。
for(i=0,j=10;i<=j;i++,j--)
k=i+j;
8.以下程序的輸出結(jié)果是______。
main()
{inta=1,b=2;
a=a+b;b=a-b;a=a-b;
printf("%d,%d\n",a,b);
}
9.下列程序的運(yùn)行結(jié)果是______。
main()
{inta=1,b=10;
do
{b-=a;a++;}while(b--<0);
printf("%d,%d\n",a,b);
}
10.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{
inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
{
if(i==2||==4)continue;
j=0;
do
{
s+=a[i][j];
j++;
}while(j<4);
}
Printf("%d\n",s);
}
二、單選題(10題)11.用二分法查找長度為10的、排好序的線性表,查找不成功時(shí),最多需要比較多少次?()
A.3B.4C.5D.6
12.給定數(shù)列(541,132,984,746,518,181,946,314,205,827)按照從小到大的順序排列,采用快速排序(以中間元素518為基準(zhǔn))的第一趟掃描結(jié)果是()
A.(541,132,827,746,518,181,946,314,205,984)
B.(205,132,314,181,518,746,946,984,541,827)
C.(132,541,746,984,181,518,314,946,205,827)
D.(132,541,746,518,181,946,314,205,827,984)
13.判斷一個(gè)單向鏈表中是否存在環(huán)的最佳方法是()
A.兩重遍歷B.快慢指針C.路徑記錄D.哈希表輔助
14.對于靜態(tài)表的順序查找法,若在表頭設(shè)置監(jiān)視哨,則正確的查找方式為()A.從第0個(gè)元素往后查找該數(shù)據(jù)元素
B.從第1個(gè)元素往后查找該數(shù)據(jù)元素
C.從第n個(gè)元素往開始前查找該數(shù)據(jù)元素
D.與查找順序無關(guān)
15.若有定義“inta=3,*p=&a,**q=&p;”,則以下敘述中錯(cuò)誤的是()。
A.q是指針變量,*q就是變量a
B.p是指針變量,p指向變量a
C.q指向變量p,所以*q指向變量a
D.*p與**q都代表變量a
16.有以下程序:#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){ case1: switch(y) { case0:a++;break; case1:b++;break; } case2:a++;b++;break; case3:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}程序的運(yùn)行結(jié)果是()。
A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0
17.一個(gè)棧的入棧序列是a,b,c,d,e,f,則棧的不可能的輸出序列為()
A.fedcbB.defbcC.defcbD.abcdef
18.函數(shù)fread(buffer,size,count,fp)中buffer代表的是()。
A.—個(gè)存儲區(qū),存放要讀的數(shù)據(jù)項(xiàng)
B.一個(gè)整數(shù),代表要讀入的數(shù)據(jù)項(xiàng)總數(shù)
C.一個(gè)文件指針,指向要讀的文件
D.—個(gè)指針,指向讀入數(shù)據(jù)要存放的地址
19.存儲以下數(shù)據(jù),占用存儲字節(jié)最多的是()。
A.0B.‘0’C.“0”D.0.0
20.有如下程序該程序的輸出結(jié)果是().A.A.12B.13C.14D.15
三、程序設(shè)計(jì)題(10題)21.使用VC++2010打開考生文件夾下析prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),它的功能是計(jì)算下列級數(shù)和,和值由函數(shù)值返回。例如,當(dāng)n=10,x=0.3時(shí),函數(shù)值為1.349859。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
22.請編寫fun()函數(shù),其功能是:計(jì)算并輸出3~m所有素?cái)?shù)的平方根之和。例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=63.665791。注意:m的值要大于2但不大于l00。部分源程序給出如下。請勿改動main()函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:
23.某學(xué)生的記錄由學(xué)號、8門課成績和平均分組成,學(xué)號和8門課的成績已在主函數(shù)中給出。請編寫proc()函數(shù),它的功能是:求出該學(xué)生的平均分并放在記錄的ave成員中。請自己定義正確的形參。例如,若學(xué)生的成績是65.5,75,88,90,90.5,66,64.5,89.5,則他的平均分應(yīng)當(dāng)是78.625。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
24.請編寫一個(gè)函數(shù)proc(),它的功能是:找出一維數(shù)組元素中最大的值和它所在的下標(biāo),最大值和它所在的下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中arr是數(shù)組名,n是arr中的數(shù)據(jù)個(gè)數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
25.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按列的順序依次存放到一維數(shù)組中,將一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲單元中。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>voidfun(int(*s)[10],int*b,int*n,intmm,intnn){}main(){intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;inta[100]={0},n=0;printf(“Thematrix:\n”);for(i=0;i<3;i++){for(j=0;j<4;j++)printf(“%3d”,w[i][j]);printf(“\n”);}fun(w,a,&n,3,4);printf(“TheAarray:\n”);for(i=0;i<n;i++)<p=""></n;i++)<>printf(“%3d”,a[i]);}
26.編寫函數(shù)fun(),其功能是:根據(jù)以下公式求的值(要求精度0.0005,即某項(xiàng)小于0.0005時(shí)停止迭代)。程序運(yùn)行后,若輸入精度0.0005,則程序應(yīng)輸出為3.14…。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:
27.M名學(xué)生的成績已在主函數(shù)中放人一個(gè)帶頭結(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭結(jié)點(diǎn)。請編寫函數(shù)proc(),它的功能是:找出學(xué)生的最高分,由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
28.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將形參s所指字符串放入形參a所指的字符數(shù)組中,使a中存放同樣的字符串。說明:不得使用系統(tǒng)提供的字符串函數(shù)。注意:部分源程序存放在文件prog1.c中,請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()指定的部位填入所編寫的若干語句。試題程序:
29.規(guī)定輸入的字符串中只包含字母和奉號。編寫函數(shù)fun,其功能是:刪除字符串中所有的。號。編寫函數(shù)時(shí),不得使用c語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)缸的花括號中填入你編寫的若干語句。試題程序:
30.編寫函數(shù)fun,其功能是:求ss所指字符串中指定字符的個(gè)數(shù),并返回此值。例如,若輸入字符串123412132,輸入字符為1,則輸出3。
注意:部分源程序在文件PROCl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填人你編寫的若干語句。
四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是:按順序給s所指數(shù)組中的元素賦予從2開始的偶數(shù),然后再按順序?qū)γ?個(gè)元素求一個(gè)平均值,并將這些值依次存放在w所指的數(shù)組中。若s所指數(shù)組中元素的個(gè)數(shù)不是5的倍數(shù),多余部分忽略不計(jì)。例如,s所指數(shù)組有14個(gè)元素,則只對前10個(gè)元素進(jìn)行處理,不對最后的4個(gè)元素求平均值。
請改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(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");
}
32.給定程序MODll.C中函數(shù)fun的功能是:統(tǒng)計(jì)字符串中各元音字母(即:A、E、I、O、U)的個(gè)數(shù)。注意:字母不分大、小寫。
例如:若輸入:THIsisaboot,則輸出應(yīng)該是:1、0、2、2、0。
請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
33.下列給定程序中,函數(shù)fun()的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)之和。
2/1,3/2,5/3,8/5,13/8,21/13,……
和值通過函數(shù)值返回main()函數(shù)。例如,若輸入n=5,則應(yīng)輸出8.391667。
請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
/*************found**************/
fun(intn)
{inta=2,b=l,c,k;
doubles=0.0;
for(k=l;k<=n;k++)
{s=s+l.0*a/b;
/*************found**************/
c=a;a+=b;b+=c;
}
return(s);
}
main()
{intn=5;
clrscr();
printf("\nThevalueoffunctionis:
%1f\n",fun(n));
}
34.下列給定的程序中,函數(shù)hn()的功能是:為一個(gè)偶數(shù)尋找兩個(gè)素?cái)?shù),這兩個(gè)素?cái)?shù)之和等于該偶數(shù),并將這兩個(gè)素?cái)?shù)通過形參指針傳回主函數(shù)。
請改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<math.h>
voidfun(inta,int*b,int*c)
{inti,j,d,y;
for(i=3;i<=a/2;i=i+2)
/*************found**************/
{y=0;
for(j=2;j<=sqrt((double)i);j++)
if(i%j==0)y=0;
if(y==1)
/*************found**************/
{d=i-a;
for(j-2;j<=sqrt((double)d);
j++)
if(d%j==0)y=0;
if(y=-1)
{*b=i;*c=d;}
}
}
}
main()
{inta,b,c;
do
{printf("\nInputa:");
scanf("%d",&a);}
while(a%2);
fun(a,&b,&c);
printf("\n\n%d=%d+%d\n",a,b,c);
}
35.下列給定程序中,函數(shù)fun()的功能是:計(jì)算整數(shù)n的階乘。
請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動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));
}
36.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。
請?jiān)跈M線上填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序;
main()
{
charb[17]={"0123456789ABCDEF"};
intc[64],d,i=0,base=16;
longn;
printf("Enteranumber:\n");
scanf("%ld",&n);
do{
/*****************found****************/
c[i]=______;i++;n=n/base;}
while(n!=0);
printf("Transmitenewbase:\n");
for(--i;i>=0;--i)
/***************found*******************/
{d=c[i];printf("%c",b______);}
printf("\n");
}
37.已知一個(gè)數(shù)列從第0項(xiàng)開始的前三項(xiàng)分別為0,0,1,以后的各項(xiàng)都是其相鄰的前三項(xiàng)之和。給定程序MODll.C中函數(shù)fun的功能是:計(jì)算并輸出該數(shù)列前n項(xiàng)的平方根之和。n的值通過形參傳入。
例如,當(dāng)n=10時(shí),程序的輸出結(jié)果應(yīng)為:23.197745。
請改正程序中的錯(cuò)誤,使程序能輸出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
38.給定程序MODll.C中函數(shù)fun的功能是:將字符串中的字符按逆序輸出,但不改變字符串中的內(nèi)容。
例如,若字符串為abcd,則應(yīng)輸出:dcba。
請改正程序中的錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
39.下列給定程序中,函數(shù)fun()的功能是:從字符串s中,刪除所有小寫字母'c'。
請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<stdio.h>
voidfun(char*s)
{inti,j;
for(i=j=0;s[i]!='\0';i++)
if(sill!='c')
/********************************/
s[j]=s[i];
/**************found*************/
s[i]='\0';
}
main()
{chars[80];
printf("\nEnterastring:");
gets(s);
printf("Theoriginalstring:")
puts(s);
fun(s);
printf("Thestringafterdeleted:");
puts(s);printf("\n\n"):
}
40.給定程序MODII.C中函數(shù)fun的功能是:把主函數(shù)中輸入的3個(gè)數(shù),最大的放在a中,最小的放在c中,中間的放在b中。
例如,輸入的數(shù)為:551234,輸出結(jié)果應(yīng)當(dāng)是:a=55.0,b=34.0,c=12.0。
請改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
五、程序改錯(cuò)題(2題)41.由N個(gè)有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,下列給定程序函數(shù)fun()的功能是:利用折半查找法查找整數(shù)m在數(shù)組中的位置。若找到,返回其下標(biāo)值;否則,返回-1。折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍low和high(10w%high)。然后用m與中間位置(mid)上元素的值進(jìn)行比較。如果m的值大于中間位置元素的值,則下一次的查找范圍落在中間位置之后的元素中;反之,下一次的查找范圍落在中間位置之前的元素中,直到low>;high,查找結(jié)束。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
42.下列給定程序中,函數(shù)proc()的功能是:從字符串str中,刪除所有大寫字母'F'。
請修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、操作題(2題)43.若有以下程序:
main()
{int,p,a=5;
if(P=a!=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
}
執(zhí)行后輸出結(jié)果是【】。
44.以下程序的功能是輸出如下形式的方陣:
13141516
9101112
5678
1234
請?zhí)羁铡?/p>
main()
{inti,j,x;
for(j=4;j>0;j--)
{for(i=1;i<=4;i++)
{x=(j-1)*4+【】;
printf("%4d",x);
}
printf("\n");
}
}
參考答案
1.p=a+4或p=&a[4]。p=a+4或p=&a[4]。解析:可以直接將數(shù)組元素a[4]的地址(即&a[4])賦給指針變量p,也可以用數(shù)組名加偏移量的形式(即a+4)表示數(shù)組元素a[4]的地址,并賦給指針變量p。
2.模式/內(nèi)模式映像模式/內(nèi)模式映像解析:映像即一種對應(yīng)規(guī)則,指出映像雙方如何進(jìn)行轉(zhuǎn)換。數(shù)據(jù)庫系統(tǒng)在三級模式之間提供了兩層映像,這兩層映像是外模式/模式映像與模式/內(nèi)模式映像。
3.132132解析:本題考核的知識點(diǎn)是for循環(huán)與switch語句的綜合運(yùn)用。主函數(shù)中用了一個(gè)for循環(huán),for循環(huán)里嵌套了一個(gè)switch語句,for循環(huán)了三次,當(dāng)i=9時(shí),i/10=0,執(zhí)行switch語句中case0分支,m和n的值各加1,變?yōu)?和1,然后遇到breake語句,退出switch語句;當(dāng)i=10,i/10=1,執(zhí)行switch語句中default分支,使k和n的值各加1,變?yōu)?和1,退出switch語句:當(dāng)i=11時(shí),i/10=1,執(zhí)行switch語句中default分支,k和n的值各加1變,為2和3,退出switch語句,循環(huán)結(jié)束。故該空格處應(yīng)該填132。
4.floatfloat解析:在此表達(dá)式中x是float類型的變量,經(jīng)過開方所得到的結(jié)果仍是float類型,再和2.8進(jìn)行運(yùn)算時(shí),應(yīng)該先將2.8轉(zhuǎn)換成float類型再運(yùn)算,最后結(jié)果仍是float型。
5.a=2b=1a=2,b=1解析:本題考查了switch結(jié)構(gòu)的內(nèi)容。C語言中,程序執(zhí)行完一個(gè)case標(biāo)號的內(nèi)容后,如果沒有break語句,控制結(jié)構(gòu)會轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行,因?yàn)閏ase常量表達(dá)式只是起語句標(biāo)號作用,并不是在該處進(jìn)行條件判斷。本題程序在執(zhí)行完內(nèi)部switch結(jié)構(gòu)后,繼續(xù)執(zhí)行了外部switch結(jié)構(gòu)的case2:分支,最后a和b的值分別為2和1。
6.調(diào)試調(diào)試
7.10
8.21
9.282,8解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達(dá)式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán)。這里程序初始時(shí)a=1,b=10,經(jīng)過操作b-=a;a++后b=9,a=2,判斷條件b--<O不成立,退出循環(huán),但b的值被減1,因此結(jié)果為:a=2,b=8。
10.9292解析:主函數(shù)中首先定義了一個(gè)4行4列的二維數(shù)組,然后執(zhí)行一個(gè)while循環(huán),該循環(huán)中又嵌套了一個(gè)do-while循環(huán)?,F(xiàn)看while循環(huán),該循環(huán)通過i++的值來判斷是否結(jié)束循環(huán)當(dāng)i++的值為4的時(shí)候結(jié)束循環(huán),當(dāng)i=0時(shí),執(zhí)行while的循環(huán)體,顯然if語句條件不滿足不執(zhí)行,接著讓i=0,然后執(zhí)行do-while循環(huán)體,我們不難看出do-whilo循環(huán)的功能是將第i+1行的所有元素加起來,所以這時(shí)s的值為s=a[1][0]+a[1][1]+a[1][2]+a[1][3)=26,當(dāng)i=1時(shí),i+1=2,uf后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán);當(dāng)i=2時(shí),i加1變?yōu)?,把第3+1行的所有元素的加到s上,此時(shí)s=s+a[2][0]+a[2][1]+a[2][2]+a[2][3]=92,當(dāng)i=3時(shí),3+1=4,if后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán),當(dāng)i=3時(shí),if后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán)當(dāng)i=4時(shí)while循環(huán)結(jié)束,所以最后輸出的s的值為92。
11.B
12.B
13.B
14.C
15.A由題意可知:指針變量p指向變量a,p的值是a的地址;指針變量q指向變量p,q的值是P的地址。q是指針變量,q指向p,*q是變量P,選項(xiàng)A錯(cuò)誤;p是指針變量,p指向變量a,選項(xiàng)B正確;由于q指向P,因此*q指向a,選項(xiàng)C正確;*p和**q都代表變量a,選項(xiàng)D正確。故本題答案為A選項(xiàng)。
16.Bcase常量表達(dá)式只是起語句標(biāo)號作用,并不進(jìn)行條件判斷。在執(zhí)行switch語句時(shí),根據(jù)switch的表達(dá)式,找到與之匹配的case語句,就從此case子句執(zhí)行下去,不再進(jìn)行判斷,直到碰到break或函數(shù)結(jié)束為止。所以執(zhí)行內(nèi)層“switch(y)”時(shí)只執(zhí)行了“a++;”,此時(shí)a的值為1,然后執(zhí)行外層case2語句的“a++;b++;”,a值為2,b值為1。故本題答案為B選項(xiàng)。
17.B
18.Dfread函數(shù)用來讀二進(jìn)制文件,其中buffer是數(shù)據(jù)塊的指針,它是內(nèi)存塊的首地址,輸入的數(shù)據(jù)存入此內(nèi)存中;size表示每個(gè)數(shù)據(jù)塊的字節(jié)數(shù);count用來指定每讀一次讀入的數(shù)據(jù)塊個(gè)數(shù);fp是文件指針,指向要讀的文件。選項(xiàng)A、B、C錯(cuò)誤。本題答案為D選項(xiàng)。
19.D
20.D21.1doublefun(doublex,intn)2{3inti;4doubles=1.0,sl=1.0;5for(i=1/i<=n;i++)6{si=si*i;/*各項(xiàng)中的階乘*/?s=s+pow(x,i)/si;/*按公式求出*/}Returns;10}程序定義了變量Sl和s,sl表示每項(xiàng)的分母(即各項(xiàng)的階乘),S存放累加和。循環(huán)語句控制累加的次數(shù),在循環(huán)體中進(jìn)行階乘和累加操作,將累加的結(jié)果存入S中。此處使用了求乘方函數(shù)pow(X,i),其含義是求X的i次方的值。
22.
【解析】首先判斷循環(huán)中n是否為素?cái)?shù),如果不是素?cái)?shù),求其平方根的累加和,并返回計(jì)算結(jié)果,否則跳出判斷循環(huán)。其中,對于平方根的求解可以使用C語句中的sqrt()函數(shù)。
23.
【解析】要求該學(xué)生的平均成績,首先要求出其各科成績之和,然后求出其平均成績并放在成員變量ave中。
24.
【解析】要得到數(shù)組中元素的最大值,需要比較數(shù)組中的每一個(gè)元素。首先將最大值賦值為數(shù)組中的第一個(gè)元素,再將其與數(shù)組中的其他元素相比較,將值最大的元素賦給變量max,并將其下標(biāo)賦值給變量d。
25.voidfun(int(*s)[10],int*b,int*n,intmm,intnn){inti,j;for(j=0;j<nn;j++)/*將二維數(shù)組中的數(shù)據(jù)按列的順序依次存入一維數(shù)組中*/for(i=0;i<=""p="">{b[*n]=*(*(s+i)+j);*n=*n+1;/*通過指針返回元素個(gè)數(shù)*/}}題目要求實(shí)現(xiàn)將二維數(shù)組元素存入一維數(shù)組。使用for循環(huán)語句來控制二維數(shù)組元素的下標(biāo),同時(shí)使用指針變量配合操作。可以用兩個(gè)循環(huán)來處理問題,由于是按列的順序取出,因此第1個(gè)循環(huán)用于控制列下標(biāo),第2個(gè)循環(huán)用于控制行下標(biāo)。
26.
【解析】此題考查的是用迭代法求多項(xiàng)式的值。通過觀察題目中給出的數(shù)學(xué)公式可知,后面一項(xiàng)是前面一項(xiàng)乘以n/(2*n+1),發(fā)現(xiàn)這個(gè)規(guī)律后,問題迎刃而解。通過定義double類型變量,并且賦初值,用來存放多項(xiàng)式的總和。此題中需要注意的是,表示每一項(xiàng)的s1和表示多項(xiàng)式之和的s,兩者的初值都是1.0。
27.
【解析】要找出學(xué)生的最高分,就要比較所有學(xué)生的成績。定義一個(gè)變量max用來存放學(xué)生的最高分,初始化為第一個(gè)學(xué)生的成績,依次與其后的學(xué)生成績相比較,最后將得到的最高分返回主函數(shù)。
28.1voidfun(char*a,char*s)2{while(*s!:'。1)3{*a=*s;4a++;5s++;}7*a='\\0';}要將指針變量s所指的字符串存入指針變量a所指的字符串中,程序要求不能使用系統(tǒng)提供的字符串函數(shù)。本題可以使用循環(huán)語句,依次取出a所指字符串中的元素,將其存入s所指的字符串中,最后為s所指的字符串添加字符串結(jié)束標(biāo)志'\\0'。
29.30.
intfun(char*ss,charc)
inti=0;
for(;*ss!=’\0‘;ss++)if(}ss==c
i++/*求出*所指字符串中指定字符的個(gè)數(shù)*/
returni;
【考點(diǎn)分析】
本題考查:for循環(huán)語句遍歷字符串,并通過if條件語句,判斷字符串是否結(jié)束。
【解題思路】
從字符串中查找指定字符,需要使用循環(huán)判斷結(jié)構(gòu),循環(huán)語句用來遍歷字符串,循環(huán)條件為字符串沒有結(jié)束,即當(dāng)前字符不是‘\0’,判斷語句用來判斷當(dāng)前字符是否為指定字符。最后返回指定字符的個(gè)數(shù)。
31.錯(cuò)誤:if(i+1%5==0)正確:if((i+1)%5==0)錯(cuò)誤:if(i+1%5==0)正確:if((i+1)%5==0)解析:本題除了考查循環(huán)語句以外,其實(shí)就是一道簡單的數(shù)學(xué)題,循環(huán)條件if(i+1%5==0)是一個(gè)標(biāo)準(zhǔn)的語法錯(cuò)誤,這跟題目考查的知識點(diǎn)毫無關(guān)系,也就是說,做這樣的題,只要讀懂了題干意思,問題便可迎刃而解。
32.(1)num[k]=0;(2)switch(*s)(1)num[k]=0;(2)switch(*s)解析:本題中函數(shù)的功能是統(tǒng)計(jì)字符串中各元音字母(即A、E、I、O、U)的個(gè)數(shù)。其中,本題在while循環(huán)中采用switch-case條件判斷字符串中的每一個(gè)字符并進(jìn)行統(tǒng)計(jì)。
33.(1)錯(cuò)誤:fun(intn)正確:doublefun(intn)(2)錯(cuò)誤:c=a;a+=b;;b+=c;正確:c=a;a+=b;b=c;(1)錯(cuò)誤:fun(intn)正確:doublefun(intn)\r\n(2)錯(cuò)誤:c=a;a+=b;;b+=c;正確:c=a;a+=b;b=c;解析:該題題干是著名的斐波拉契分?jǐn)?shù)序列,所以循環(huán)條件應(yīng)該是c=a;a+=b;b=c。
34.(1)錯(cuò)誤:y=0;正確:y=1:(2)錯(cuò)誤:d=i-a;正確:d=a-i;(1)錯(cuò)誤:y=0;正確:y=1:\r\n(2)錯(cuò)誤:d=i-a;正確:d=a-i;解析:這道題是歷年的考題經(jīng)典。也就是驗(yàn)證哥德巴赫猜想之變體,原來的思路是(任意一個(gè)大于等于6的偶數(shù)都可以分解為兩個(gè)素?cái)?shù)之和)n為大于等于6的任一偶數(shù),可分解為n1和n2兩個(gè)數(shù),分別檢查n1和n2是否為素?cái)?shù),如都是,則為一組解。如n1不是素?cái)?shù),就不必再檢查n2是否素?cái)?shù)。先從n1=3開始,檢驗(yàn)n1和n2(n2=N-n1)是否素?cái)?shù)。然后使n1+2再檢驗(yàn)n1,n2是否素?cái)?shù),…直到n1=n/2為止。該題思路是與“經(jīng)典猜想”是相同的。
35.(1)錯(cuò)誤:result*=--n;正確:result*=n--;(2)錯(cuò)誤:return;正確:returnresult;(1)錯(cuò)誤:result*=--n;正確:result*=n--;\r\n(2)錯(cuò)誤:return;正確:returnresult;解析:該題采用循環(huán)語句計(jì)算n的階乘。當(dāng)n大于1且小于170時(shí),
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 演講稿朗誦小學(xué)生(格式8篇)
- 新入職員工安全培訓(xùn)試題附答案【典型題】
- 公司管理人員安全培訓(xùn)試題及答案真題匯編
- 各個(gè)班組安全培訓(xùn)試題參考答案
- 公司主要負(fù)責(zé)人安全培訓(xùn)試題答案滿分必刷
- 有機(jī)枸杞原漿(征求意見稿)
- 2024-2030年中國硬脂酸辛酯行業(yè)現(xiàn)狀動態(tài)與產(chǎn)銷規(guī)模預(yù)測報(bào)告
- 2024-2030年中國硅鋼市場需求產(chǎn)能分析與前景供需形勢研究研究報(bào)告
- 2024-2030年中國硅藻泥行業(yè)運(yùn)行狀況與投資盈利預(yù)測報(bào)告
- 2024-2030年中國石油苯行業(yè)發(fā)展趨勢及投資策略研究研究報(bào)告
- 256個(gè)現(xiàn)代常用獨(dú)體字
- GB/T 17657-2022人造板及飾面人造板理化性能試驗(yàn)方法
- 設(shè)計(jì)院競聘演講稿例
- 電商天貓運(yùn)營績效考核表
- GB/T 5959.1-2019電熱和電磁處理裝置的安全第1部分:通用要求
- 中石化“11-22”泄漏爆炸事故案例(深圳)
- GB/T 32095.3-2015家用食品金屬烹飪器具不粘表面性能及測試規(guī)范第3部分:耐腐蝕性測試規(guī)范
- GB/T 2440-2017尿素
- 病情觀察和危重病人的搶救(試題及答案)
- 《土地資源學(xué)》PPT版課件 第一章緒論第二章土地特征
- 離心泵的特性曲線與應(yīng)用課件
評論
0/150
提交評論