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

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

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

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

一、选择题+1、+下列选项中正确的C语言变量定义是__________。A. char a='A', a1='A';B. unsigned long a=1000;C. float a1=a2=10.0;D. double a=0.618, a=3.14;

二、+假设有float a=5, b=a+5/2;,执行语句printf(%f, b)的输出是__________。

一、选择题

1、

下列选项中正确的C语言变量定义是__________。

A.char a1='A', a2=A; B.unsigned long a=1000;

C.float a1=a2=10.0; D.double a=0.618,a=3.14;

2、

假设有:float a=5,b=a+5/2;则执行语句printf("%f",b)的输出结果为__________。

A.7.500000 B.7 C.5.000000 D.7.000000

3、

有输入语句:scanf("a=%d,b=%d",&a,&b);为使变量a的值为1,b的值为2,正确的数据输入方式是__________。

A.12 B.1,2 C.a=1,b=2 D.a=1 b=2

二、填空题

在C语言中,可以使用函数 _____ 1 _____ 来获取字符串的长度,使用函数_____ 2 _____来对两个字符串进行比较,使用宏定义命令_____ 3 _____来定义宏,使用文件包含命令_____ 4 _____实现“文件包含”操作。

三、综合应用题

民警小张在某个案件中带回4个嫌疑人A,B,C,D,其中有一位是小偷,现在小张分别对4个嫌疑人进行询问:

A说:我不是罪犯;

B说:C是罪犯;

C说:D是罪犯;

D说:我不是罪犯而且B也不是罪犯。

已知其中3人说的是真话,1人说的是假话,请根据以上信息帮助小张找出罪犯。

#include <stdio.h> #include <stdlib.h> main() { int i; char who='A'; int isFound=0; for(i=0; _____ 1 _____ ;i++) { int sum=0; who= _____ 2 _____ ; if(who!='A') sum++; if(who=='C') sum++; if(who=='D') sum++; if( _____ 3 _____ ) sum++; if( _____ 4 _____ ) { printf("罪犯是%c\n",who); isFound=1; } } if(!isFound) printf("没有找到符合条件的人"); }

四、写程序结果

#include <stdio.h> int main() { int a=7,b=3,c=2; int d=(a>b!=c); printf("%d",d); return 0; }

运行结果是____________________。

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

#include <stdio.h> main() { int c; while((c=getchar())!='\n') switch(c-'2') { case 0: case 1:putchar(c+4); case 2:putchar(c+4);break; case 3:putchar(c+3); default:putchar(c+2);break; } }

当输入为125时,运行结果是____________________。

#include <stdio.h> static int f=1; int func(int n) { f=f+n; return f; } main() { int i; for(i=2;i<=3;i++) printf("%d",func(i)); }

运行结果是____________________。

4、

#include <stdio.h> main() { int a[9]={1,2,3,4,5,6,7,8}; int *p=a; int sum=0; for(;p<a+8;p++) if(*p%2==0) sum=sum+*p; printf("%d",sum); }

运行结果是____________________。

5、

#include <stdio.h> void f(int *q) { int i; for(i=0;i<3;i++) (*q)--; } main() { int a[5]={8,7,6},i; f(a); for(i=0;i<3;i++) printf("%d",a[i]); }

运行结果是____________________。

五、程序填空

下面的程序从文本文件test.txt逐个读入字符,并显示在屏幕上。

#include <stdio.h> #include <stdlib.h> main() { FILE *fp; char ch,*filename="test.txt"; if((fp= _____ 1 _____(filename,"r"))==NULL) { printf("cannot open file\n"); exit(0); } while(! _____ 2 _____(fp)) { ch=fgetc(fp); putchar(ch); } fclose(fp); }

以下程序的功能是:读入一行字符,以回车结束,按输入时的逆序使用单向链表进行存储,先输入的位于链表尾,然后再遍历输出链表,如输入abc↙,链表结构如图所示,程序最后输出cba.

