2015年湖南省对口高考真题中,哪一道题的解答过程最复杂?

2026-04-12 03:561阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1795个文字,预计阅读时间需要8分钟。

2015年湖南省对口高考真题中,哪一道题的解答过程最复杂?

一、选择题型 + 1、在C语言中,下列叙述正确的是__________。

2015年湖南省对口高考真题中,哪一道题的解答过程最复杂?

A. 空字符字符串不占用内存,其内存空间大小是0

B. 可以用关系运算符比较字符串的大小

C. 连续两个双引号是合法的字符串常量

D. 连续是合法的字符串常量

一、选择题

1、

在C语言中,下列叙述正确的是__________。

A.空字符串不占用内存,其内存空间大小是0

B.可以用关系运算符比较字符串的大小

C.连续两个双引号是合法的字符串常量

D.连续两个单引号是合法的字符常量

2、

若有语句:int x=12,y=8,z; z=0.8+x/y; 执行语句后z的值为__________。

A.1.8 B.1 C.2 D.2.4

3、

若有语句: int a,b; scanf("%d;%d",&a,&b); 如果把整数4赋给a,把整数5赋给b,应该输入__________。

A.4 5 B.4,5 C.45 D.4;5

二、程序填空题

输入一行文字,找出其中大写字母、小写字母、空格、数字及其它字符各有多少。

#include "stdio.h" int main() { char str[40],*p,sl=0,s2=0,s3=0,s4=0,s5=0; gets(str); p=str; while(*p) { if( _____ 1 _____ ) sl++; else if( _____ 2 _____ ) s2++; else if( _____ 3 _____ ) s3++; else if( _____ 4 _____ ) s4++; else s5++; p++; } printf("大写字母:%d 小写字母:%d 数字:%d 空格:%d 其它:%d\n",s1,s2,s3,s4,s5); return 0; }

三、写程序结果

#include "stdio.h" int main() { int i=0,a=0; while(i<30) { for(;;) if(i%10==0) break; else i--; i+=11; a+=i; } printf("%d",a); return 0; }

运行结果是____________________。

#include "stdio.h" int main() { int a[3][3]= {{0,1},{2,3},{4,5}},i,j,s=0; for(i=1; i<3; i++) for(j=0; j<=i; j++) s+=a[i][j]; printf("%d",s); return 0; }

运行结果是____________________。

#include <stdio.h> int fun() { static int x=1; x*=2; return x; } int main() { int i,s=1; for(i=1; i<=4; i++) s*=fun(); printf("%d",s); return 0; }

运行结果是____________________。

4、

#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char *p; int i; p=(char*)malloc(sizeof(char)*20); strcpy(p,"Thank "); for(i=6;i>=0;i--) putchar(*(p+i)); free(p); return 0; }

运行结果是____________________。

5、

#include <stdio.h> int main() { FILE *fp; int x[6]={0,1,2,3,4,5},i; fp=fopen("test.dat","wb"); fwrite(x,sizeof(int),3,fp); rewind(fp); fread(x,sizeof(int),3,fp); for(i=0; i<6;i++) printf("%d",x[i]); fclose(fp); return 0; }

运行结果是____________________。

四、程序填空

已知公式如下:


float func(float x) { if(x<1) return x; else if( _____ 1 _____ ) return x+5; else _____ 2 _____; }

编写函数,通过指针将一个字符串反向。如下程序的输出为:dcba

#include <stdio.h> void strReverse(char *s) { char c; char *p; _____ 3 _____; while(*p!='\0') p++; _____ 4 _____; while(s<=p) { c=*s; *s=*p; s++; *p=c; _____ 5 _____; } } int main() { char a[10]="abcd"; strReverse(a); printf("%s",a); return 0; }

五、改错

产生一个0-9之间的随机整数,要求用户猜这个整数。用户输入一个整数,程序判断是否与所产生的随机数相等,由屏幕显式判断结果。如果猜得不对,再次提示输入,进行判断,直到猜出这个数为止。以下程序只允许修改两行。

