湖南省历界对口高考C语言真题(答案)_第1页
湖南省历界对口高考C语言真题(答案)_第2页
湖南省历界对口高考C语言真题(答案)_第3页
湖南省历界对口高考C语言真题(答案)_第4页
湖南省历界对口高考C语言真题(答案)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、历界高考C语言真题2007年真题一、程序分析题1、#include #*eef241-2main( ) int x=3; do printf(“%d”,x-=2); while(!(-x);2、#include main( ) int x=4,y=8,z; z=x2|y; printf(“%d”,z);3、#include main( ) char x=E,y=e; printf(“%c”,x+32); printf(“%c”,(x-,y+); printf(“%cn”,x=y?x+=32:(y-=32);4、#include main( ) int t=2; while(t5) switch

2、(t%2) case 0: t+;printf(“#”);break; case 1: t+=2;printf(“*”); default:printf(“n”);5、#include main( ) char str150=”Beijing 2008”,*q=str1; char str250=”One world One Dream!”,*p=str2; while(*p!=0) p+;One world One Dream!Beijing 2008 while(*q!=0) *p+=*q+; *p=0; printf(“%s”,str2); 6 #include #includemain

3、( )gfedcba char s=”abcdefg”,t; int i=0,j=strlen(s)-1; while(ij) t=si,si=sj,aj=t;i+,j-;puts(s); 二、程序填空题1、下面程序的功能是求1000以内的完数。完数是指一个数的子因子之和等于这个数本身。 #include main( ) int i,j,sum;for(i=1; i1000 ;i+) sum=0; for(j=1;ji;j+) if(i%j=0) sum+=j; if( sum=i ) printf(“%dn”,i); 2、以下程序是统计一维数组arr中小于平均值的元素个数。 #include

4、 #define N 7 int fun(int s,float aver) int i,count=0;for(i=0;iN;i+) if( siaver ) count+;return count;main( ) int i,arrN=87,34,5,78,90,66,88; float aver=0; for(i=0;iN;i+) aver+=arri;aver=aver/N;printf(“统计结果为:%d”, fun(arr,aver );三、程序改错题,不得增行或删行。1、下面的程序是求,在函数fun()中存在两处错误,请标记并改正。 #include long fun(int x

5、) int m,n,t; long sum; long sum=1; for(m=1;m=x;m+) t=1; for(n=1;n=m;n+) t=m*n; t*=n; sum+=t; return sum; main( ) int num; scanf(“%d”,&num); printf(“sum=%ldn”,fun(num);2、以下程序的功能是:从字符串str中,删除所有字母c,不区分大小写。如输入字符串”abcCdefcfCg”,删除后的字符串为”abdefg”。程序有两错误,请标记并改正。#includemain( ) char str81; int i=0,j=0;gets(st

6、r);while(stri!=0) if(stri!=c|stri!=C) if(stri!=c&stri!=C) strj=stri; strj+=stri; i+;strj=0;printf(“%s”,str);3、以下程序从一个二进制文件中读出结构体数据,并将结构体数据输出在屏幕上。程序中有三处错误,请标记并改正。#includestruct student char name10; float score;stu;main( ) file *f; FILE *f; if(f=fopen(“a.dat”,”r”)=NULL) printf(“cannot open outfilen”);

