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

2012年湖南省对口高考真题

来源:互联网 收集:自由互联 发布时间:2023-09-06
一、选择题 1、 以下正确的C语言自定义标识符是__________。 A.int B.a.3 C._7c D.5d_ 2、 已知i=3,执行j=i++后,i和j的值分别为__________。 A.i=4j=2 B.i=4 j=3 C.i=3 j=3 D.i=3 j=2 3、 C语言中,

一、选择题

1、

以下正确的C语言自定义标识符是__________。

A.int             B.a.3             C._7c             D.5d_

2、

已知i=3,执行j=i++后,i和j的值分别为__________。

A.i=4   j=2        B.i=4 j=3          C.i=3   j=3        D.i=3 j=2

3、

C语言中,以下语句能跳过循环体中未执行的语句,接着执行本循环下一次迭代的语句是__________。

A.空语句          B.break语句       C.return语句      D.continue语句

二、填空题

1、

C语言中,文件操作fopen函数的原型为FILE * fopen(char  *filename,  char  *mode),用于打开一个指定文件,若成功则返回一个与之关联的流,否则返回_____ 1 _____;代码片段FILE * fp=fopen("C:\\test.dat","a")的含义是以_____ 2 _____的方式打开路径"C:\\test.dat"对应的文件,当访问的文件是二进制文件时,还需要在字符串“a”后增加一个字符_____ 3 _____,以上代码片段对应的关闭文件的C语言代码是_____ 4 _____。

三、综合应用题

1、

30人参观博物馆共花50美元,其中成年男子门票为3美元/人,成年女子2美元/人,小孩1美元/人。编程输出成年男子、成年女子和小孩人数的所有组合。

题目分析如下:

设x,y,z分别代表成年男子、成年女子和小孩人数。按题目要求,可得下面方程:

x+y+z=30        (1)

3x+2y+z=50      (2)

用程序求此不定方程的非负整数解,可先通过(2)-(1)式得:

2x+y=20         (3)

由(3)式可知,x变化范围是______1______

根据以上分析编写程序如下:

#include <stdio.h>
main()
{
    int x,y,z;      /*x,y,z分别代表成年男子、成年女子、小孩人数*/
    printf("Men   Women   Chlidren\n");
    for(x=0;______2______;x++)
    {
        ______3______;          /*按照(3)式根据x求y*/
        ______4______;         /*由(1)式求得z*/
        if(3*x+2*y+z==50)       /*当前得到的一组解是否满足式(2)*/
            printf("%d  %d  %d\n",x,y,z);
    }
}

四、写程序结果

1、

#include <stdio.h>
main()
{
    int a=3,b=4;
    a%=b+=a+=(a+b);
    printf("%d,%d",a,b);
}

运行结果是____________________。

2、

#include <stdio.h>
main()
{
    int x=2,y=7,z=5;
    switch(x>2)
    {
        case 1:
            switch(y>0)
            {
                case 1: printf("1");break;
                case 2: printf("2");break;
            }
        case 0:
            switch(z==5)
            {
                case 0: printf("3");break;
                case 1: printf("4");break;
                default:printf("5");break;
            }
        default:printf("6");
    }
}

运行结果是____________________。

3、

#include <stdio.h>
main()
{
    int a=8,y=0;
    do
    {
        a+=2;
        y+=a;
        if(y>30)
            break;
    }
    while(a=10);
    printf("a=%d  y=%d\n",a,y);
}

运行结果是____________________。

4、

#include <stdio.h>
int func(int a,int b)
{
    return a=a+b,a%b;
}
main()
{
    int x=9,y=7,z=3,rels;
    rels=func(func(x,y),z);
    printf("%d\n",1<<rels);
}

运行结果是____________________。

五、程序填空

1、

下面程序输出x,y,z三个数中的最大值。

#include <stdio.h>
int main()
{
    int x=3,y=7,z=6;
    int a,b;
    a=x<y?_____ 1 _____;
    b=a<z?_____ 2 _____;
    printf("%d",b);
    return 0;
}

2、

下面程序接受键盘上的输入,直到按回车键为止,然后将输入的字符串输出,输出时如果原输入字符是英文大写字母则转成小写字母输出,如果是小写字母则转成大写字母输出,如果有连续的一个以上的空格时只输出一个空格。