#include <stdio.h> #include <math.h> #include <time.h> main() { int x,a=-1; srand((unsigned)time(NULL)); /*随机种子*/ x=rand()%10; /*产生0-9的随机数*/ while(a!=x) { scanf("%d",a); if(a=x) puts("猜对"); if(a>x) puts(“太大,请重试”); if(a<x) puts(“太小,请重试”); } }

函数convertNum用于实现无符号十进制数到其它进制数的转换,转换结果的每一位以字符存储于字符数组s中(如十进制3转换为二进制后,数组s中存储的字符串为11),参数srclnt为待转换数据,d为转换的目标进制。函数convertNum转换成功返回1,失败返回0。以下程序只允许修改三行。

#include <stdio.h> #include <stdlib.h> #define M sizeof(unsigned int)*8 int convertNum(unsigned srclnt,int d,char s[]) { static char digits[]="0123456789ABCDEF"; char buf[M+1]; int j,i=M; if(d<2||d>16) { s[0]=’\0'; return 0; } buf[i]='\0'; do { buf[--i]=digits[srclnt/d]; srclnt=srclnt%d; }while(srclnt); for(j=0;buf[i]!=’\0';j++,i++) { s[j]=buf[i]; }; s[j+1]='\0'; return 1; }

六、程序设计题

编写程序用于从键盘读取一个字符串,将字符串中所有连续的数字转换为对应的整数并添加到链表中,整个字符串处理完毕后输出链表的内容。如输入为a25re776!jk321ss时,输出为25 776 321

#include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct IntData) struct IntData { long data; struct IntData *next; }; /*将数据为data的新节点插入链表*/ struct IntData *addToList(long data,struct IntData * curTail) { struct IntData *p=(struct IntData *)malloc(LEN); p->data=data; p->next=NULL; if(curTail!=NULL) __________ 1 __________ return p; } struct IntData *picklntegersFromStr(char *str) { char ch; long data=0; /*hasData用于标识当前是否正在处理数字字符*/ /*isAdd标识处理的整数数据是否被添加到链表*/ /*isFirst标识是否是添加到链表的第一个数据*/ int hasData=0,isAdd=0,isFirst=1; /*tail指向链尾,head指向链头*/ struct IntData *head=NULL,*tail=NULL,*p; while((ch=*str)!='\0') { if(ch>='0'&&ch<='9') { __________ 2 __________ hasData=1; isAdd=0; } else { if(hasData&&!isAdd) { p=addToList(data,tail); __________ 3 __________ if(isFirst) { __________ 4 __________ tail=p; isFirst=0; } else tail=p; hasData=0; isAdd=1; } } str++; } if(hasData&&!isAdd) { p=addToList(data,tail); if(isFirst) __________ 5 __________ } return head; } void printList(struct IntData *head) { struct IntData *p=head; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n"); } int main() { char str[100]; struct IntData *head=NULL; gets(str); head=picklntegersFromStr(str); printList(head); return 0; }

参考答案:

一、选择题

1—3 C、B、D

二、程序填空题

1、*p>='A' && *p<='Z' 2、*p>='a' && *p<='z'

3、*p>='0' && *p<='9' 4、*p==' ' 或者

三、写程序结果

1、 63 2、 14 3、 1024 4、 □knahT□(□为空格)

5、 012345

分析:此题有问题,因为wb的方式,对于文件同时读写,会无效

改为fp=fopen("test.dat","wb+"); fwrite(x+2,sizeof(int),3,fp);

则答案为:234345

四、程序填空

1、 x>=1 && x<10 2、 return 8*x*x-32

3、 p=s 4、 p-- 5、 p--

五、改错

1、

L11 scanf("%d",&a);

L12 if(a==x)

2、

L17 buf[--i]=digits[srclnt%d];

L18 srclnt=srclnt/d;

L24 s[j]='\0';

第四个问题,此题第23句多了一个;

六、程序设计题

1、curTail->next=p; 2、data=data*10+(ch-'0');

