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

2015年湖南省对口高考真题

来源:互联网 收集:自由互联 发布时间:2023-08-28
一、选择题 1、 在C语言中,下列叙述正确的是__________。 A.空字符串不占用内存,其内存空间大小是0 B.可以用关系运算符比较字符串的大小 C.连续两个双引号是合法的字符串常量 D.连续

一、选择题

1、

在C语言中,下列叙述正确的是__________。

A.空字符串不占用内存,其内存空间大小是0

B.可以用关系运算符比较字符串的大小

C.连续两个双引号是合法的字符串常量

D.连续两个单引号是合法的字符常量

2、

若有语句:int x=12,y=8,z;  z=0.8+x/y; 执行语句后z的值为__________。

A.1.8               B.1                 C.2                 D.2.4

3、

若有语句: int a,b;  scanf("%d;%d",&a,&b); 如果把整数4赋给a,把整数5赋给b,应该输入__________。

A.4  5              B.4,5               C.45                D.4;5

二、程序填空题

1、

输入一行文字,找出其中大写字母、小写字母、空格、数字及其它字符各有多少。

#include "stdio.h"
int main()
{
    char str[40],*p,sl=0,s2=0,s3=0,s4=0,s5=0;
    gets(str);
    p=str;
    while(*p)
    {
        if( _____ 1 _____ )  sl++;
        else if( _____ 2 _____ )  s2++;
        else if( _____ 3 _____ )  s3++;
        else if( _____ 4 _____ )  s4++;
        else s5++;
        p++;
    }
    printf("大写字母:%d 小写字母:%d 数字:%d 空格:%d 其它:%d\n",s1,s2,s3,s4,s5);
    return 0;
}

三、写程序结果

1、

#include "stdio.h"
int main()
{
    int i=0,a=0;
    while(i<30)
    {
        for(;;)
            if(i%10==0) break;
            else i--;
        i+=11;
        a+=i;
    }
    printf("%d",a);
    return 0;
}

运行结果是____________________。

2、

#include
"stdio.h"
int main()
{
    int a[3][3]= {{0,1},{2,3},{4,5}},i,j,s=0;
    for(i=1; i<3; i++)
        for(j=0; j<=i; j++)
            s+=a[i][j];
    printf("%d",s);
    return 0;
}

运行结果是____________________。

3、

#include <stdio.h>
int fun()
{
    static int x=1;
    x*=2;
    return x;
}
int main()
{
    int i,s=1;
    for(i=1; i<=4; i++)
        s*=fun();
    printf("%d",s);
    return 0;
}

运行结果是____________________。

4、

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{   
    char *p;
    int i;   
	p=(char*)malloc(sizeof(char)*20);
    strcpy(p,"Thank ");   
	for(i=6;i>=0;i--)        
		putchar(*(p+i));
    free(p);
    return 0;
}

运行结果是____________________。

5、

#include <stdio.h>
int main()
{
    FILE *fp;
    int x[6]={0,1,2,3,4,5},i;
    fp=fopen("test.dat","wb");
    fwrite(x,sizeof(int),3,fp);
    rewind(fp);
    fread(x,sizeof(int),3,fp);
    for(i=0; i<6;i++)
        printf("%d",x[i]);
    fclose(fp);
    return 0;
}

运行结果是____________________。

四、程序填空

1、

已知公式如下:

2015年湖南省对口高考真题_2015年对口高考


float func(float x)
{
    if(x<1)
        return x;
    else 
        if( _____ 1 _____ )
        	return x+5;
    	else
            _____ 2 _____;
}

2、

编写函数,通过指针将一个字符串反向。如下程序的输出为:dcba

#include <stdio.h>
void strReverse(char *s)
{
    char c;
    char *p;
    _____ 3 _____;
    while(*p!='\0')
        p++;
    _____ 4 _____;
    while(s<=p)
    {
        c=*s;
        *s=*p;
        s++;
        *p=c;
        _____ 5 _____;
    }
}
int main()
{
    char a[10]="abcd";
    strReverse(a);
    printf("%s",a);
    return 0;
}

五、改错

1、

产生一个0-9之间的随机整数,要求用户猜这个整数。用户输入一个整数,程序判断是否与所产生的随机数相等,由屏幕显式判断结果。如果猜得不对,再次提示输入,进行判断,直到猜出这个数为止。以下程序只允许修改两行。