7、 exit(0); while(feof(f) while(!feof(f) fread(stu,sizeof(struct student),1,f); fread(&stu,sizeof(struct student),1,f); printf(“%s,%.2fn”,,stu.score);fclose(f);四、程序设计题1、已知一个数列从1项开始的前6项为:0,0,1,1,2,4,以后的各项都是其相邻的前3项之和,计算并输出该数列前20项之和。2、写一函数sort(int x ,int n)实现选择法排序 (从小到大)。 2008年真题一、程序分析题1、#include

8、 21229.18,10main( ) char a=55; a=a&055; printf(“%x,%o”,a,a);2、#include #define test(x,y) x+y main( ) float c;c=2*test(3.2,5.4)/2;printf(“6.1f”,c);3、#include void fun( ) int x=1;static int y=1;printf(“%d%d”,+x,y+); main( ) int i;for(i=0;i2;i+) fun( );4、#include main( )3403 int a=12,b=0,n=0;do b+=2;a-

9、=2+b; n+; while(a=0);printf(“%d”,n); 5、#include main( ) int n=132,i=1,j,k,b10;while(n!=0) j=n%6; bi=j; n=n/6; i+;for(k=i-1;k0;k-) printf(“%d”,bk);二、程序填空题1、任意输入平面一点坐标(x,y),求该点到原点(0,0)的距离。#include #include #include typedef struct NODE float x;float y; NODE;main( ) NODE *p;p= (NODE *)malloc(sizeof(NODE

10、) ;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 #define N 4 #define M 50 char *fun(char (*q)M) int i;char *p; p=*q ;for(i=0;iN;i+) if(strlen(p) strlen(*(q+i) ) p=*(q+i) ;return p; main( ) char strNM=“p

11、ingpong”,”basketball”,field hockey”,”softball”;char * longest; int i;longest=fun(str);printf(“The longest string:n”);puts(longest); 3、下列程序定义了33的二维数组,并在主函数中自动赋值;函数fun的功能是使二维数组的上三角元素的值全部置0。调用函数前调用函数后 1 2 3 1 0 0 2 4 6 2 4 0 3 6 9 3 6 9 #include void fun(int n,int a 3); main( ) int a33,i,j; for(i=1;i=3

12、;i+)for(j=1;j=3;j+) ai-1j-1 =i*j; fun(3,a); printf(“the result:n”); for(i=0;i3;i+) for(j=0;j3;j+) printf(“%4d”,aij); printf(“n”); void fun(int n,int a33) int i,j; for(i=0;in-1;i+) for(j=i+1; jn ;j+) aij=0; 三、程序改错题,不得增行或删行。1、下列程序的功能是求分数序列:的前8项之和。程序中有2处错误,请标记并改正。 #include main( ) int i,flag=1; float a

13、=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( ) int i,j,a11; for(i=1;i11;i+) ai=rand( ); for(i=2;i=1;j-) if(a0aj) aj-1=aj; aj+1=aj; else continue

14、; else break;aj+1=a0; for(i=1;i11;i+)printf(“%d ”,ai);四、程序设计题1、有一辆在高速公路上行驶的汽车,司机在某一时刻看到里程表显示的数值为95859公里(95859为回文数,回文数是指正读反读均一样的数),7小时后,里程表上又出现了一个回文数。编程求出此回文数和汽车时速?(注:高速公路限速60公里以上,汽车的里程表为5位数) 2、弦数是指平方值等于某两个正整数平方之和的正整数,如:32+42=52,因此5为弦数。编程输出10到100之内的所有弦数及弦数的数量。2009年真题一、程序分析题1、#include48p h o5,125D,-69