#include<stdio.h>
main()
{
    char cx,pre='\0';
    while(_____ 3 _____!='\n')
    {
        if(cx!=' ')
            if(cx>='a'&&cx<='z')
                putchar(cx-32);
            else
                if(cx<'Z'&&cx>='A')
                    _____ 4 _____;
                else putchar(cx);
        else if(pre!=' ')
                putchar(cx);
        _____ 5 _____;
    }
}

六、改错

1、

以下程序用于输入两个学生的姓名和成绩,然后输出这两个学生的平均成绩,运行结果如图7所示。程序中存在3处错误。(注:严格意义上是四个错误,找出错误比较大的三个)。

2012年湖南省对口高考真题_2012年对口高考

#include <stdio.h>
define  N 2
struct Student
{
    char name[4];
    float score;
};
main()
{
    struct Student  stu[N];
    int i=0;
    for(; i<N; i++)
    {
        printf("input scores of student%d:\n",i+1);
        printf("name:");
        scanf("%s",stu[i].name);
        printf("score:");
        scanf("%f",stu[i].score);
    }
    float rels=0;
    for(; i<N; i++)
    {
        rels+=stu[i].score;
    }
    printf("avg  score is:%3.2f",rels/N);
}

2、

以下程序将数组中元素逆序输出,运行结果如下所示。程序中存在2处错误。

    dd    cc    bb    aa    

#include <stdio.h>
int main()
{
    char *array[]= {"aa","bb","cc","dd"};
    char (**pt)[];
    int j;
    pt=array+3;
    for(j=3; j>=0; j--)
        printf("%s  ",*(pt)[j]);
}

七、程序设计题

1、

Merge函数用于将两个升序的链表head1和head2合并成一个链表,并保持合并后链表依然升序。排序的依据为结构体类型Node中的data成员,合并中不得删除节点。下面给出Merge函数的主体框架,在空出的五个位置补充该主体框架缺失的代码段。

注意:不能定义新的变量,可不用已定义的某些变量。

#include "stdio.h"
typedef  struct Node
{
    int  data;
    struct Node  *next;
} Node;
Node  *Merge(Node *head1,Node  *head2)
{
    if(head1==NULL)
        return head2;
    if(head2==NULL)
        return head1;
    Node *head=NULL;   //head指针用于指向合并后链表的头结点
    Node *p1=NULL;
    Node *p2=NULL;
    if(head1->data<head2->data)
    {
        head=head1;
        _____ 1 _____;
        p2=head2;
    }
    else
    {
        head=head2;
        _____ 2 _____;
        p1=head1;
    }
    Node *pcurrent=head;
    while(p1!=NULL&&p2!=NULL)
    {
        if(p1->data<=p2->data)
        {
            pcurrent->next=p1;
            _____ 3 _____;
            p1=p1->next;
        }
        else
        {
            pcurrent->next=p2;
            _____ 4 _____;
            p2=p2->next;
        }
    }
    if(p1!=NULL)
        _____ 5 _____;
    if(p2!=NULL)
        pcurrent->next=p2;
    return head;
}

参考答案:

一、选择题

1—3    C、B、D

二、填空题

1、NULL 、追加、b、fclose(fp)

三、综合应用题

1、[0,10]  或者  x>=0 and x<=10     2、x<=10        3、y=20-2*x     4、z=30-x-y

四、写程序结果

1、 10,14           2、 46          3、 a=12  y=34          4、 4

五、程序填空

1、 y:x             2、z:a

3、(cx=getchar())   4、putchar(cx+32)      5、pre=cx;

六、改错

1、

L02     #define  N 2    //本语句非逻辑错误,可能为打印错误

L18     scanf("%f",&stu[i].score);

L21     for(i=0; i<N; i++)

L25     printf("avg  score is:%04.1f",rels/N);

2、

L05     char **pt;

L09     printf("%s  ",*pt--);

L09     printf("%s  ",pt[j-3]);//也可以

七、程序设计题

1、 p1=head1->next     2、 p2=head2->next

3、 pcurrent=p1         4、 pcurrent=p2

5、 pcurrent->next=p1

补充测试头文件

int main()
{
    Node a[5]={{6,&a[3]},{2,&a[4]},{10,NULL} ,{8,&a[2]},{4,&a[0]}};
    Node b[5]={{5,&b[3]},{1,&b[4]},{9,NULL} ,{7,&b[2]},{3,&b[0]}};
    Node *h1=&a[1],*h2=&b[1],*h;
    h=Merge(h1,h2);
    while(h)
    {
        printf("%d   ",h->data);
        h=h->next;
    }
}

 

 

 

 

 

 

 

 

网友评论