当前位置 : 主页 > 编程语言 > c语言 >

2013年湖南省对口高考真题

来源:互联网 收集:自由互联 发布时间:2023-08-28
一、选择题 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、 假设有:floata=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

二、填空题

1、

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

三、综合应用题

1、

民警小张在某个案件中带回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("没有找到符合条件的人");
}

四、写程序结果

1、

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

运行结果是____________________。

2、

#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时,运行结果是____________________。

3、

#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]);
}

运行结果是____________________。

五、程序填空

1、

下面的程序从文本文件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);
}

2、

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

2013年湖南省对口高考真题_2013年对口高考

#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;
}

六、改错

1、

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

2013年湖南省对口高考真题_2013年对口高考_02

以下程序实现了两个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;
}

2、

某班举行歌唱比赛,赛后需要显示成绩最高的选手名字和成绩,以下程序实现了查找得分最高选手的功能,只对程序中的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;
}

七、程序设计题

1、

折半查找也称为二分查找,适用于有序数组,其查找的基本过程是:先确定待查记录所在的范围,然后逐步缩小范围,直到找到,或找不到该记录为止。假定数组按照升序排列,对于给定值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   

上一篇:整数二分模板
下一篇:没有了
网友评论