2016 年江西师范大学程序设计(C 语言)考研真题
一、单项选择题(每小题 2 分,共 30 分)
1.对于如下的声明,说法正确的是( )。
float x[300];
float y[75][4];
float z[79];
A.x 比 y 的元素多
B. y 比 x 的元素多
C. y 和 z 的元素一样多
D. x 和 y 的元素一样多
2.对 for(表达式 1;;表达式 3)可理解为( )。
A. for(表达式 1;0;表达式 3)
B. for(表达式 1;表达式 3;表达式 3)
C. for(表达式 1;1;表达式 3)
D. for(表达式 1;表达式 1;表达式 3)
3.以下对一维数组 a 进行正确初始化的语句是( )
A. int a[3]=(0,0,0);
B.int a(3)={0,0,0}
C. int a[]={0,0,0};
D. int a[3]=3*1;
4.对于如下的声明:
struct RecTypel{
int length;
float width;
};
struct RecType2{
int length;
float width;
};
RecTypel myRec;
RecType2 yourRec;
下面语句( )是合法的。
A. myRec.length=yourRec.length;
B. myRec=yourRec;
C. myRec.length=yourRec;
D. myRec=yourRec.length;
5.如下程序片段的输出是( )。
char msg[]="HELP”;
putchar(msg[2]);
A. E
B. L
C. HE
D. HELP
6.C 语言中,运算对象必须是整型数的运算符是( )。
A.%
B./
C.%和/
D.*
7.下面( )不是合法的 C 语言标识符。
A.A
B. long
C._123
D. abc
8.下列各项中,( )是正确的 C 语言字符常量。
A.'k'
B.'kt'
C.'p'
D.'weight'
9.在 C 语言函数中,未指定存储类别的局部变量,其默认的存储类别为( )。
A. static
B. auto
C. extern
D. register
10.若要打开 A 盘上的 user 子目录下名为 abc.txt 的文本文件进行读、写操作,下面
符合此要求的函数调用是( )。
A. fopen("A:(user\abc.txt”,"r”)
B. fopen("A:\user\abc.txt","r+")
C. fopen("A:\user\abc.txt","rb”)
D. fopen("A:\user\abc.txt”,"w”)
11.以下叙述错误的是( )。
A.用户定义的函数中可以没有 return 语句
B.用户定义的函数中可以有多个 return 语句,以便可以调用一次返回多个函数值
C.用户定义的函数中若没有 return 语句,则应当定义函数为 void 类型
D.函数的 return 语句中可以没有表达式
12.设有如下定义“struct sk{ int a;float b;}data,*p;”,若有“p=&data;”,则对 data
中的 a 域的正确引用是( )。
A.(*p).data.a
B.(*p).a
C. p->data.a
D. p.data.a
13.设有定义“ charp[]={'1',’2','3'},*q=p;”,下列不能计算出一个 char 型数据所占字
节数的表达式是( )。
A.sizeof(p)
B.sizeof(char)
C.sizeof(*q)
D.sizeof(p[0])
14.下列叙述错误的是( )。
A.改变函数形参的值,不会改变对应实参的值
B.函数可以返回地址值
C.可以给指针变量赋一个整数作为地址值
D.当在程序的开头包含头文件 stdio.h 时,可以给指针变量赋 NULL
15.下列能正确定义字符串的语句是( )。
A. char str[]=('a'};
B. char str=”x4313";
C. char str=”";
D. char str[]="\0”;
二、填空题(每空 2 分,共 20 分)
1.假设有 char ch='e’;那么
printf("”,(ch>='a'&&ch<='z')?ch-32+1:ch);的运行结果是__________。
2.假定 x 和 y 都是 double 型变量,则表达式 x=2,y=x+3/2 的值是_______。
3.若已有结构定义“struct DATE{ int year;int month;int day;};”,请写出一
条定义语句,该语句定义 d 为上述结构类型变量,并同时为其成员 year、month、day
依次赋初值 2019、10、1:_________。
4.下列函数的功能是_________。
int func(char *s)
{ char *t=s;
while(*t++);
return(t-s);
}
5.执行“x=-1;do{x=x*x;}while(!x);”循环时,循环体将执行_________次。
6.执行语句段“int k=3,s[2];s[0]=k;k=s[1]*10;”后,变量 k 的值为_____。
7.以下函数的功能是求 x 的 y 次方,请填空。
double fun(double x, int y)
{ int i;
double z;
for(i=1,z=x;i
int Func(int n)
{ if(n==0)
return 0;
else if(n==1)
return 1;
else return Func(n-1)+Func(n-2);
}
void main()
{ printf("%n”,Func(6));
}
2.写出下面程序的运行结果。
#include
void main()
{ int k=2;
int s=0;
while(k+2<=8||k==0)
{ k++;
s+=1;
}
printf("%n",s);
}
3.写出下面程序的运行结果。
#include
void main()
{ int i;
int x[5][4]={5,4,0,1,5,7,1,8,6,2,1,1,5,0,9,8,9,1,1,2};
for(i=3;i>=2;i--)
printf(”???,x[i+1][4-i]);
}
4.写出下面程序的运行结果。
#include
void main()
{ int i,j;
int x=0;
for(i=0,j=7;i<=j+1;i+=2)
{ j--;
x++;
}
printf("?n”,x);
}
四、程序填空题(本大题共 4 小题,每空 2 分,共 24 分)
1.下列程序实现用户输入月份(不包括闰年的月份),然后输出该月拥有的天数,例
如输入 7,输出 31,,请填空。
#include
(1)
int main()
{
int days[MONTHS]={31,28,31,30,31,30,31,31,30,31,30,31);
int month;
do{
printf("Input a month:");
(2)
]while(month< 1|| month>12);
printf("The number of days is ?n”,days[___(3) ]);
return 0;
}
m! 2.下列程序计算组合数 c6 请完成程序。 k((m-k))
#include
(1) Fact(unsigned int n)
{
unsigned int i;
unsigned long result = 1;
for(i=2;i<=n;i++)
result *= i;
return (2) ;
int main()
int m,k;
double p;
do{
printf(”Input m,k(m>=k>0):");
scanf("%,&m,&k);
}while(m
(1) (flt,float b,float c)
( if( (2) )return 1;
else return 0;
}
void main()
{ float a, b, c;
scanf
;
if( (3)_) 构成三角形);
else printf(”不能构成三角形\n”);
4.下面函数使输入的字符串按反序存放,例如输入“abcd”,反序后为”dcba”,请完
成程序。
void inverse(char str[])
{ char t;
int i,j;
for(i=0,j=strlen(str);i<(strlen(str)/2);__(1) )
{ t=str[i];
str[i]= _(2) ;
(3) _=t
}
五、程序设计题(1~3 题,每小题 12 分,第 4 小题 16 分,共 52 分)
1.(12 分)已知 50 个人的成绩存放在数组 score 中,编写函数 f(float score[],float
high[]),将高于平均分的人数作为函数返回值,并将高于平均分的成绩存放在 high 数组中。
2.(12 分)编写程序,用
公式求 e 的近似值,直到最后一
项的绝对值小于 10*为止。
3.(12 分)编写程序,将输入的百分制成绩 score,转换成相应的五分制成绩 grade 并输出。
已知转换标准为:
4.(16 分)从键盘任意输入一个正整数,编程计算并输出它的逆序数。例如,输入 1234,输出
4321。