15、14 main( ) struct stu char name10; int age,sex;printf(“%d”,sizeof(struct stu);2、#include main( ) int x=68; printf(“%c,%dn”,x,x);3、#include #include main( ) double x=5.14;int a=(int)floor(x);int b=(int)pow(floor(x),3);printf(“%d,%d”,a,b);4、#include main( ) char *p,*t=“compute”,”phone”,”mp3”; for(p=t+

16、2;p=t;p-) printf(“%c ”,*(*p+1)5、#include f(int arr ) int i=0;for(;arri=10;i+=2) printf(“%d ”,arri);main( ) int arr=2,4,6,8,10,12; f(arr+1); 二、程序填空题1、以下程序的功能是:从3个红球队、6个白球、5个蓝球中任意取出8个球,且其上至少有一个白球,输出所有可能的方案。#includemain( ) int i,j,k; printf(“nRed White Bluen”); for(i=0;i=3;i+) for( j=1 ;j=0&k=5 ) print

17、f(“%d %d %dn”,i,j,k);2、以下程序的功能是:求100以内最大的一对孪生素数之和,孪生素数是指两个素数之差为2。#include#includeint isPrime(int i) int j,r=0,k=sqrt(i); for(j=2;jk) r=1; return r ;main( ) int i,sum=0; for(i=100;i=5;i-) if( isPrime(i)&isPrime(i-2) ) sum=i+i-2; break ;printf(“%dn”,sum);3、以下程序的功能是:输入某公司50名职员的工号、姓名和地址并存入名为”company.txt

18、”的磁盘文件。struct Employee int empid; char empname10; char empadd30;emp50;void save( ) FILE *fp ; int i;if(fp=fopen(“company.txt”,”wb”)=NULL) printf(“cannot open filen”); return; for(i=0;i50;i+) if(fwrite( emp+i,sizeof(struct Employee),1,fp )!=1) printf(“file write errorn”);main( ) int i; for(i=0;i50;i+

19、) scanf(“%d,%s,%s”, &empi.empid ,empi.empname, empi.empadd);save( );三、程序改错题,不得增行或删行。1、以下程序的功能是:从一个整数队列中找出值最大的数,若有多个则取最先得到的那一个。程序有两处错误,请标出并改正。#includeint *findmax(int a ,int n) int i,j,max; for(i=1,j=0,max=a0;imax) j=i; max=ai; return *(a+j); return a+j;main( ) int i,a50; for(i=0;i50;i+) scanf(“%d”,&

20、ai); printf(“%d”,findmax(a,50); printf(“%d”,*findmax(a,50);2、以下程序的功能是:输入一个字符串,将该字符串中的所有字符按ASCII码降序排序后输出。程序有两处错误,请标出并改正。#include#includevoid fun(char t) char c; int i,j; for(i=0;istrlen(t)-1;i+)for(j=i+1;jstrlen(t)-1;j+) if(titj) c=tj; tj=ti+; tj=ti; ti=c; main( ) char s81; gets(s); printf(nBefore so

21、rting:n%s”,s); fun(s);printf(nafter sorting:n%s”,s);四、程序设计题1、某学校操场上有一些学生,老师起知道有多少人,便让学生排队报数:按1到5报数,最后一名学生的报数为1,按1到6报数,最后一名学生的报数为5,按1到7报数,最后一名学生的报数为4,最后再按1到11报数,最后一名学生的报数为10。编写程序求操场上共有多少学生。2、将自然数1100按顺时围成一圈,首先取出1,然后按顺时针方向以步长30取数,直到所有的数取完为此。编程序求最后一个取出的数?2010年真题一、单选题1、下列不是C语言合法标识符的是 B 。A、_124 B、124abc

22、C、sum124 D、a_124pqr图2pqr图12、若有如图1所示存储结构,且变量定义为struct nodeint data;struct node *next;*p,*q,*r;若要实现如图2所示的存储结构,可选用的赋值语句是 D 。A、p=r; B、p=q-next C、p-next=q; D、p-next=q-next;二、程序分析题6.001、#include main( ) double x,y; printf(“%.2f”,(x=5,y=x+3/2); 2、#include #define CUBE(x) (x*x*x)30100,100512main( ) int n=5;

23、int s=CUBE(+n); printf(“%d”,s);3、#include void fun(int a,int *b) a=*b*2; *b=a*5; main( ) int x=10,*y; y=&x; fun(x,y); printf(“%d,%d”,x,*y);4、#include void fun(int *a) *a=*(a-1)+*(a+1); main( ) int i=0,s=0,arr5=1,3,5,7,9;fun(arr+2);for(;i5;i+) s+=arri;printf(“%d”,s); 三、程序填空题1、下列函数rtrim实现的是删除字符串str尾部的

24、所有空格。 char * rtrim(char *str) int n= strlen(str)-1 ;if(n0) if(*(str+n)!= ) *(str+n+1)=0 ; break; else n- ;return str;2、某超市推行会员优惠购物,其中VIP会员八八折,金牌会员九折,银牌会员九三折,普通会员九六折,非会员不打折。以下程序实现了超市购物的结算,其中非会员、普通会员、银牌会员、金牌会员、VIP会员分别用0,1,2,3,4表示。#includedouble compute(int n,int grade) int amount,i; double sum,price,d

25、iscount5= 1.0,0.96,0.93,0.9,0.88 ; sum=0.0; for(i=0;in;i+) scanf(“%lf%d”,&price,&amount); /*price:商品单价,amount:商品数量*/ sum+=price*amount; return sum*discountgrade ;main( ) int n,grade;/*n:商品种数,grade:会员等级*/ scanf(“%d%d”,&n,&grade); printf(“%.2lfn”, compute(n,grade) ); 3、设文件studs.dat中存放着学生的基本信息,基本信息包括学号

26、、姓名、专业等信息。下列程序的功能是:输入要读取的学生人数,利用malloc动态分配内存来存储从文件中读取的学生信息,并输出读取的学生的学号,姓名,专业。 # include #include struct student long int num; /*学号*/char name20; /*姓名*/char major25; /*专业*/ ; FILE *fp; main( ) struct student st,*pst;int i,num,realnum;printf(“请输入读取的学生人数:”);scanf(“%d”,&num);pst=(struct student *)malloc

27、( num*sizeof(struct student) );if(!pst) return;fp=fopen(“studs.dat”,”rb”);if(NULL=fp) free(pst) ; return; realnum=0;printf(“%st%st%st%sn”,”number”,”number”,”name”,”major”);/*文件包含的学生人数可能少于输入的人数*/for(i=0; i=1);for(j=i-1;j=0;j+) for(j=i-1;j=0;j-) printf(“%d”,resultj);printf(“n”);五、程序设计题1、在全国青年歌手大奖赛中,有2

28、0个评委为参赛的选手打分,分数为1100分。选手最后得分为:去掉一个最高分和最低分后其余18个分数的平均值。请编写程序实现,输入20个评委评分,求出选手的最后得分。2、编写程序,输入5行5列整数方阵,计算并输出该方阵两条对角线上各元素的平方和。2011年真题一、单选题1、C语言中,不合法的整型常量是 B 。A、88 B、018 C、-0xabcd D、2e52、C语言中,定义常量指针p(p的值不可变)的正确语法是 A 。A、char * const p; B、char const *p; C、const * char p; D、const char *p;2、C语言中,一个2行3列矩阵M的值如

29、图所示,能得到M中数值5的表达式是 C 。3 8 92 5 6A、*(M+1)+1 B、*(*M+1)+1 C、*(*(M+1)+1) D、*(*M+1)+1)3、C语言中,关于函数不正确的说法有 C 。A、实参可以是常量、变量或表达式B、实参与其对应的形参各占用独立的存储单元C、实参与形参的类型不一致时,以实参类型为准D、函数的类型与返回值的类型不一致时,以函数的类型为准二、程序分析题1、#include3 5 83b,d1,8 main( ) enum ColorRed,Blue,Green,Yellow=6,Black,Purple,Pink; printf(“%d,%d”,Blue,P

