0
点赞
收藏
分享

微信扫一扫

2022年湖南省对口高考真题

一、选择题

1、

下列C语言表达式__________的值不等于1。

A.123/100           B.365%5             C.abs(-1)           D.0||1

2、

对C语言程序,以下说法正确的是__________。

A.main函数是主函数,一定要写在最前面

B.程序总是从main函数开始执行的

C.程序中只能调用库函数,不能自己定义函数

D.函数参数只能是整型

3、

若“int a[9],*p=a;”,并在以后的语句中未改变p的值,则不能表示a[2]地址的是__________。

A.p+2               B.a+2               C.p+=2              D.a+=2

二、程序填空题

1、

学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人,编写一个程序求该校的学生人数,并输出该人数。

#include <stdio.h>
int main()
{
    int i;
    for(i=900;i<=1100; ____ 1 ____ ) 
    {
        if( ____ 2 ____ && i%7==3 && i%3==1)
        {
            printf("%d\n", ____ 3 ____);
            ____ 4 ____
        }
    }
}

三、写程序结果

1、

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

#include <stdio.h>
int main()
{
    signed char c=128;
    int i=10;
    (c+i>10)?puts("sum>10"):puts("sum<=10");    
    return 0;
}

2、

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

#include <stdio.h>
int main()
{
    unsigned int V=7;
    int num=10;
    while(V)
    {
        V&=(V-1);
        num++;
    }
    printf("num=%d",num);
    return 0;
}

3、

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

#include <stdio.h>
int fun(int m)
{
    int n=0;
    m/=2;
    if(m)
    {
        n*=m;
        return (fun(m-2));
    }
    else
        return n;
}
int main()
{
    int i;
    for(i=0;i<2;i++)
        printf("fun(%d)=%d+",4+i,fun(4+i));
    return 0;
}

4、

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

#include <stdio.h>
#include <string.h>
int main()
{
    char a[]="ABCD",b[]="BAD";
    int i,j;
    for(i=0;i<strlen(b);++i)
    {
        for(j=0;(j<strlen(a)) && (a[j]!=b[i]);++j);
        if(j>=strlen(a))
        {
            printf("No");
            return 0;
        }
    }
    printf("Yes");
    return 0;
}

5、

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

#include <stdio.h>
int main()
{
    int a[]={12,34,54,32};
    int N=sizeof(a)/sizeof(int);
    int i,j,p,t;
    for(i=0;i<N-1;i++)
    {
        p=i;
        for(j=i+1;j<N;j++)
            if(a[p]>a[j])
                p=j;
        if(p!=i)
        {
            t=a[i];a[i]=a[p];a[p]=t;
        }
    }
    for(i=0;i<N;i++)
        printf("%d+",a[i]);
    return 0;
}

四、程序填空

1、

下列程序的功能是从存放成绩的二维数组中,找到并输出最大值及其所在行号与列号。

运行结果为:“max=92,row=3,col=4”。

#include "stdio.h"
#define CLASS 3
____ 1 ____     /*FindMax()函数声明*/
int main()
{
    int score[CLASS][4]={81,72,73,64,65,86,77,88,91,90,85,92};
    int maxScore,row,col; /*maxScore存放最大值,row指所在行号,col指所在列号*/
    maxScore=____ 2 ____;
    printf("max=%d,row=%d,col=%d\n",maxScore,row+1,col+1);
    return 0;
}
int FindMax(int*p,int m,int n,int *pRow, int*pCol)
{
    int i,j,max;
    max=____ 3 ____;
    *pRow=0;
    *pCol=0;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            if(____ 4 ____)
            {
                max=p[i*n+j];
                *pRow=i;
                *pCol=j;
            }
        }
    }
    ____ 5 ____
}

五、改错

1、

下列程序的功能是:从已经排好序的数组中,找出首次满足其和等于给定值的两个数后,即终止查找。程序执行的结果是:“1,15”。以下程序只允许修改三行

#include "stdio.h"
int main()
{
    int a[]={1,2,4,5,7,11,12,15};
    int sum=16;
    int begin=1;
    int end=8-1;
    while(begin<end){
        long currSum;
        if(currSum==sum){
            printf("%d,%d\n",a[begin],a[end]);
            continue;
        }
        else{
            if(currSum<sum)
                begin++;
            else
                end--;
        }
    }   
}

2、

下列程序的功能是:将3个学生的记录(姓名与成绩)存入文件fd.dat中。以下程序只允许修改两行

#include "stdio.h"
#define N 3
#define LEN sizeof(STU)
typedef struct node{
    char name[10];
    int score;
}STU;
int main(){
    file fp;
    STU s[N];
    int i=0;
    fp=fopen("fd.dat","wb");
    for(;i<N;i++){
        scanf("%s%d",s[i].name,&s[i].score);
        fread(s[i],LEN,1,fp);
    }
    fclose(fp);
}

六、程序设计题

1、

下列程序的主函数中,通过函数调用把N个人的姓名与温度数据放入一个带头节点的链表中,h指向链表的头节点。函数Check()的功能是:找出体温大于37.5的结点(除头结点外),并显示相关信息。请补充程序,使其完整。

#include "stdio.h"
#include "stdlib.h"
#define N 5
typedef struct ss
{
    char name[8];/*姓名*/
    float t;/*温度*/
    ____ 1 ____;
}NODE;
void Check(NODE *h)/*把温度大于37.5的结点信息显示出来*/
{
    int sum=0;
    NODE *p;
    ____ 2 ____;
    while(p!=NULL)
    {
        if(____ 3 ____)
            printf("%s,%3.1f\n",p->name,p->t);
        p=p->next;
    }
} 
NODE *creatlist(int n)  /*创建链表*/
{
    NODE *h,*p,*s;
    int i;float temp;
    h=p=(NODE*)malloc(sizeof(NODE));
    for(i=1;i<n;i++)
    {
        s=(NODE*)malloc(sizeof(NODE));
        printf("input name=");
        scanf("%6s",s->name);
        printf("input t=");
        scanf("%f",&temp);
        s->t=temp;
        s->next=p;
        ____ 4 ____;
        p=p->next;
    }
    ____ 5 ____;
    return h;
} 
void OutList(NODE *h)   /*输出链表*/
{
    NODE *p;
    p=h->next;
    printf("\n\n The LIST:\n\n HEAD");
    while(p)
    {
        printf("->%6s,%3.1f",p->name,p->t);
        p=p->next;
    }
    printf("\n");
}
int main()
{
    NODE *head;
    int sum;
    system("CLS");
    head=creatlist(N);
    OutList(head);
    Check(head);
    return 0;
}

参考答案:

一、选择题

1—3    B、B、D

二、程序填空题

1、i++          2、i%5==2           3、i            4、break;

三、写程序结果

1、sum<=10              2、num=13           3、fun(4)=0+fun(5)=0+

4、Yes                  5、12+32+34+54+

5、987654321

四、程序填空

1、int FindMax(int*p,int m,int n,int *pRow, int*pCol);

2、FindMax(&score[0][0],CLASS,4,&row,&col)          3、p[0] 或者

4、max<p[i*n+j]                                     5、return max;

五、改错

1、

L06         int begin=0;

L09         int currSum=a[begin]+a[end];

L12         break;

2、

L09     FILE *fp;

L15     fwrite(&s[i],LEN,1,fp);

六、程序设计题

1、struct ss *next              2、p=h->next            3、p->t>37.5

4、p->next=s                    5、p->next=NULL

注,创建链表的循环少了一次

举报

相关推荐

0 条评论