0
点赞
收藏
分享

微信扫一扫

2020年湖南省对口高考真题

一、选择题

1、

在C语言中,用__________表示逻辑值“真”。

A.T                B.F                C.非零整数         D.0

2、

执行“int a=3;a+=a^2;”后,则a的值是__________。

A.12               B.9                C.6                D.4

3、

若“int a[2][3]={1,2,3,4,5,6};”,则不能访问a[1][2]值的是__________。

A.*(a[1]+2)        B.*(*(a+1)+2)      C.*(a+2)           D.*(&a[1][0]+2)

二、程序填空题

1、

7个待测样本中有且仅有一个样本指标超标,为了找到这唯一超标样本,采用3个检测试剂盒进行检测。方法如下:把7个样本按1,2,3,…7进行编号,并将其编号转换为相应的3位二进制数;把可重复使用的3个检测试剂盒进行编号,分别对应3位二进制数的每一位;如果样本编号3位二进制中的某位为1,就用相应二进制位(编号)的试剂盒进行检测:按上述方法对每一个待测样本进行检测;最后,检测为阳性(设定值为1)试剂盒编号组成的二进制数就是超标样本的编号。下面程序功能就是完成上述检测方法并输出超标样本编号即:“flag=7”。请补充完整。

#include<stdio.h>
int main()
{
    int sample[8]={0,0,0,0,0,0,0,1};/*样本编号第7个数值为1表明其超标*/ 
    int test[3]={0};/*检测试剂盒编号,test[0]对应二进制的最低位,test[2]对应最高位*/ 
    int i,j,k,base=1,flag=0;
    for(i=1;i<=7;i++)
    {
        _____ 1 _____ ;
        j=0;  
        while( _____ 2 _____ )
        {
            if(k%2==1)
                test[j]=test[j]||sample[i];
            _____ 3 _____ ;
            j++;
        }
    }
    for(i=0;i<3;i++)
    {
        flag+=test[i]*base;
        _____ 4 _____ ;
    }
    printf("flag=%d", flag);
}

三、写程序结果

1、

下列程序的运行结果是__________。

#include "stdio.h" 
main()
{
  unsigned int a=6;
  int b=-20; 
	(a+b>6)?puts("sum>6"):puts("sum<=6");
}

2、

下列程序的运行结果是__________。

#include"stdio.h"
int main()
{
    int a[]={118,65,128};
    int i;
    for(i=0;i<3;i++)
        printf("%c",(a[i])&(a[i]-1)?'N': 'Y');
}

3、

下列程序的运行结果是__________。

#include"stdio.h"
int fun(int n)
{
    if(n>0)
        return(n*fun(n-2));
    else
        return 1;
}
int main()
{ 
    int x; 
    x=fun(5);
    printf("x=%d\n",x);
    return 0;
}

4、

下列程序的运行结果是__________。

#include"stdio.h"
int main()
{
    char s1[]="I love China"; 
    char s2[]="I love"; 
    char *str1=s1,*str2=s2; 
    int answer=0;
    while(!(answer=*str1-*str2)&&*str2)
    { 
        str1++;
        str2++;
    }
    if(answer<0)
        answer=1; 
    else if(answer>0)
        answer=-1;
    printf("answer=%d\n",answer);
    return 0;
}

5、

下列程序的运行结果是__________。

#include "stdio.h" 
int main()
{
    int a[]={89,88,76,70,68,58};
    int x=70,mid,pos=-1,find=0,low=0,high=5; 
    while(!find&low<=high)
    {
        mid=(high+low)/2;
        if(x>a[mid])
            low=mid+1; 
        else 
            if(x<a[mid])
                high=mid-1;
            else
            {
                pos=mid;
                find=1;  
            }
    }
    printf("pos=%d\n",pos);
    return 0;
}

四、程序填空

1、

下面程序的功能是:调用 Sort()排序函数,通过传递相应参数用选择法按升序(或降序)对数组中的数进行排序。假设数组中存储数据为{88 ,67,78,56,90},若升序排序则结果为{56,67,78,88,90},若降序排序则结果为{90,88,78,67,56}。

#include<stdio.h>
_____ 1 _____ 5
_____ 2 _____ ;//排序函数声明*
int Ascending(int a,int b);//升序* 
int Descending(int a,int b);//降序* 
int main()
{
    int i;
    int score[N]={88,67,78,56,90};
    _____ 3 _____ ;//*升序排序*
    printf("The Ascending Sort is: ");
    for(i=0;i<5;i++)
        printf("%d ",score[i]);
    Sort(score,5,Descending);//降序排序
    printf("The Descending Sort is:");
    for(i=0;i<5;i++)
        printf("%d ",score[i]);
    return 0;
}
void Sort(int score[],int n,int(*compare)(int a,int b))
{ 
    int i,j,k; 
    int t1,t2;
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
            if( _____ 4 _____ )
                k=j;
        if(k!=i)
        {
            t1=score[k];score[k]=score[i];score[i]=t1;
        }
    }
}
int Ascending(int a,int b)
{
    _____ 5 _____ ;
}
int Descending(int a,int b)
{
    return a>b;
}

