湖南省对口高考C语言试题含答案.docx
《湖南省对口高考C语言试题含答案.docx》由会员分享,可在线阅读,更多相关《湖南省对口高考C语言试题含答案.docx(11页珍藏版)》请在冰点文库上搜索。
湖南省对口高考C语言试题含答案
2018年湖南省对口高考计算机C语言试题
一、单选题(在本题的每一小题的备选答案中,只有一个答案是正确的,本大题共3小题,每小题5分,共15分)
2018年20.若“inta=12;”,执行“a/=a+8;”后,a的值是
2018年21.若“inta=5,b;”,执行“b=a>>2;”后,b的值是
2018年22.若“chara[6]="abcde";”,执行“printf("%d",strlen(a));”后,输出的结果是
三、综合应用题(每小题20分,每空5分,共20分)
2018年30.入夏标志着春夏季节完成转换,气候学上入夏的标准是必须要连续5天日平均气温达到22℃或以上,则这连续5天中的第一天为入夏日。
函数fun的功能是判断5月份是否入夏并输出有关信息,若入夏就返回是哪天,否则返回-1。
请补全下列代码。
#include<>
intfun(inta[],intn){/*a存放某月的每日气温值,n存放的是此月的天数*/
inti,c=0;
for(i=0;iif(①a[i]>=22){
c++;
if(c>=5)②returni+1-c;或者returni-4
else③continue;
}
④c=0;
}
return-1;
}
intmain()
{
intt[31]={20,21,22,22,19,18,18,19,22,23,
22,21,20,21,24,22,25,24,23,
21,23,22,21,22,25,26,30,28,27,28}
intd;
d=fun(t,31);
if(d==-1)
printf(“Notinsummer\n”)
else
printf(“5-%dinsummer\n”,d+1);
return0;
}
四、程序分析题(本大题共3小题,共75分)
2018年32.阅读程序,写出运行结果(每空5分,共25分)
(1)下列程序的运行结果是①gcd=7
#include<>
intmain(){
inta=14,b=35,c;
if(a
{c=a;a=b;b=c;}
c=a%b;
while(c!
=0)
{a=b;b=c;c=a%b;}
printf("gcd=%d\n",b);
return0;
}
(2)下列方程的运行结果是②
#include<>
intmain()
{
inta[20],i,m=10,k=8;
for(i=0;m>0;i++)
{
a[i]=m%k;
}
for(i--;i>=0;i--)
printf("%d\n",a[i]);
return0;
}
(3)下列程序的运行结果是③result=2018
#include<>
intmain(){
charstr[50]="welcome2018";
inti,n=0;
for(i=0;str[i]!
='\0';i++)
if('0'<=str[i]&&str[i]<='9')
n=n*10+str[i]-'0';
printf("result=%d\n",n);
return0;
}
(4)下列程序的运行结果是④120
#include<>
intf(n)
{if(n==1||n==0)
return1;
return(n*f(n-1));
i=45678
t=w[8]=98765
j=n-2=7
j--6
j--5
j--4
j--3
j--2
j--1
j--0
w[j+1]=w]j]
w[8]=w[7]=87654
w[7]=w[6]=76543
w[6]=w[5]=65432
w[5]=w[4]=54321
w[4]=w[3]=43219
w[3]=w[2]=32198
w[2]=w[1]=21987
w[1]=w[0]=19876
w[0]=t=98765
}
intmain(){
printf("%d",f(5));
return0;
}
(5)下列程序的运行结果是⑤567891234
#include<>
voidfun(int*w,intm,intn){
inti,j,t;
for(i=m;i{
t=w[n-1];
for(j=n-2;j>=0;j--)
w[j+1]=w[j];
w[0]=t;
}
}
intmain(){
inti,a[9]={1,2,3,4,5,6,7,8,9};
fun(a,4,9);
for(i=0;i<9;i++)
printf("%4d",a[i]);
return0;
}
2018年33.程序填空,按照题目要求,将正内容填入各题卡相应位置,使程序完整。
(每空5分,共25分)
(1)下列程序的功能是把文件A的内容追加到文件B中。
例如文件A为“I’mten”,文件B为“I’mastudent”,追加之后,文件B的内容为“I’mastudent!
I’mten”。
#include<>
Intmain(){
①FILE*fp1,*fp2;
charch;
if((fp1=fopen(“”,”r”)!
=NULL){
if((fp2=fopen(“B.txt”,”a”))!
=NULL){
while((ch=fgetc(fp1))!
=EOF)
②fputc(ch,fp2);
fclose(fp2);
}
else{
printf(“fileBcannotbeopened\n”)
③fclose(fp1);
exit(0)
}
}
else{
printf(“fileAcannotbeopened\n”)
exit(0);
}
return0;
}
(2)下列程序中函数f的功能是用选择排序法对一个数组中数据按升序进行排序,
Voidf(inta[],intN){/*a为待排序数组N为数据元素个数*/
inti,j,p,t;
for(i=0;ip=i;
for(④j=i+1;jif(a[p]>a[j])
⑤p=j;
if(p!
=i){
t=a[i];a[i]=a[p];a[p]=t
}
}
}
2018年34.阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。
请在答题卡中指出错误代码所在的行号,并给出该行修改后的程序代码。
(每空5分,共25分)
(1)下列程序中,函数fun的功能是;根据形参m,计算如下公式的值。
y=1+1/(2×2)+1/(3×3)+1/(4×4)+⋯+1/(m×m)。
以下程序只允许修改三行
L1#include<>
L2voidfun(intcn)L2改为:
doublefun(intm)
L3{
L4doubley=
L5inti;
L6for(i=2;ifor(i=2;i<=m,i++)
L7y+=I/(I+I);L7改为:
y+=(i*i);
L8return(y);
L9}
L10intmain()
L11{
L12intn=5;
L13printf(“\nTheresultis%1f\n”,fun(n));
L14return0;
(2)下列程序的功能是用折半查找法来查找一个输入的数是否在一个已经排好序的数组中,如果存在就返回所在位置的下标,如果不存在就返回“Notfound”
以下程序只允许修改两行。
L1#include<>
L2#defineN5
L3intfun(inta[],intm)
L4{
L5intlow=0,high=N-1,mid;
L6while(low<=hight){
L7mid=high-low;L7改为:
mid=(high-low)/2;
L8if(mL9high=mid-1;
L10elseif(m>a[mid])
L11low=mid+1;
L12else
L13mid=m;L13改为:
returnmid;
L14}
L15return(-1);
L16}
L17intmain()
L18{
L19inti,a[N]={7,9,13,24,67},k,m;
L20scanf(“%d”,&m);
L21k=fun(a,m);
L22if(k>=0)
L23printf(“m=%d,index=%d\n”,m,k);
L24else
L25printf(“Notbefound!
\n”);
L26return0;
L27}
五、程序设计题(本大题25分,每空5分)
2018年35.下列程序的主函数中,通过函数调用把N名学生的成绩放入一个带头节点的链表中,h指向链表的头节点。
函数fun的功能是:
找出N名学生中的最高分并返回,请补充程序。
#include<>
#defineN8
structslist{
ints;
①structslist*next;
};
typedefstructslistSTREC;
intfun(STREC*h){
intmax=h->s;
while(②h!
=NULL){
if(maxs)max=h->s;
③h=;
}
printf(“%d”,max);
returnmax;
}
STREC*creat(int*s){
STREC*h,*p,*q;/*h表示链表的头部*/
inti=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->s=0;
while(iq=(STREC*)malloc(sizeof(STREC));
p->s=s[i++];
p->next=q;
④p=q;
}
p->next=NULL;
returnh;
}
intmain(){
ints[N]={85,76,69,85,91,72,64,87},max;
STREC*head;
⑤head=creat(s);
max=fun(head);
printf(“max=%d\n”,max);
return0;
}