#include "stdlib.h" #include "stdio.h" struct node { char value; struct node *link; }; int main() { struct node *top,*p; char c; top=NULL; while((c=getchar())_____ 3 _____) { p=(struct node *)malloc(sizeof(struct node)); p->value=c; p->link=top; _____ 4 _____ } while(top) { p=top; top=top->link; putchar(_____ 5 _____); } return 0; }

六、改错

矩阵乘法是指两个矩阵相乘,生成一个新矩阵,其乘法公式如下:

以下程序实现了两个2×2的矩阵相乘,只对程序中的2行代码进行修改,使其可以正确运行。

#include <stdio.h> #define M 2 #define N 2 #define K 2 int main() { int a[M][K]= {1,-1,0,2}; int b[K][N]= {4,0,2,5}; int c[M][N]; int i,j,l; for(i=0; i<M; i++) { for(j=0; j<N; j++) { for(l=0; l<K; l++) { c[i][j]=a[i][l]*b[l][j]; } } } return 0; }

某班举行歌唱比赛,赛后需要显示成绩最高的选手名字和成绩,以下程序实现了查找得分最高选手的功能,只对程序中的3行代码进行修改,使其可以正确运行。

#include <stdio.h> #define MAX 3 struct PLAYER { char *name; float score; } Player; int main() { Player players[]= {{"丁一",90.3}, {"陈二",95.8}, {"张三",89.6}}; Player *player; Player topPlayer=players[0]; for(player=players; player<players+MAX;player++) { if(player.score>topPlayer.score) { topPlayer=player } } printf("Top Player is %s,score is %6.2f",topPlayer.name,topPlayer.score); return 0; }

七、程序设计题

折半查找也称为二分查找,适用于有序数组,其查找的基本过程是:先确定待查记录所在的范围,然后逐步缩小范围,直到找到,或找不到该记录为止。假定数组按照升序排列,对于给定值K,从数组中间位置开始比较,如果当前数据元素的值等于k,则查找成功。否则,若k小于当前数据元素的值,则在数组的前半部继续查找;反之,则在数组的后半部继续查找,依次重复进行,直至获得查找成功或不成功的结果。请补充完成下列程序中的相应部分:

#include <stdio.h> #include <stdlib.h> int main() { int BinarySearch(int key,int data[]); int key=0; printf("请输入要查找的数:"); scanf("%d",&key); int data[10]= {1,3,5,7,8,9,13,18,22,28}; int ret=BinarySearch(key,data); if(ret>=0) printf("\n %d 是数组中的第%d个数\n",key,ret+1); else printf("\n %d在数组中未找到!\n",key); system("pause"); return 0; } int BinarySearch(int key,int data[]) { int low=0,high=9,middle; while(______1______) /*查找结束条件*/ { int middle=______2______; /*获取数组中间位置*/ if(______3______) /*如查当前数据元素的值等于k*/ return middle; /*返回所在位置*/ if(key<data[middle]) /*如果若k小于当前数据元素的值*/ ______4______; /*在数组的前半部继续查找*/ else ______5______; /*在数组的后半部继续查找*/ } return -1; /*返回查找不成功标记*/ }

参考答案:

一、选择题

1—3 B、D、C

二、填空题

1、strlen()、strcmp()、#define 、#include

三、综合应用题

1、i<=3 2、'A'+i 3、who!='D' && who!='B'

4、sum==3 5、 876

四、写程序结果

1、 1 2、 36687 3、 36 4、 20

5、 576

五、程序填空

1、 fopen 2、feof

3、!='\n' 4、top=p; 5、p->value

六、改错

1、

L09 int c[M][N]={0};

L17 c[i][j]+=a[i][l]*b[l][j];

2、

L03 typedef struct PLAYER

L15 if(player->score>topPlayer.score)

L17 topPlayer=*player;

七、程序设计题

1、low<=high 2、 (low+high)/2

3、 key==data[middle] 4、high=middle-1

5、 low=middle+1

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

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

