湖南省历界对口高考C语言真题答案讲课教案.docx

上传人:b****4 文档编号:4084812 上传时间:2022-11-27 格式:DOCX 页数:47 大小:43.99KB
下载 相关 举报
湖南省历界对口高考C语言真题答案讲课教案.docx_第1页
第1页 / 共47页
湖南省历界对口高考C语言真题答案讲课教案.docx_第2页
第2页 / 共47页
湖南省历界对口高考C语言真题答案讲课教案.docx_第3页
第3页 / 共47页
湖南省历界对口高考C语言真题答案讲课教案.docx_第4页
第4页 / 共47页
湖南省历界对口高考C语言真题答案讲课教案.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

湖南省历界对口高考C语言真题答案讲课教案.docx

《湖南省历界对口高考C语言真题答案讲课教案.docx》由会员分享,可在线阅读,更多相关《湖南省历界对口高考C语言真题答案讲课教案.docx(47页珍藏版)》请在冰豆网上搜索。

湖南省历界对口高考C语言真题答案讲课教案.docx

湖南省历界对口高考C语言真题答案讲课教案

历界高考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;i

if(s[i]

count++;

returncount;

}

main()

{inti,arr[N]={87,34,5,78,90,66,88};

floataver=0;

for(i=0;i

aver+=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;i

if(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;i

for(j=i+1;j

a[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,j,a[11];

for(i=1;i<11;i++)

a[i]=rand();

for(i=2;i<11;i++)

{a[0]=a[i];

for(j=i-1;j>=1;j--)

if(a[0]

a[j-1]=a[j];a[j+1]=a[j];

elsecontinue;elsebreak;

a[j+1]=a[0];}

for(i=1;i<11;i++)

printf(“%d”,a[i]);

}

四、程序设计题

1、有一辆在高速公路上行驶的汽车,司机在某一时刻看到里程表显示的数值为95859公里(95859为回文数,回文数是指正读反读均一样的数),7小时后,里程表上又出现了一个回文数。

编程求出此回文数和汽车时速?

(注:

高速公路限速60公里以上,汽车的里程表为5位数)

2、弦数是指平方值等于某两个正整数平方之和的正整数,如:

32+42=52,因此5为弦数。

编程输出10到100之内的所有弦数及弦数的数量。

2009年真题

一、程序分析题

1、#include

48

pho

5,125

D,-69

14

main()

{structstu

{charname[10];

intage,sex;

};

printf(“%d”,sizeof(structstu));

}

2、#include

main()

{intx=68;

printf(“%c,%d\n”,x,~x);

}

3、#include

#include

main()

{doublex=5.14;

inta=(int)floor(x);

intb=(int)pow(floor(x),3);

printf(“%d,%d”,a,b);

}

4、#include

main()

{char**p,*t[]={“compute”,”phone”,”mp3”};

for(p=t+2;p>=t;p--)

printf(“%c”,*(*p+1))

}

5、#include

f(intarr[])

{inti=0;

for(;arr[i]<=10;i+=2)

printf(“%d”,arr[i]);

}

main()

{intarr[]={2,4,6,8,10,12};

f(arr+1);

}

二、程序填空题

1、以下程序的功能是:

从3个红球队、6个白球、5个蓝球中任意取出8个球,且其上至少有一个白球,输出所有可能的方案。

#include

main()

{inti,j,k;

printf(“\nRedWhiteBlue\n”);

for(i=0;i<=3;i++)

for(j=1;j<=6;j++)

{k=8-i-j;

if(k>=0&&k<=5)

printf(“%d%d%d\n”,i,j,k);

}

}

2、以下程序的功能是:

求100以内最大的一对孪生素数之和,孪生素数是指两个素数之差为2。

#include

#include

intisPrime(inti)

{intj,r=0,k=sqrt(i);

for(j=2;j<=k;j++)

if(i%j==0)break;

if(j>k)r=1;

returnr;

}

main()

{inti,sum=0;

for(i=100;i>=5;i--)

if(isPrime(i)&&isPrime(i-2))

{sum=i+i-2;

break;

}

printf(“%d\n”,sum);

}

3、以下程序的功能是:

输入某公司50名职员的工号、姓名和地址并存入名为”company.txt”的磁盘文件。

structEmployee

{intempid;

charempname[10];

charempadd[30];

}emp[50];

voidsave()

{FILE*fp;

inti;

if((fp=fopen(“company.txt”,”wb”))==NULL)

{printf(“cannotopenfile\n”);return;}

for(i=0;i<50;i++)

if(fwrite(emp+i,sizeof(structEmployee),1,fp)!

=1)

printf(“filewriteerror\n”);

}

main()

{inti;

for(i=0;i<50;i++)

scanf(“%d,%s,%s”,&emp[i].empid,emp[i].empname,emp[i].empadd);

save();

}

三、程序改错题,不得增行或删行。

1、以下程序的功能是:

从一个整数队列中找出值最大的数,若有多个则取最先得到的那一个。

程序有两处错误,请标出并改正。

#include

int*findmax(inta[],intn)

{inti,j,max;

for(i=1,j=0,max=a[0];i

if(a[i]>max)

{j=i;

max=a[i];

}

return*(a+j);returna+j;

}

main()

{inti,a[50];

for(i=0;i<50;i++)

scanf(“%d”,&a[i]);

printf(“%d”,findmax(a,50));printf(“%d”,*findmax(a,50));

}

2、以下程序的功能是:

输入一个字符串,将该字符串中的所有字符按ASCII码降序排序后输出。

程序有两处错误,请标出并改正。

#include

#include

voidfun(chart[])

{charc;

inti,j;

for(i=0;i

for(j=i+1;j

if(t[i]t[j])

{c=t[j];

t[j]=t[i++];t[j]=t[i];

t[i]=c;

}

}

main()

{chars[81];

gets(s);

printf(\nBeforesorting:

\n%s”,s);

fun(s);

printf(\naftersorting:

\n%s”,s);

}

四、程序设计题

1、某学校操场上有一些学生,老师起知道有多少人,便让学生排队报数:

按1到5报数,最后一名学生的报数为1,按1到6报数,最后一名学生的报数为5,按1到7报数,最后一名学生的报数为4,最后再按1到11报数,最后一名学生的报数为10。

编写程序求操场

上共有多少学生。

2、将自然数1~100按顺时围成一圈,首先取出1,然后按顺时针方向以步长30取数,直到所有的数取完为此。

编程序求最后一个取出的数?

2010年真题

一、单选题

1、下列不是C语言合法标识符的是B。

A、_124B、124abcC、sum124D、a_124

2、若有如图1所示存储结构,且变量定义为structnode{intdata;structnode*next;}*p,*q,*r;若要实现如图2所示的存储结构,可选用的赋值语句是D。

A、p=r;B、p=q->nextC、p->next=q;D、p->next=q->next;

二、程序分析题

6.00

1、#include

main()

{doublex,y;

printf(“%.2f”,(x=5,y=x+3/2));

}

2、#include

#defineCUBE(x)(x*x*x)

30

100,100

512

main()

{intn=5;

ints=CUBE(++n);

printf(“%d”,s);

}

3、#include

voidfun(inta,int*b)

{a=*b*2;

*b=a*5;

}

main()

{intx=10,*y;

y=&x;

fun(x,y);

printf(“%d,%d”,x,*y);

}

4、#include

voidfun(int*a)

{*a=*(a-1)+*(a+1);}

main()

{inti=0,s=0,arr[5]={1,3,5,7,9};

fun(arr+2);

for(;i<5;i++)

s+=arr[i];

printf(“%d”,s);

}

三、程序填空题

1、下列函数rtrim实现的是删除字符串str尾部的所有空格。

char*rtrim(char*str)

{intn=strlen(str)-1;

if(n<1)return0;

while(n>0)

{if(*(str+n)!

=’’)

{*(str+n+1)=’\0’;

break;

}

else

n--;

}

returnstr;

}

2、某超市推行会员优惠购物,其中VIP会员八八折,金牌会员九折,银牌会员九三折,普通会员九六折,非会员不打折。

以下程序实现了超市购物的结算,其中非会员、普通会员、银牌会员、金牌会员、VIP会员分别用0,1,2,3,4表示。

#include

doublecompute(intn,intgrade)

{intamount,i;

doublesum,price,discount[5]={1.0,0.96,0.93,0.9,0.88};

sum=0.0;

for(i=0;i

{scanf(“%lf%d”,&price,&amount);/*price:

商品单价,amount:

商品数量*/

sum+=price*amount;

}

returnsum*discount[grade];

}

main()

{intn,grade;/*n:

商品种数,grade:

会员等级*/

scanf(“%d%d”,&n,&grade);

printf(“%.2lf\n”,compute(n,grade));

}

3、设文件studs.dat中存放着学生的基本信息,基本信息包括学号、姓名、专业等信息。

下列程序的功能是:

输入要读取的学生人数,利用malloc动态分配内存来存储从文件中读取的学生信息,并输出读取的学生的学号,姓名,专业。

#include

#include

structstudent

{longintnum;/*学号*/

charname[20];/*姓名*/

charmajor[25];/*专业*/

};

FILE*fp;

main()

{structstudentst,*pst;

inti,n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1