五、改错

1、

下列给定程序中函数f的功能是:根据整型形参(x,t),计算公式前几项的值。

2020年湖南省对口高考真题_2020年对口高考

例如,若x=2,n=10;则输出为:sin(2)=0.90937。以下程序只允许修改三行。

#include "stdio.h"
double f(int x, int n)
{
    int i,j;
    long double t,xt;
    int sign;  
    double s=0;
    for(i=1;i<n;i=i+2)
    {
        t=1;
        xt=1; 
        for(j=1;j<=i;j++)
        { 
            t=t*j;
            xt=xt*xt;    
        }
        s+=xt/t; 
        sign=-sign;
    }
    return s;
}
int main()
{
    printf("sin(%d)=%f\n",2,f(2,5));
    return 0;
}

2、

下面程序的功能是把一个文件的内容拷贝到另一个文件,如果拷贝成功,则提示“File Copy Success!”。以下程序只允许修改两行。

#include"stdio.h"
int main()
{
    FILE *fpSrc;//源文件*
    FILE *foDes;//目标文件* 
    int ch;
    if((fpSrc=fopen("src.txt","r")==NULL)
    {
        printf("File Cannot Open!");
        exit(0);
    }
    if((fpDes=fopen("des.txt","r")==NULL)
    {  
        printf("File Cannot Open!");
        exit(0);
    }
    while((ch=fgetc(fpSrc)!=EOF) 
        if((fputs(ch,fpSrc)==EOF)    
            return 0;
    printf("File Copy Success!");
    return 0;
}

六、程序设计题

1、

下面程序中定义了三个函数,其功能分别是添加链表结点、显示链表结点与删除链表结点。如果添加的链表结点数据为“11,22,33,44,55”则显示链表为“11→22→33→44→55→End”如果要删除数据33的结点则显示链表为“11→22→44→55→End”请补充程序。

#include"stdio.h"
#include"stdlib.h"
struct Node
{ 
    int data;
    _____ 1 _____
};
struct Node *AppNode(struct Node *head);//添加结点* 
void DisNode(struct Node *head);//*显示结点*
struct Node *DelNode(struct Node *head,int nodeData);//删除结点* 
int main()
{
    int i=0;
    struct Node *head=NULL;
    for(i=0;i<5;i++)
        head=AppNode(head);
    DisNode(head);
    DelNode(head,33);//*删除数据为33的结点*
    DisNode(head);
}
struct Node *AppNode(struct Node*head)
{ 
    struct Node *p=NULL;
    _____ 2 _____
    int data;
    _____ 3 _____
    if(p==NULL)
    {
        printf("No enough memory!"); 
        exit(0);
    }
    if(head==NULL)
        head=p;
    else
    {
        while(pr->next!=NULL)
            pr=pr->next;
        pr->next=p;
    }
    pr=p;
    printf("input node data: ");
    scanf("%d",&data);
    pr->data=data;
    pr->next=NULL; 
    return head;
}
void DisNode(struct Node *head)
{ 
    struct Node*p=head; 
    while(p!=NULL)
    {
        printf("%d->",p->data); 
        p=p->next;
    }
    printf("End\n");
}
struct Node *DelNode(struct Node *head, int nodeData)
{
    struct Node *p=head,*pr=head;
    if(head==NULL)
    {
        printf("No Linked Table!\n"); 
        return(head);
    }
    while(nodeData!=p->data&&p->next!=NULL)
    {
        pr=p;
        p=p->next;
    }
    if( _____ 4 _____ )
    {
        if(p==head)
            head=p->next;
        else
            _____ 5 _____
        free(p);
    }
    else
        printf("The Node has not found!"); 
    return head;
}

参考答案:

一、选择题

1—3    C、D、C

二、程序填空题

1、k=i                  2、k            3、k=k/2        4、base=base*2

三、写程序结果

1、sum>6                2、NNY          3、x=15         4、answer=-1          

5、pos=-1

四、程序填空

1、#define N                  

2、void Sort(int score[],int n,int(*compare)(int a,int b))

3、Sort(score,5,Ascending)             4、!(*compare)(score[k],score[j])

5、return a<b

注:第四空如果改变参数次序,可以不要取反

五、改错

1、

L06         int sign=1;  

L15         xt=xt*x;   

L17         s+=xt/t*sign; 

2、

L12     if((fpDes=fopen("des.txt","w")==NULL)

L18     if((fputs(ch,foDes)==EOF)  

六、程序设计题

1、struct Node * next;                 2、struct Node *pr=head;

3、p=(struct Node*)malloc(sizeof(struct Node));

4、if(nodeData==p->data )               5、pr->next=p->next;

 

举报

相关推荐

0 条评论