一、选择题+1、+下列选项中正确的C语言变量定义是__________。A. char a='A', a1='A';B. unsigned long a=1000;C. float a1=a2=10.0;D. double a=0.618, a=3.14;

二、+假设有float a=5, b=a+5/2;,执行语句printf(%f, b)的输出是__________。

一、选择题

1、

下列选项中正确的C语言变量定义是__________。

A.char a1='A', a2=A; B.unsigned long a=1000;

C.float a1=a2=10.0; D.double a=0.618,a=3.14;

2、

假设有:float a=5,b=a+5/2;则执行语句printf("%f",b)的输出结果为__________。

A.7.500000 B.7 C.5.000000 D.7.000000

3、

有输入语句:scanf("a=%d,b=%d",&a,&b);为使变量a的值为1,b的值为2,正确的数据输入方式是__________。

A.12 B.1,2 C.a=1,b=2 D.a=1 b=2

二、填空题

在C语言中,可以使用函数 _____ 1 _____ 来获取字符串的长度,使用函数_____ 2 _____来对两个字符串进行比较,使用宏定义命令_____ 3 _____来定义宏,使用文件包含命令_____ 4 _____实现“文件包含”操作。

三、综合应用题

民警小张在某个案件中带回4个嫌疑人A,B,C,D,其中有一位是小偷,现在小张分别对4个嫌疑人进行询问:

A说:我不是罪犯;

B说:C是罪犯;

C说:D是罪犯;

D说:我不是罪犯而且B也不是罪犯。

已知其中3人说的是真话,1人说的是假话,请根据以上信息帮助小张找出罪犯。

#include <stdio.h> #include <stdlib.h> main() { int i; char who='A'; int isFound=0; for(i=0; _____ 1 _____ ;i++) { int sum=0; who= _____ 2 _____ ; if(who!='A') sum++; if(who=='C') sum++; if(who=='D') sum++; if( _____ 3 _____ ) sum++; if( _____ 4 _____ ) { printf("罪犯是%c\n",who); isFound=1; } } if(!isFound) printf("没有找到符合条件的人"); }

四、写程序结果

#include <stdio.h> int main() { int a=7,b=3,c=2; int d=(a>b!=c); printf("%d",d); return 0; }

运行结果是____________________。

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

#include <stdio.h> main() { int c; while((c=getchar())!='\n') switch(c-'2') { case 0: case 1:putchar(c+4); case 2:putchar(c+4);break; case 3:putchar(c+3); default:putchar(c+2);break; } }

当输入为125时,运行结果是____________________。

#include <stdio.h> static int f=1; int func(int n) { f=f+n; return f; } main() { int i; for(i=2;i<=3;i++) printf("%d",func(i)); }

运行结果是____________________。

4、

#include <stdio.h> main() { int a[9]={1,2,3,4,5,6,7,8}; int *p=a; int sum=0; for(;p<a+8;p++) if(*p%2==0) sum=sum+*p; printf("%d",sum); }

运行结果是____________________。

5、

#include <stdio.h> void f(int *q) { int i; for(i=0;i<3;i++) (*q)--; } main() { int a[5]={8,7,6},i; f(a); for(i=0;i<3;i++) printf("%d",a[i]); }

运行结果是____________________。

五、程序填空

下面的程序从文本文件test.txt逐个读入字符,并显示在屏幕上。

#include <stdio.h> #include <stdlib.h> main() { FILE *fp; char ch,*filename="test.txt"; if((fp= _____ 1 _____(filename,"r"))==NULL) { printf("cannot open file\n"); exit(0); } while(! _____ 2 _____(fp)) { ch=fgetc(fp); putchar(ch); } fclose(fp); }

以下程序的功能是:读入一行字符,以回车结束,按输入时的逆序使用单向链表进行存储,先输入的位于链表尾,然后再遍历输出链表,如输入abc↙,链表结构如图所示,程序最后输出cba.

