2018 年江西师范大学程序设计(C 语言)考研真题
一、单项选择题(每小题 2 分,共 30 分)
1、组成 C 程序的若干函数在源程序文件中的位置顺序为:()
A.第一个函数必须是主函数,其他函数任意
B.可以在任意位置
C.必须完全按照执行的顺序排列
D.其他函数可以任意,主函数必须在最后
2、以下选项中不合法的常量是()
A.123L
B.0×35
C.018
D.6e-2
3、判断字符串 s1 与字符串 s2 相等,应当使用()。
A.if(sl=s2)
B.if(strcmp(sl,s2))
C.if(lstrcmp(sl,s2))
D.if(strcmp(sl,s2)=0)
4、二维数组 a 有 m 行 n 列,则在 a[i][j]之前的元素个数为()。
A.j*n+i
B.i*n+j
C.i*n+j-1
D.*n+j+1
5、若有定义 int (*p)[4],则标识符 p 是一个()。
A.指向整型变量的指针变量
B.指向函数的指针变量
C.指向有四个整型元素的一维数组的指针变量
D.指针数组名,有四个元素,每个元素均为一个指向整型变量的指针
6、下列对变量进行初始化有可能导致将来出现问题的是:( )。
A.char str[7]="FORTRAN";
B.char str[]="FORTRAN";
C.char*str="FORTRAN";
D.charst[]={F,'O’,R,T,R,A,N,0};
7、C 语言中允许的基本数据类型包括:( )
A.整型、实型、逻辑型,
B.整型、实型、字符型
C.整型、字符型、逻辑型
D.整型、实型、逻辑型、字符型
8、下列能正确表示 a≥10 或 a≤-10 的关系表达式是:( )
A.a>=10or a<=-10
B.a<=10z>=-10
C.a>=10||a<=-10
D.a>=10&&a<=-10
9、若有定义和语句:
chars;s="nanchang"; printf("%n",s);
则结果是:( )
A.输出 97 B.输出 a
C.输出 adcb D.编译不能通过
10、若变量要给 int 型变量 a,b,c 输入数据,正确的输入语句是:()
11、假定 w、x、y、z、m 均为 int 型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=(w>x)?w:x;m=(m>y)?m:y;m=(m>z)?m:z;
则该程序运行后,m 的值是:()
A.4
B.3
C.2
D.1
12、假设 int 型变量占两个字节的存储单元,若有定义:
int x[5]={1,2,3};
则数组 x 在内存中所占字节数为( )。
A. 3
B.6
C.10
D.20
13、下列合法的数组定义是( )
A.inta{]="string";
B.int a[5]={0,1,2,3,4,5};
C. char a="string";
D.char a[]={0,1,2,3,4,5};
14、在 C 语言中,下列错误的说法是( )。
A.函数可以递归调用
B.不允许在函数中再定义函数
C.递归程序不可能用非递归算法实现
D.对于 continue 语句,可以通过改变程序的结构而不使用它
15、下列属于文件包含的命令是( )。
A.#define N 25
B.#endif
C.#include "stdio.h"
D.#else
二、填空题(每空 2 分,共 20 分)
1、高级语言编写的程序必须转化成机器语言才能在计算机上运行,这个转化过程称为
______。
2、与二进制数(1100001)2 等价的八进制为________。
3、C 程序编译后最终产生(即计算机执行)的文件的扩展名为________。
4、若有以下定义和语句:
int a=5,b
b=a++;
则 b 的值为______。
5、C 程序中调用函数时,实参与对应形参之间的数据传递方式是
6、从键盘上获得一个字符数据的函数是____。
7、编译预处理命令以__________结尾。
8、已定义以下函数
fun(int *pr)
{ return *pr;}
该函数的返回值是:__________ 。
9、当定义一个结构体变量时系统分配给它的内存是: ___________。
10、若执行 fopen 函数时发生错误,则函数的返回值是_________。
三、 程序分析题(本大题共 4 小题,每小题 6 分,共 24 分)
1、
#include
main(){
int a=5,b=4,x,y;
x=2*a++;
printf("a=?x=?n",a,x);
y=-b*2;
printf("b=?y=?n",b,y);
}
程序运行结果是:
2、
#include
main(){
int x,y;
scanf("-?s-",&x,&y);
printf("?,y-x);
}
程序运行时输入:123456789<
程序运行结果是:
3、
#include
main(){
char a[]="Hello";
char *p=NULL;
for(p=a;p#include
int fun(int x, int y){
return x>y?x:y;
}
main(){
int a=2,b=5,c=8;
printf("?n", fun(fun(a+c,b),a-c));
}
程序运行结果是:
四、程序填空题(本大题共 4 小题,每小题 6 分,共 24 分)
1、 下面程序的功能是输入三个整数,按由小到大的顺序输出这三个数:
#include
void swap①_/*交换两个数*
int temp;
temp=*pa;
*pa=*pb;
*pb=temp;
}
void main(){
}
2、 下面程序的功能是删除字符串 S 中的空格
#include
main(){
char s[]="Jiangxi Normal University";
int i,j;
for(i=j=0;s[i]!=^10;i++)
if(s[i]!=!' ①;
else ②;
printf("2,s);
}
3、 下面程序的功能是计算 1-3+5-7+…-99+101 的值:
main(){
int i,t=1,s=0;
for(i=1;i<=101;i+=2){
s=s+t;
②
}
4、 下面程序的功能是打印一个数列的第 30 项的值。该数列的第 1,2
项均为 1,其他各项值均为其前两项之和。即 1,1,2,3,5,8,13…
#include
①
void main(){
printf("?ln",f(30));
}
long f(int n){
if ②) return1;
else returnf(n-1)+f(n-2);
}
五、 程序设计题(本大题共 4 小题,第 1~3 小题每小题 12 分,第
4 小题 16 分,共 52 分)
1、编程打印出如下图案,要求一条输出输出语句只能打印一个字符。
A
BB
CCC
DDDD
EEEEE
2、编程计算 1!+2!+3!+……+10!的值。
3、打印出所有的“水仙花数”,‘所谓“水仙花数”是指一个三位数,其各位数字立方和等
于该数本身。例如:153 是一个“水仙花数”,因为 153=1 的三次方+5 的三次方+3 的三次方。
4、写一个函数,功能为求一个字符串的长度,在 main 函数中输入字符串,调用该函数并输
出其长度。