0
点赞
收藏
分享

微信扫一扫

2023年湖南省对口高考真题

书呆鱼 2023-08-02 阅读 101

一、选择题

1、

下列关于算法的描述中,错误的是__________。

A.算法可以用伪代码、流程图等多种形式描述

B.一个正确的算法必须有输入

C.一个正确的算法必须有输出

D.能用流程图描述的算法,也可用计算机高级语言描述

2、

如用"scanf("%c%c",&c1,&c2)",为字符变量c1和c2分别赋值字符'A'和'B',正确的输入是__________。

A.字符'A'和'B'之间用逗号间隔

B.字符'A'和'B'之间不能有任何间隔符

C.字符'A'和'B'之间可以用回车间隔

D.字符'A'和'B'之间用空格间隔

3、

下列关于文件操作的描述中,错误的是__________。

A. "file *fp;"可定义一个文件指针

B.fputc函数可用于把数据写入到文件

C.fprintf函数可用于把数据写入到文件

D.fputs函数可用于把数据写入到文件

二、程序填空题

1、

一件衣服80元,消费满300元,打九折;消费满500元,打8折。试编程实现以下功能:输入购买衣服件数,输出购买件数和需付金额(元)。

#include <stdio.h>
main()
{
    int s,n;
    _____ 1 _____
    printf("n=");
    scanf("%d",&n);
    s=n*80;
    switch(_____ 2 _____)
    {
        case 0:
        case 1:
        case 2:
            break;
        case 3:
        case 4:
            d=0.9;
            break;
        _____ 3 _____
            d=0.8;
    }
    _____ 4 _____
    printf("n=%d,s=%d\n",n,s);
    return 0;
}

三、写程序结果

1、

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

#include <stdio.h>
main()
{
    int a=2,b=1,c=1;
    for(;a;) 
    {
        b+=a;
        a-=++c;
    }
    printf("%d,%d,%d\n",a,b,c);
    return 0;
}

2、

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

#include <stdio.h>
main()
{
    int s=24,r=1;
    while(s) 
    {
        if(!(s & 0x01))
            r++;
        else
            break;
        s>>=1;
    }
    printf("r=%d\n",r);
    return 0;
}

3、

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

#include <stdio.h>
#define S(X) X*X
main()
{
    int a=10,k=2,m=1;
    a/=S(k+m)/S(k+m);
    printf("%d\n",a);
    return 0;
}

4、

#include <stdio.h>
void fun(char *s,char c)
{
    int i,j,n;
    for(i=0;s[i]!='\0';i++)
        if(s[i]==c)
        {
            n=0;
            while(s[i+1+n]!='\0') n++;
            for(j=i+n+1;j>i;j--) s[j+1]=s[j];
            s[j+1]=c;
            i=i+1;
        }
}
main()
{
    char s[80]="baacda",c='a';
    fun(s,c);
    printf("result:%s\n",s);
    return 0;
}

5、

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

#include <stdio.h>
int max(int x,int y)
{
    return (x>y)?x:y;
}
main()
{
    int A[]={2,-3,8};
    int n=sizeof(A)/sizeof(int);
    int nStart=A[n-1];
    int nAll=A[n-1];
    int i;
    for(i=n-2;i>=0;i--)
    {
        nStart=max(A[i],nStart+A[i]);   
        nAll=max(nStart,nAll);
    }
    printf("max=%d\n",nAll);
    return 0;
}

四、程序填空

1、

有n盏灯,编号为1~n;k个人,k≤n≤100。第1个人把所有灯打开,第2个人按下所有编号为2倍数的灯开关(这些灯将关掉),第3个人按下所有编号为3倍数的灯开关(关掉的灯将打开,开着的灯将关闭),依此类推。问最后有哪些灯开着?

下面程序的功能是:输入n和k,输出开着的灯编号。如有7盏灯,3个人,则输出"1-5-6-7"。

#include <stdio.h>
#include "string.h"
#define maxn 101
int a[maxn]={0};
int main()
{
    int i,j,n,k,_____ 1 _____
    printf("n=");
    scanf("%d",&n); 
    printf("k=");
    scanf("%d",&k);  
    for(i=1;i<=k;i++)
        for(j=i;j<=n;j++)
            if(_____ 2 _____)
                _____ 3 _____
    for(i=1;i<=n;i++)
        if(_____ 4 _____)
        {
            if(first) _____ 5 _____
            else printf("-");
            printf("%d",i);
        }
    printf("\n");
    return 0;
}

五、改错

1、

下列程序的功能是:函数f的功能是:求整数n(n<1000)每个数位上包含1的个数,如:17中各数位包含1的数量为1,112中各数位包含1的数量为2.主函数的功能是求小于N的自然数中,各数位包含1的数量的和。如N=7,执行结果为"iCount=1";如N=12,执行结果为"iCount=5"。以下程序只允许修改三行