#include "stdlib.h" #include "stdio.h" struct node { char value; struct node *link; }; int main() { struct node *top,*p; char c; top=NULL; while((c=getchar())_____ 3 _____) { p=(struct node *)malloc(sizeof(struct node)); p->value=c; p->link=top; _____ 4 _____ } while(top) { p=top; top=top->link; putchar(_____ 5 _____); } return 0; }

六、改错

矩阵乘法是指两个矩阵相乘,生成一个新矩阵,其乘法公式如下:

以下程序实现了两个2×2的矩阵相乘,只对程序中的2行代码进行修改,使其可以正确运行。

#include <stdio.h> #define M 2 #define N 2 #define K 2 int main() { int a[M][K]= {1,-1,0,2}; int b[K][N]= {4,0,2,5}; int c[M][N]; int i,j,l; for(i=0; i<M; i++) { for(j=0; j<N; j++) { for(l=0; l<K; l++) { c[i][j]=a[i][l]*b[l][j]; } } } return 0; }

某班举行歌唱比赛,赛后需要显示成绩最高的选手名字和成绩,以下程序实现了查找得分最高选手的功能,只对程序中的3行代码进行修改,使其可以正确运行。

#include <stdio.h> #define MAX 3 struct PLAYER { char *name; float score; } Player; int main() { Player players[]= {{"丁一",90.3}, {"陈二",95.8}, {"张三",89.6}}; Player *player; Player topPlayer=players[0]; for(player=players; player<players+MAX;player++) { if(player.score>topPlayer.score) { topPlayer=player } } printf("Top Player is %s,score is %6.2f",topPlayer.name,topPlayer.score); return 0; }

七、程序设计题

折半查找也称为二分查找,适用于有序数组,其查找的基本过程是:先确定待查记录所在的范围,然后逐步缩小范围,直到找到,或找不到该记录为止。假定数组按照升序排列,对于给定值K,从数组中间位置开始比较,如果当前数据元素的值等于k,则查找成功。否则,若k小于当前数据元素的值,则在数组的前半部继续查找;反之,则在数组的后半部继续查找,依次重复进行,直至获得查找成功或不成功的结果。请补充完成下列程序中的相应部分:

#include <stdio.h> #include <stdlib.h> int main() { int BinarySearch(int key,int data[]); int key=0; printf("请输入要查找的数:"); scanf("%d",&key); int data[10]= {1,3,5,7,8,9,13,18,22,28}; int ret=BinarySearch(key,data); if(ret>=0) printf("\n %d 是数组中的第%d个数\n",key,ret+1); else printf("\n %d在数组中未找到!\n",key); system("pause"); return 0; } int BinarySearch(int key,int data[]) { int low=0,high=9,middle; while(______1______) /*查找结束条件*/ { int middle=______2______; /*获取数组中间位置*/ if(______3______) /*如查当前数据元素的值等于k*/ return middle; /*返回所在位置*/ if(key<data[middle]) /*如果若k小于当前数据元素的值*/ ______4______; /*在数组的前半部继续查找*/ else ______5______; /*在数组的后半部继续查找*/ } return -1; /*返回查找不成功标记*/ }

参考答案:

一、选择题

1—3 B、D、C

二、填空题

1、strlen()、strcmp()、#define 、#include

三、综合应用题

1、i<=3 2、'A'+i 3、who!='D' && who!='B'

4、sum==3 5、 876

四、写程序结果

1、 1 2、 36687 3、 36 4、 20

5、 576

五、程序填空

1、 fopen 2、feof

3、!='\n' 4、top=p; 5、p->value

六、改错

1、

L09 int c[M][N]={0};

L17 c[i][j]+=a[i][l]*b[l][j];

2、

L03 typedef struct PLAYER

L15 if(player->score>topPlayer.score)

L17 topPlayer=*player;

七、程序设计题

1、low<=high 2、 (low+high)/2

3、 key==data[middle] 4、high=middle-1

5、 low=middle+1