30、urple); 2、#include main( ) char a=a,b,c,d; char *p=(char *)(&a+1); printf(“%c,%c”,*(a+1),*(p-1); 3、#include int bits_count(unsigned value) int count=0; for(count=0;value!=0;value=1) if(value&1)!=0) count+; return count;main( ) printf(“%d”,bits_count(14);4、#include int *fun(int*q) static int a=2; int

31、*p=&a; a+=*q; return p;main( ) int i=1;for(;i4;i+) printf(“%4d”,*fun(&i);三、程序填空题。1、会计记账时通常要求大整数用逗号进行分隔,下列函数实现将以分为单位的数字字符串转变为以元为单位,具体输出格式如下表所示。输入输出输入输出空¥0.00 12345¥123.451¥0.01123456¥1,234.5612¥0.121234567¥12,345.561234¥12.34123456789¥1,234,567.89#include #include #include char *dollars( char const*

32、src) int len,len1,i;char*dst,*resultp;if(NULL=src) return NULL;len=strlen(src);len1=len=3) int i;for(i=len-2;i0;) *dst+=*src+; if( -i%3=0 ) *dst+=,; else *dst+=0; *dst+=.; *dst+=len2?0:*src+; *dst+=len1?0:*src;*dst=0;return resultp;2、下列程序的功能是实现向head指向的链表中插入新结点s使之仍然有序。链表已按id值升序排序。#include#includetype