#include <stdio.h>
unsigned int f(unsigned int n)
{
    unsigned int iNum=0;
    while(n)
    {
        iNum+=(n%10)?0:1;
        n%=10;
    }
    return iNum;
}
int main()
{
    unsigned int N=7;
    unsigned int iCount=0;
    int i;
    for(i=1;i<=N;i++)
    {
        iCount=f(i);
    }
    printf("iCount=%d",iCount);
}

2、

下面程序功能是计算如下级数,直到最后一项的绝对值小于10-6。以下程序只允许修改两行

1-1/3+1/5-1/7+…

#include <stdio.h>
int main()
{
    double sum=0.0;
    int i;
    for(i=0;;i++)
    {
        double term=1/(i*2+1);
        if(i%2==0)
            sum+=term;
        else
            sum-=term;
        if(term<1e-6)
            continue;
    }
    printf("%.6f\n",sum);
    return 0;
}

六、程序设计题

1、

下列程序的功能是:输入学生信息与三科成绩,并存放在链表中;输出总成绩最高的学生信息及成绩。例如,若学生信息为:“2023001张一明83 92 78;2023002 李小明 85 94 78;2023003 王大明 88 88 78”,则执行程序后,输出总分最高的学生李小明的相关信息。

#include <stdio.h>
#include "stdlib.h"
#define maxNum 3
typedef struct data
{
    char ID[10];    /*存放学号*/
    char name[10];  /*存放姓名*/ 
    int score[3];   /*存放三科成绩*/ 
    struct data *next;
}_____ 1 _____
MYDATA *creatData()
/*创建存放信息的链表*/
{
    MYDATA *p,*q,*h;
    int i;
    int INPUT=0;
    h=q=(MYDATA *)malloc(sizeof(MYDATA));
    while(INPUT++<maxNum)
    {
        p=(MYDATA *)malloc(sizeof(MYDATA));
        printf("input No(7 numbers):");
        scanf("%s",p->ID);
        printf("input name(8 charaters):");
        scanf("%s",p->name);
        printf("input 3 scores:\n");
        for(i=0;i<3;i++)
            scanf("%d",(p->score)+i);
        p->next=p;
        q->next=p;
        _____ 2 _____
    }
    q->next=NULL;
    return h;   
} 
void outData(MYDATA *h) /*输出链表存放的信息*/
{
    MYDATA *p;
    int i;
    p=h->next;
    while(p!=NULL)
    {
        printf("No--%s\n",p->ID);
        printf("Name--%s\n",p->name);
        for(i=0;i<3;i++)
            printf("%d ",(p->score)[i]);
        p=p->next;
        printf("\n\n");
    }
} 
void findMax(MYDATA *h) /*输出总成绩最高的学生信息*/
{
    MYDATA *p;
    int i,pos=0,j=0;
    int maxSum=0;
    p=h->next;
    while(p!=NULL)  
    {
        int sum=0;
        for(i=0;i<3;i++)
            sum+=(p->score)[i];
        if(sum>maxSum)
        {
            maxSum=sum;
            _____ 3 _____
        }
        j++;
        p=p->next;
    }
    _____ 4 _____
    printf("the best score is :\n");
    while(pos--)
        p=p->next;
    printf("No--%s\n",p->ID);
    printf("Name--%s\n",p->name);
    for(i=0;i<3;i++)
        printf("%d ",(p->score)[i]);
    printf("maxSum=%d\n\n",maxSum);
} 
int main()
{
    MYDATA *h;
    h=creatData();
    outData(h);
    _____ 5 _____
    return 0;
}

参考答案:

一、选择题

1—3    B、B、A

二、程序填空题

1、float d=1.0;         2、s/100            3、default :        4、s=s*d;

三、写程序结果

1、0,3,2                2、r=4              3、1

4、result:baaaacdaa     5、max=8

注:第2题若s=20或s=18更好

    第5题最好还要输出nStart

四、程序填空

1、first=1;         2、j%i==0           3、a[j]=!a[j];     

4、a[i]==1          5、first=!first; 或者 first=0;

五、改错

1、

L07         iNum+=(n%10==1)?1:0;

L08         n/=10;

L19         iCount+=f(i);

注:若19行按照如下功能修改也可以,但是没有完全按照题意,故不要改第4行

L04         static unsigned int iNum=0;

2、

L08     double term=1.0/(i*2+1);//double term=1/(i*2+1);

L14     break;//continue;

六、程序设计题

1、MYDATA;              2、q=p;                 3、pos=j;

4、p=h->next;           5、findMax(h);

举报

相关推荐

0 条评论