2014年湖南大学招收硕士研究生入学考试试题考试科目名称:829计算机程序设计 总分:150分考生注意:所有答案必须写在答题纸(卷)上,写在本试题上一律不给分。
单项选择题(2*21=42分)以下叙述错误的是_____。A、C语言源程序经过编译后生成后缀名为.obj的目标程序。
B、C语言经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件。
C、用C语言编写的程序成为源程序,它以ASC2代码形式存放在一个文本文件中。
D、C语言中的每条可执行语句和非执行语句最终都将会被转换成二进制的机器指令。
若以下选项中的变量已经正确定义,则正确的赋值语句是_____。A、x1=26.8%3 B、1-2=x2 C、x3=0x12 D、x4=1+2=3
有以下程序,程序运行后输出的结果是_____。main( )
{
int m=3,n=4,x;
x=-m++;
x=x+8/++n;
printf(“%dn”,x);
}
A、3 B、5 C、-1 D、-2
若x和y代表整型数,以下表达式中不能正确表示的数学关系式|x-y|<10的是_____。A、abs(x-y)<10 B、x-y>-10&&x-y<10
C、!(x-y)<-10||!(y-x)>10 D、(x-y)*(x-y)<100
若有说明语句:int a,b,c,*d=&c,则正确从键盘读入三个分别赋给变量a、b、c的语句是_____。A、scanf(“%d%d%d”,&a,&b,d);
B、scanf(“%d%d%d”,&a,&b,&d);
C、scanf(“%d%d%d”,a,b,d);
D、scanf(“%d%d%d”,a,b,&d);
有以下程序,程序运行后输出的结果是_____。main( )
{
int a=3,b=4,c=5,d=2;
if(a>b)
if(b<c)
printf(“%d”,d+++1);
else
printf(“%d”,++d+1);
printf(“%dn”,d);
}
A、2 B、3 C、43 D、44
有如下程序,该程序输出的结果是_____。main( )
{
int x=1,a=0,b=0;
switch(x)
{
case 0:b++;
case 1:a++;
case 2:a++;b++;
}
printf(“a=%d,b=%dn”,a,b);
}
a=2,b=1 B、a=1,b=1 C、a=1,b=0 D、a=2,b=2有如下程序,该程序输出的结果是_____。main( )
{
int i,s=0;
for(i=1,i<10;i+=2) s+=i+1;
printf(“%dn”,s);
}
自然数1-9的累加和 B、自然数1-10的累加和C、自然数1-9中奇数之和 D、自然数1-10中偶数之和
有如下程序main( )
{
int i,sum=0;
for(i=1;i<=3;sum++) sum+=i;
printf(“%dn”,sum);
}
6 B、3 C、死循环 D、0下列叙述中正确的是_____。A、C语言预编译时不检查语法
B、C语言的子程序有过程和函数两种
C、C语言的函数可以嵌套定义
D、C语言中所有的函数都是外部函数
以下能正确定义一维数组的选项是_____。A、int num[ ];
B、#define N 100
int num[N];
C、int num[0...100];
int N=100;int num[N];
设有数组定义:char array[ ]=“China”;则数组array所占有的空间为_____。A、4个字节 B、5个字节 C、6个字节 D、7个字节
若有定义:int *p[3];则以下叙述正确的是_____。A、定义了一个基本类型为int的指针变量p,该变量具有三个指针
B、定义了一个指针数组P,该数组含有三个元素,每个元素都是基类型为int的指针
C、定义了一个名为*p的整型数组,该数组含有三个int类型的元素
D、定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
已定义如下函数fun(char *p2,char *p1)
{
while((*p2=*p1)!=‘ ’)
{p1++;p2++}
}
A、将p1所指的字符串复制到p2所指的内存空间
B、将p1所指的字符串的地址赋给指针p2
C、对p1和p2两个指针所指的字符串进行比较
D、检查p1和p2两个指针所指字符串中是否有‘ ’
设有如下枚举类型定义enum language{Basic=3,Assembly,Ada=100,COBOL,Fortran};
枚举量Fortran的值为_____。
A、4 B、7 C、102 D、103
设有以下说明语句struct ex
{
int x;
float y;
char z;
}example;
则下面的叙述中不正确的是_____。
A、struct是结构体类型的关键字 B、example是结构体类型名
C、x,y,z都是结构体成员 D、struct ex是结构体类型
在C程序中,可以把整型数以二进制形式存放到文件中的函数是_____。A、fprintf函数 B、fread函数 C、fwrite函数 D、fputc函数
有以下程序#include<stdio.h>
int main( )
{
FILE *f;
f=fopen(“filea.txt”,“w”);
fprintf(f,“abc”);
fclose(f);
}
若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt中的内容为_____。
A、helloabc B、bclo C、abc D、abchello
若有以下程序段int r=8;
printf(“%dn”,r>>1);
输出结果是_____。
16 B、8 C、4 D、2设char型变量中x中的值为10100111,则表达式(2+x)^(~3)的值是_____。A、10101001 B、10101000 C、11111101 D、01010101
若有说明语句:char c=‘101’;则变量c是_____。A、包含一个字符 B、包含两个字符 C、包含三个字符 D、说明不合法
程序理解题,阅读下面程序,写出程序结果(5*6=30分)#include<stdio.h>int main( )
{
int a[ ]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{
case 0:switch(a[i]%2)
{case 0:a[i]++;break;
case 1:a[i]--;
}break;
case 1:a[i]=0;
}
for(i=0;i<4;i++)
printf(“%d”,a[i]);
printf(“n”);
}
#include<stdio.h>int main( )
{
int i,n=0;
for(i=2;i<5;i++)
{
do
{
if(i%3) continue;
n++;
}whi1e(!i);
n++;
}
printf(“n=%dn”,n);
}
#include<stdio.h>int main( )
{
int i,j,sum;
for(i=3;i>=1;i--)
{
sum=0;
for(j=1;j<=i;j++)
sum+=i*j;
}
printf(“%dn”,sum);
}
#include<stdio.h>void f(int y,int *x)
{
y=y+*x;*x=*x+y;
}
int main( )
{
int x=2,y=4;
f(y,&x);
printf(“%d %dn”,x,y);
}
#include<stdio.h>int a=5;
fun(int b)
{
static int a=10;
a+=b++;
printf(“%dn”,a);
}
int main( )
{
int c=20;
fun(c);
a+=c++;
printf(“%dn”,a);
}
#include<stdio.h>int main( )
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int b[3]={0},i,j;
for(i=0;i<3;i++)
for(j=0;j<=i;j++)
b[i]=b[i]+a[i][j]*a[j][i];
for(i=0;i<3;i++)
printf(“%d”,b[i]);
}
程序填空题(6*5=30分)以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数。#include<stdio.h>
int main( )
{
int i,j;
for(i=0;__________;i++)
{
j=i*10+6;
if(__________)
continue;
printf(“%d”,j);
}
}
以下程序通过函数SunFun求f(0)f(1)f(2)f(3)…(9)f(10)这十一项之和。其中,f(x)=x*x+1,由F函数实现。#include<stdio.h>
SunFun(int);
F(int);
int main( )
{
printf(“The sum=%dn”,SumFun(10));
}
SunFun(int n)
{
int x,s=0;
for(x=0;x<=n;x++)
s+=F(__________);
return s;
}
F(int x)
{
return (__________);
}
以下程序的功能是删除字符串s中的所有数字字符。void dele(char *s)
{
int n=0,i;
for(i=0;s[i];i++)
if(!(s[i]>=‘0’&&________))
s[n++]=s[i];
s[n]=‘__________’;
}
以下程序用来统计文件中字符的个数,请填空。#include<stdio.h>
int main( )
{
FILE *fp;
1ong num=0L;
if((fp=fopen(“fname.dat”,“r”))==NULL)
{
printf(“open errorn”);
exit(0);
}
whi1e(__________)
{
fgetc(fp);num++;
}
__________;
printf(“character number is %d”,num);
}
建立职工情况链表,每个节点包含的成员为:姓名(name)、工资(salary)。从键盘输入节点中的所有数据,然后依次把这些节点的数据显示在屏幕上。#include<stdio.h>
#include<stdlib.h>
#define N 3
int main( )
{
struct node
{
char name[9];
int sarlay;
struct node *next;
};
struct node *head,*p;
int i;
head=NULL;
for(i=0;i<N;i++)
{
p=(struct node*)malloc(sizeof(struct node));
printf(“Input name:”);
scanf(“%s”,p->name);
printf(“Input salary:”);
scanf(“%d”,&p->salary);
____________________;
head=p;
}
printf(“n”);
p=head;
while(__________)
{
printf(“%s %dn”,p->name,p->salary);
p=p->next;
}
}
编程题(12*4=48分)完成下列各程序中的函数定义(请勿修改主函数main中的语句)。
程序trans的功能是将十进制整数m转换成k进制(2<=k<=9)数的数字输出,例如输入78和8,则应该输出116。#include<stdio.h>
void trans(int m,int k);
int main( )
{
int b,n;
printf(“n Please enter anumber and a base:n”);
scanf(“%d%d”,&n,&b);
trans(n,b);
}
函数fun的功能是:统计跟年龄段的人数并存到b数组中,n个人员的年龄放在n数组中,年龄为1-9的人数存到b[0]中,年龄为10-19的人数存在b[1]中,年龄为20-29的人数存到b[2]中,年龄为30-39的人数存到b[3]中,年龄为40-49的人数存到b[4]中,年龄为50岁以上的人数存到b[5]中,例如:当n数组中的数据为:9、18、27、38、59、33、14、75、38,调用该函数后,b数组中存放的数据应该是:1、2、1、3、0、2。#include<stdio.h>
void fun(int a[ ],int b[ ],int n);
int main( )
{
int i,b[6];
int a[100]={9,18,27,38,59,33,14,75,38};
fun(a,b,9);
for(i=0;i<6;i++)
printf(“%d”,a[i]);
printf(“n”);
}
函数fact的功能是求k!({k<=100),要求使用递归定义该函数,并通过函数名传回主函数,例如:若k=10,则应该输出:3628800。#include<stdio.h>
double fact(int k);
int main( )
{
int b;
printf(“Please input an integer 1ess than 100”);
scanf(“%d”,&b);
printf(“%d!=%.0fn”,b,fact(b));
}
函数deletestr的功能是将在字符串s中出现、而未在字符串t中出现的字符形成一个新的字符串放在u中,u中字符按原来字符串中字符顺序排列,不去掉重复字符。例如:当s=“112345”,t=“2467”时,u中的字符串为“1135”。#include<stdio.h>
#include<string.h>
void deletestr(char *s,char *t,char *u);
int main( )
{
char s[100],t[100],u[100];
printf(“nPlease enter string s:”);
scanf(“%s”,s);
printf(“nPlease enter string t:”);
scanf(“%s”,t);
deletestr(s,t,u);
printf(“The result is:%sn”,u);}
2014年湖南大学招收硕士研究生入学考试试题解析
考试科目名称:829计算机程序设计 总分:150分
考生注意:所有答案必须写在答题纸(卷)上,写在本试题上一律不给分。
一、选择题
DCDCA AADCD BCBAC BCCCDA
二、程序理解题
1、3040
2、n=4
3、1
4、8 4
5、30 25
6、1 33 150
三、程序填空题
1、i<10 j%3
2、x x*x+1
3、s[i]<='9' '