33、def struct Node int id;char *name;struct Node *next;Node;void Innode(Node *head, int id,char *str) int j=0 Node *p, *q,*s; p=head; while( p!=NULL&idp-id ) q=p; p=p-next; s=(Node*)malloc(sizeof(Node); s-id=id; s-name=str; s-next=p; q-next=s; main() /*省略创建链表head的代码*/Innode(head,3,“Jone”); /*参数为若插入的数据*

34、/3、下列程序采用快速排序算法对任意输入的10个整数进行排序。快速排序算法是一种经典的排序方法,它是冒泡排序算法的改进。该算法的主要思想是在待排序的n个数据中取第一个数据作为基准值,将所有的数据分为两组,使得第一组中各数据值均小于或等于基准值,第二组中各数据值均大于基准值,这便完成了第一趟排序,再分别对第一组和第二组重复上述方法,直到每组只有一个数据为止。#includevoid qusort(int s,int start,int end) int i,j;i=start; /*将每组首个元素赋给i*/j=end; /*将每组末尾元素赋给j*/s0=sstart; /*设置基准值*/whil

35、e(ij) while( i=s0 ) j-; /*位置左移*/ if(ij) si+=sj /*将sj放到sj的位置上,且i自增*/ while(ij& si =s0) i+; /*位置右移*/ if(ij) sj-=si; si=s0; /*将基准值放入指定位置*/if(starti) qusort(s,start,j 1); /*对分割出的部分递归调用函数qusort()*/if(iend) qusort(s,j+1,end); main() int a11,i; printf(“please input 10 numbers:n ”); for(i=1;i=10;i+) scanf(“

36、%d”,&ai); qusort(a,1,10); printf(“the sorted numbers:n ”); for(i=1;i=10;i+) print(“%4d”,ai);四、程序改错题,不得删除行或增加行。1、以下函数的功能是:在指针数组表示的字符串列表中查找特定的字符,指针数组以NULL指针结束,如果找到返回TRUE,否则返回FALSE。程序中有两处错误,请标出并改正。L1 #includeL2 #includeL3 #define TRUE 1L4 #define FALSE 0L5 int find_string(char* string,char value)L6 cha

37、r* cur_str;L7 if(*string=NULL)L8 return FALSE;L9 while(cur_str=*strings)!=NULL) while(cur_str=*strings+)!=NULL)L10 while(cur_str!= 0) while(*cur_str!= 0)L11 if(*cur_str+=value)L12 return TRUE;L13 L14 return FALSE;L15 五、程序设计题1、一串数码是否构成合法的信用卡号,可以通过CheckCard算法来验证。CheckCard算法验证的过程如下:卡号的长度必须是16位。从卡号最后一位数

38、字开始,将奇数位数字求和。从卡号最后一位数开始,将偶数位数字乘以2(如果乘积为两位数,则减9),再求和。将和所得的和值相加,当结果能被10整除时,则校验通过。例如,卡号是5432123456788881奇数位和等于35偶数位乘以2(乘积为两位数的减去9)的结果:1 6 2 6 1 5 7 7,求和等于35。35+35=70可以被10整除,校验通过。编写函数实现CheckCard算法,判断输入的卡号是否能通过验证,通过则显示“成功”,否则显示“失败”。2、随着信息化进程的不断推进,数据的安全性越来越受到人们的重视,数据加密技术是保证数据安全的重要手段。编程实现对C盘根目录下名为“new.dat”

39、文件的数据进行加密,加密方式是将“new.dat”文件中每个字符与字符A进行异或运算,运算后的加密数据存储到“new.dat”文件中。2012年真题一、单选题1、以下正确的C语言自定义标识符是 C 。A、int B、a.3 C、_7c D、5d_2、已知i=3,执行j=i+后,i和j的值分别为 B 。A、4 2 B、 4 3 C、3 3 D、3 23、C语言中,以下语句能跳过循环体中未执行的语句,接着执行本循环下一次迭代的语句是 D 。A、空语句 B、break语句 C、return 语句 D、continue语句二、填空题1、C语言中,文件操作fopen函数的原型为FILE *fopen(c

40、har *filename,char *mode);用于打开一个指定文件,若成功则返回一个与之关联的流,否则返回 NULL ;代码片段FILE *fp=fopen(“c:test.dat”,”a”)的含义是以 追加 的方式打开路径”c:test.dat”对应的文件,当访问的文件是二进制文件时,还需要在字符串”a”后增加一个字符 b ,以上代码片段对应的关闭文件的C语言代码是 fclose(fp); 。 三、综合应用题1、30人参观博物馆共花50美元,其中成年男子门票为3美元/人,成年女子2美元/人,小孩1美元/人。编程输出成年男子、成年女子和小孩人数的所有组合。题目分析如下:设x,y,z分别代

41、表成年男子、成年女子和小孩人数。可得以下方程:x+y+z=30 3x+2y+z=50 用程序求此不定方程的非负整数解,可先通过-式得:2x+y=20 由式可知,x变化范围是 0,10 。根据以上分析编写程序如下:#includemain( ) int x,y,z; printf(“Men Women Childrenn”); for(x=0; x=10 ; x+) y=20-2*x ; z=30-x-y ; if(3*x+2*y+z=50) printf(“%d %d %dn”,x,y,z);四、程序分析题1、#include main( ) int a=3,b=4; a%=b+=a+=a+b; printf(“%d,%d”,a,b);2、#include main( ) int x=2,y=7,z=5; switch(x2) case 1: switch(y0) case 1:printf(“1”);break; case 2:printf(“2”);break; case 0:10,1446 switch(z=5) case 0:printf(“3”);break; case 1:printf(“4”);break;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论