3、data=0; 4、head=p;

5、head=p;

本文共计1795个文字,预计阅读时间需要8分钟。

2015年湖南省对口高考真题中,哪一道题的解答过程最复杂?

一、选择题型 + 1、在C语言中,下列叙述正确的是__________。

2015年湖南省对口高考真题中,哪一道题的解答过程最复杂?

A. 空字符字符串不占用内存,其内存空间大小是0

B. 可以用关系运算符比较字符串的大小

C. 连续两个双引号是合法的字符串常量

D. 连续是合法的字符串常量

一、选择题

1、

在C语言中,下列叙述正确的是__________。

A.空字符串不占用内存,其内存空间大小是0

B.可以用关系运算符比较字符串的大小

C.连续两个双引号是合法的字符串常量

D.连续两个单引号是合法的字符常量

2、

若有语句:int x=12,y=8,z; z=0.8+x/y; 执行语句后z的值为__________。

A.1.8 B.1 C.2 D.2.4

3、

若有语句: int a,b; scanf("%d;%d",&a,&b); 如果把整数4赋给a,把整数5赋给b,应该输入__________。

A.4 5 B.4,5 C.45 D.4;5

二、程序填空题

输入一行文字,找出其中大写字母、小写字母、空格、数字及其它字符各有多少。

#include "stdio.h" int main() { char str[40],*p,sl=0,s2=0,s3=0,s4=0,s5=0; gets(str); p=str; while(*p) { if( _____ 1 _____ ) sl++; else if( _____ 2 _____ ) s2++; else if( _____ 3 _____ ) s3++; else if( _____ 4 _____ ) s4++; else s5++; p++; } printf("大写字母:%d 小写字母:%d 数字:%d 空格:%d 其它:%d\n",s1,s2,s3,s4,s5); return 0; }

三、写程序结果

#include "stdio.h" int main() { int i=0,a=0; while(i<30) { for(;;) if(i%10==0) break; else i--; i+=11; a+=i; } printf("%d",a); return 0; }

运行结果是____________________。

#include "stdio.h" int main() { int a[3][3]= {{0,1},{2,3},{4,5}},i,j,s=0; for(i=1; i<3; i++) for(j=0; j<=i; j++) s+=a[i][j]; printf("%d",s); return 0; }

运行结果是____________________。

#include <stdio.h> int fun() { static int x=1; x*=2; return x; } int main() { int i,s=1; for(i=1; i<=4; i++) s*=fun(); printf("%d",s); return 0; }

运行结果是____________________。

4、

#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char *p; int i; p=(char*)malloc(sizeof(char)*20); strcpy(p,"Thank "); for(i=6;i>=0;i--) putchar(*(p+i)); free(p); return 0; }

运行结果是____________________。

5、

#include <stdio.h> int main() { FILE *fp; int x[6]={0,1,2,3,4,5},i; fp=fopen("test.dat","wb"); fwrite(x,sizeof(int),3,fp); rewind(fp); fread(x,sizeof(int),3,fp); for(i=0; i<6;i++) printf("%d",x[i]); fclose(fp); return 0; }

运行结果是____________________。

四、程序填空

已知公式如下:


float func(float x) { if(x<1) return x; else if( _____ 1 _____ ) return x+5; else _____ 2 _____; }

编写函数,通过指针将一个字符串反向。如下程序的输出为:dcba

#include <stdio.h> void strReverse(char *s) { char c; char *p; _____ 3 _____; while(*p!='\0') p++; _____ 4 _____; while(s<=p) { c=*s; *s=*p; s++; *p=c; _____ 5 _____; } } int main() { char a[10]="abcd"; strReverse(a); printf("%s",a); return 0; }

五、改错

产生一个0-9之间的随机整数,要求用户猜这个整数。用户输入一个整数,程序判断是否与所产生的随机数相等,由屏幕显式判断结果。如果猜得不对,再次提示输入,进行判断,直到猜出这个数为止。以下程序只允许修改两行。

