完整word版湖南省历界对口高考C语言真题答案word文档良心出品.docx
《完整word版湖南省历界对口高考C语言真题答案word文档良心出品.docx》由会员分享,可在线阅读,更多相关《完整word版湖南省历界对口高考C语言真题答案word文档良心出品.docx(47页珍藏版)》请在冰豆网上搜索。
![完整word版湖南省历界对口高考C语言真题答案word文档良心出品.docx](https://file1.bdocx.com/fileroot1/2022-10/27/c76efd2d-f773-453c-89dd-0dd46956ae8e/c76efd2d-f773-453c-89dd-0dd46956ae8e1.gif)
完整word版湖南省历界对口高考C语言真题答案word文档良心出品
历界高考C语言真题
2007年真题
一、程序分析题
1、#include
#*
eef
24
1-2
main()
{intx=3;
do
printf(“%d”,x-=2);
while(!
(--x));
}
2、#include
main()
{intx=4,y=8,z;
z=x<<2|y;
printf(“%d”,z);
}
3、#include
main()
{charx=’E’,y=’e’;
printf(“%c”,x+32);
printf(“%c”,(x--,y++));
printf(“%c\n”,x==y?
x+=32:
(y-=32));
}
4、#include
main()
{intt=2;
while(t<5)
switch(t%2)
{case0:
t++;printf(“#”);break;
case1:
t+=2;printf(“*”);
default:
printf(“\n”);
}
}
5、#include
main()
{charstr1[50]=”Beijing2008”,*q=str1;
charstr2[50]=”OneworldOneDream!
”,*p=str2;
while(*p!
=’\0’)p++;
OneworldOneDream!
Beijing2008
while(*q!
=’\0’)*p++=*q++;
*p=’\0’;
printf(“%s”,str2);
}
6#include
#include
main()
gfedcba
{chars[]=”abcdefg”,t;
inti=0,j=strlen(s)-1;
while(i{t=s[i],s[i]=s[j],a[j]=t;i++,j--;}
puts(s);
}
二、程序填空题
1、下面程序的功能是求1000以内的完数。
完数是指一个数的子因子之和等于这个数本身。
#include
main()
{inti,j,sum;
for(i=1;i<1000;i++)
{sum=0;
for(j=1;j
if(i%j==0)
sum+=j;
if(sum==i)printf(“%d\n”,i);
}
}
2、以下程序是统计一维数组arr中小于平均值的元素个数。
#include
#defineN7
intfun(ints[],floataver)
{inti,count=0;
for(i=0;iif(s[i]count++;
returncount;
}
main()
{inti,arr[N]={87,34,5,78,90,66,88};
floataver=0;
for(i=0;iaver+=arr[i];
aver=aver/N;
printf(“统计结果为:
%d”,fun(arr,aver);
}
三、程序改错题,不得增行或删行。
1、下面的程序是求,在函数fun()中存在两处错误,请标记并改正。
#include
longfun(intx)
{intm,n,t;
longsum;longsum=1;
for(m=1;m<=x;m++)
{t=1;
for(n=1;n<=m;n++)
t=m*n;t*=n;
sum+=t;
}
returnsum;
}
main()
{intnum;
scanf(“%d”,&num);
printf(“sum=%ld\n”,fun(num));
}
2、以下程序的功能是:
从字符串str中,删除所有字母c,不区分大小写。
如输入字符串”abcCdefcfCg”,删除后的字符串为”abdefg”。
程序有两错误,请标记并改正。
#include
main()
{charstr[81];
inti=0,j=0;
gets(str);
while(str[i]!
=’\0’)
{if(str[i]!
=’c’||str[i]!
=’C’){if(str[i]!
=’c’&&str[i]!
=’C’)
str[j]=str[i];str[j++]=str[i];
i++;
}
str[j]=’\0’;
printf(“%s”,str);
}
3、以下程序从一个二进制文件中读出结构体数据,并将结构体数据输出在屏幕上。
程序中有三处错误,请标记并改正。
#include
structstudent
{charname[10];
floatscore;
}stu;
main()
{file*f;{FILE*f;
if((f=fopen(“a.dat”,”r”))==NULL)
{printf(“cannotopenoutfile\n”);
exit(0);
}
while(feof(f))while(!
feof(f))
{fread(stu,sizeof(structstudent),1,f);{fread(&stu,sizeof(structstudent),1,f);
printf(“%s,%.2f\n”,stu.name,stu.score);
}
fclose(f);
}
四、程序设计题
1、已知一个数列从1项开始的前6项为:
0,0,1,1,2,4,以后的各项都是其相邻的前3项之和,计算并输出该数列前20项之和。
2、写一函数sort(intx[],intn)实现选择法排序(从小到大)。
2008年真题
一、程序分析题
1、#include
2122
9.1
8,10
main()
{chara=55;
a=~a&055;
printf(“%x,%o”,a,a);
}
2、#include
#definetest(x,y)x+y
main()
{floatc;
c=2*test(3.2,5.4)/2;
printf(“6.1f”,c);
}
3、#include
voidfun()
{intx=1;
staticinty=1;
printf(“%d%d”,++x,y++);
}
main()
{inti;
for(i=0;i<2;i++)
fun();
}
4、#include
main()
340
3
{inta=12,b=0,n=0;
do
{b+=2;a-=2+b;
n++;
}while(a>=0);
printf(“%d”,n);
}
5、#include
main()
{intn=132,i=1,j,k,b[10];
while(n!
=0)
{j=n%6;b[i]=j;
n=n/6;i++;
}
for(k=i-1;k>0;k--)
printf(“%d”,b[k]);
}
二、程序填空题
1、任意输入平面一点坐标(x,y),求该点到原点(0,0)的距离。
#include
#include
#include
typedefstructNODE
{floatx;
floaty;
}NODE;
main()
{NODE*p;
p=(NODE*)malloc(sizeof(NODE));
scanf(“%f,%f”,&p->x,&p->y);
printf(“%5.1f”,sqrt(p->x*p->x+p->y*p->y));
free(p);
}
2、下列给定程序中,函数fun()的功能是:
从N个字符串中找出最长的那个串,并将其地址作为函数值返回。
#include
#include
#defineN4
#defineM50
char*fun(char(*q)[M])
{inti;char*p;
p=*q;
for(i=0;iif(strlen(p)p=*(q+i);
returnp;
}
main()
{charstr[N][M]={“pingpong”,”basketball”,fieldhockey”,”softball”};
char*longest;inti;
longest=fun(str);
printf(“Thelongeststring:
\n”);
puts(longest);
}
3、下列程序定义了3×3的二维数组,并在主函数中自动赋值;函数fun的功能是使二维数组的上三角元素的值全部置0。
调用函数前调用函数后
123100
246240
369369
#include
voidfun(intn,inta[][3]);
main()
{inta[3][3],i,j;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
a[i-1][j-1]=i*j;
fun(3,a);
printf(“theresult:
\n”);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf(“%4d”,a[i][j]);
printf(“\n”);
}
}
voidfun(intn,inta[3][3])
{inti,j;
for(i=0;ifor(j=i+1;ja[i][j]=0;
}
三、程序改错题,不得增行或删行。
1、下列程序的功能是求分数序列:
的前8项之和。
程序中有2处错误,请标记并改正。
#include
main()
{inti,flag=1;
floata=144,b=89,s=0,t;
for(i=1;i<=8;i++)
{s+=a/b;{s+=flag*b/(a-b);
flag=-flag;
t=b;a=a-b;a=t;t=b;b=a-b;a=t;
}
printf(“%5.1f”,s);
}
2、下列程序的功能是采用简单插入的排序方法,随机产生10个整数,按从小到大的顺序排列。
程序中有2处错误,请标记并改正。
#include
#include
main()
{inti,