#include <stdio.h>
#include <math.h>
#include <time.h>
main()
{
    int x,a=-1;
    srand((unsigned)time(NULL));  /*随机种子*/
    x=rand()%10;                /*产生0-9的随机数*/
    while(a!=x)
    {
        scanf("%d",a);
        if(a=x)
            puts("猜对");
        if(a>x)
            puts(“太大,请重试”);
        if(a<x)
            puts(“太小,请重试”);
    }
}

2、

函数convertNum用于实现无符号十进制数到其它进制数的转换,转换结果的每一位以字符存储于字符数组s中(如十进制3转换为二进制后,数组s中存储的字符串为11),参数srclnt为待转换数据,d为转换的目标进制。函数convertNum转换成功返回1,失败返回0。以下程序只允许修改三行。

#include <stdio.h>
#include <stdlib.h>
#define M sizeof(unsigned int)*8
int convertNum(unsigned srclnt,int d,char s[])
{
    static char digits[]="0123456789ABCDEF";
    char buf[M+1];
    int j,i=M;   
	if(d<2||d>16)
    {
        s[0]=’\0';
        return 0;
    }
    buf[i]='\0';
    do
    {       
		buf[--i]=digits[srclnt/d];       
		srclnt=srclnt%d;
    }while(srclnt);   
	for(j=0;buf[i]!=’\0';j++,i++)
    {
       s[j]=buf[i];
    };
    s[j+1]='\0';
    return 1;
}

六、程序设计题

1、

编写程序用于从键盘读取一个字符串,将字符串中所有连续的数字转换为对应的整数并添加到链表中,整个字符串处理完毕后输出链表的内容。如输入为a25re776!jk321ss时,输出为25 776 321

#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct IntData)
struct IntData
{
    long data;
    struct IntData *next;
};
/*将数据为data的新节点插入链表*/
struct IntData *addToList(long data,struct IntData * curTail)
{
    struct IntData *p=(struct IntData *)malloc(LEN);
    p->data=data;
    p->next=NULL;
    if(curTail!=NULL)
        __________ 1 __________
    return p;
}
struct IntData *picklntegersFromStr(char *str)
{
    char ch;
    long data=0;
    /*hasData用于标识当前是否正在处理数字字符*/
    /*isAdd标识处理的整数数据是否被添加到链表*/
    /*isFirst标识是否是添加到链表的第一个数据*/
    int hasData=0,isAdd=0,isFirst=1;
    /*tail指向链尾,head指向链头*/
    struct IntData *head=NULL,*tail=NULL,*p;
    while((ch=*str)!='\0')
    {
        if(ch>='0'&&ch<='9')
        {
            __________ 2 __________
            hasData=1;
            isAdd=0;
        }
        else
        {
            if(hasData&&!isAdd)
            {
                p=addToList(data,tail);
                __________ 3 __________
                if(isFirst)
                {
                    __________ 4 __________
                    tail=p;
                    isFirst=0;
                }
                else
                    tail=p;
                hasData=0;
                isAdd=1;
            }
        }
        str++;
    }
    if(hasData&&!isAdd)
    {
        p=addToList(data,tail);
        if(isFirst)
            __________ 5 __________
    }
    return head;
}
void printList(struct IntData *head)
{
    struct IntData *p=head;
    while(p!=NULL)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
}
int main()
{
    char str[100];
    struct IntData *head=NULL;
    gets(str);
    head=picklntegersFromStr(str);
    printList(head);
    return 0;
}

参考答案:

一、选择题

1—3    C、B、D

二、程序填空题

1、*p>='A' && *p<='Z'           2、*p>='a' && *p<='z'

3、*p>='0' && *p<='9'           4、*p==' ' 或者

三、写程序结果

1、 63          2、 14      3、 1024            4、 □knahT□(□为空格)

5、 012345

分析:此题有问题,因为wb的方式,对于文件同时读写,会无效

改为fp=fopen("test.dat","wb+"); fwrite(x+2,sizeof(int),3,fp);

则答案为:234345

四、程序填空

1、 x>=1 && x<10                    2、 return 8*x*x-32

3、 p=s             4、 p--         5、 p--

五、改错

1、

L11         scanf("%d",&a);

L12         if(a==x)

2、

L17         buf[--i]=digits[srclnt%d];

L18         srclnt=srclnt/d;

L24         s[j]='\0';

第四个问题,此题第23句多了一个;

六、程序设计题

1、curTail->next=p;            2、data=data*10+(ch-'0');

3、data=0;                           4、head=p;

5、head=p;

网友评论