#include <stdio.h> #include <math.h> #include <time.h> main() { int x,a=-1; srand((unsigned)time(NULL)); /*随机种子*/ x=rand()%10; /*产生0-9的随机数*/ while(a!=x) { scanf("%d",a); if(a=x) puts("猜对"); if(a>x) puts(“太大,请重试”); if(a<x) puts(“太小,请重试”); } }

函数convertNum用于实现无符号十进制数到其它进制数的转换,转换结果的每一位以字符存储于字符数组s中(如十进制3转换为二进制后,数组s中存储的字符串为11),参数srclnt为待转换数据,d为转换的目标进制。函数convertNum转换成功返回1,失败返回0。以下程序只允许修改三行。

#include <stdio.h> #include <stdlib.h> #define M sizeof(unsigned int)*8 int convertNum(unsigned srclnt,int d,char s[]) { static char digits[]="0123456789ABCDEF"; char buf[M+1]; int j,i=M; if(d<2||d>16) { s[0]=’\0'; return 0; } buf[i]='\0'; do { buf[--i]=digits[srclnt/d]; srclnt=srclnt%d; }while(srclnt); for(j=0;buf[i]!=’\0';j++,i++) { s[j]=buf[i]; }; s[j+1]='\0'; return 1; }

六、程序设计题

编写程序用于从键盘读取一个字符串,将字符串中所有连续的数字转换为对应的整数并添加到链表中,整个字符串处理完毕后输出链表的内容。如输入为a25re776!jk321ss时,输出为25 776 321

#include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct IntData) struct IntData { long data; struct IntData *next; }; /*将数据为data的新节点插入链表*/ struct IntData *addToList(long data,struct IntData * curTail) { struct IntData *p=(struct IntData *)malloc(LEN); p->data=data; p->next=NULL; if(curTail!=NULL) __________ 1 __________ return p; } struct IntData *picklntegersFromStr(char *str) { char ch; long data=0; /*hasData用于标识当前是否正在处理数字字符*/ /*isAdd标识处理的整数数据是否被添加到链表*/ /*isFirst标识是否是添加到链表的第一个数据*/ int hasData=0,isAdd=0,isFirst=1; /*tail指向链尾,head指向链头*/ struct IntData *head=NULL,*tail=NULL,*p; while((ch=*str)!='\0') { if(ch>='0'&&ch<='9') { __________ 2 __________ hasData=1; isAdd=0; } else { if(hasData&&!isAdd) { p=addToList(data,tail); __________ 3 __________ if(isFirst) { __________ 4 __________ tail=p; isFirst=0; } else tail=p; hasData=0; isAdd=1; } } str++; } if(hasData&&!isAdd) { p=addToList(data,tail); if(isFirst) __________ 5 __________ } return head; } void printList(struct IntData *head) { struct IntData *p=head; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n"); } int main() { char str[100]; struct IntData *head=NULL; gets(str); head=picklntegersFromStr(str); printList(head); return 0; }

参考答案:

一、选择题

1—3 C、B、D

二、程序填空题

1、*p>='A' && *p<='Z' 2、*p>='a' && *p<='z'

3、*p>='0' && *p<='9' 4、*p==' ' 或者

三、写程序结果

1、 63 2、 14 3、 1024 4、 □knahT□(□为空格)

5、 012345

分析:此题有问题,因为wb的方式,对于文件同时读写,会无效

改为fp=fopen("test.dat","wb+"); fwrite(x+2,sizeof(int),3,fp);

则答案为:234345

四、程序填空

1、 x>=1 && x<10 2、 return 8*x*x-32

3、 p=s 4、 p-- 5、 p--

五、改错

1、

L11 scanf("%d",&a);

L12 if(a==x)

2、

L17 buf[--i]=digits[srclnt%d];

L18 srclnt=srclnt/d;

L24 s[j]='\0';

第四个问题,此题第23句多了一个;

六、程序设计题

1、curTail->next=p; 2、data=data*10+(ch-'0');

3、data=0; 4、head=p;

5、head=p;