2014 年江西师范大学程序设计(C 语言)考研真题
一、单项选择题(每小题 2 分,共 30 分)
1.C 语言程序的 3 种基本结构是顺序结构、选择结构和()结构。
A.循环
B.递归
C.转移
D.嵌套
2.以下能正确地定义整型变量 a、b 和 c,并为它们赋初值 5 的语句是()。
A.inta=b=c=5;
B.inta,b,c=5;
C.a=5,b=5,c=5;
D.inta=5,b=5,c=5;
3.在嵌套使用 if 语句时,C 语言规定 else 总是()。
A.和之前与其具有相同缩进位置的 if 配对
B.和之前与其最近的 if 配对
C.和之前与其最近的且不带 else 的 if 配对
D.和之前的第一个 if 配对
4.在下列选项中,没有构成死循环的程序段是()。
A.inti=100;
B.for(:;);
while(1)
{i=i%100+1;
if(i>100)break;
}
C.intk=1000;
D.ints=36;do{++k;}while(k>=10000);while(s);--s
5.以下叙述中不正确的是()。
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
6.设有定义“inta=1,b=2,c=3,d=4,m=2,n=2;”,则执行表达式“(m=a>b)&&(n=c>d)”后,n
的值为()。
A.1
B.2
C.3
D.0
7.以下数组定义中不正确的是()。
A.inta[2][3];
B.intb[][3]={0,1,2,3};
C.intc[100][100]={0};
D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
8.若有定义“intn=2,*p=&n,*q=p;”,则以下非法的赋值语句是()。
A.p=q;
B.*p=*q;
C.n=*q
D.p=n;
9.以下选项中,不能定义 s 为合法的结构变量的是()。
10.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。
A.地址传递
B.单向值传递
C.由实参传给形参,再由形参传回实参
D.传递方式由用户指定
11.若有定义“intk[2][3],*pk[3];”,则下列语句中正确的是()。
A.pk=k;
B.pk[0]=&k[1][2];
C.pk=k[0];
D.pk[1]=k;
12.以下叙述中错误的是()。
A.函数 gets()用于从终端读入字符串
B.函数 getchar()用于从磁盘文件读入字符
C.函数 fputs()用于把字符串输出到文件
D.函数 fwrite()用于以二进制形式输出数据到文件
13.以下正确的函数声明语句是()。
A.doublefun(intx;y);
B.doublefun(intx;inty);
C.doublefun(intx,inty);
D.doublefun(intx,y);
14.已知字母‘A’的 ASCII 值为 65,若有 charch=‘A’+‘6’-‘3’,则 ch 的值是()。
A.‘D’
B.68
C.不确定的值
D.‘C’
15.下列能正确定义字符串的语句是()。
A.charstr[]={‘\064’};
B.charstr=“kx12”;
C.charstr=“”;
D.charstr[]=“\0”;
二、填空题(每空 2 分,共 20 分)
1.C 语言中的标识符只能由 3 种字符组成,它们是()、()和()
2.若整型变量 a 和 b 的值分别为 3 和 5,要求按以下格式输出 a 和 b 的值。
a=3
b=5
请完成输出语句“printf(“()”,a,b);”。
3.下列程序运行时,输入“1234567890<回车>”,则 while 循环体将执行()次。
voidmain()
{charch;
while((ch=getchar())==‘O’)printf(“*”);
}
4.以下函数用来求两个整数之和,请填空。
intfun(intx,inty){();z=x+y;()}
5.假定 x 和 y 为 double 型,则表达式“x=2,y=x+3/2”的值为()
6.若有如下结构说明,请填空,以完成对数组 t 的定义,数组 t 的每个元素为该结构类型:
()t[20];。
structSTRU{inta;intb;charc;doubled};
7.已定义“charc=‘a’;inta=1,b;”,执行“b=!c&&a;”后 b 的值为()
三、程序分析题(本大题共 4 小题,每小题 6 分,共 24 分)
1.写出下面程序的运行结果。
#include
main()
{inta=0,b=0,c=0,d=0;
if(a=1)b=1,c=2;
elsed=3;
printf(“%d,%d,%d,%d\n”,a,b,c,d);
}
2.写出下面程序的运行结果。
#include
main()
{intx=1,y=0;
switch(x)
{case1:
switch(y)
{caseO:printf(“Title1\n”);break;
case1:printf(“Title2\n”);break;
}
case2:printf(“Title3\n”);
3.写出下面程序的运行结果。
#include
#defineN5
voidfun();
main()
{inti;
for(i=1;i
main()
{inti,a[10]={1,2,3,4,5,6,7,8,9,10},temp;
temp=a[9];
for([9i;i][i-1];
a[0]=temp;
for(i=0;i<10;i++)
printf(”%d”,a[i]);
四、程序填空题(本大题共 4 小题,每空 2 分,共 24 分)
1.下列程序输出 1~100 之间满足下列要求的数:各位数字的积大于各位数字的和,例如
23.2*3>2+3。请在处填上正确的答案将程序补充完整。
voidmain()
{intn,k,s,m;
for(n=1;n<=100;n++)
{k=1;
(1);
m=n;
while(m!=0)
{(2);
(3);
m=m/10;
}
if(k>s)printf(“%d”,n);
}
}
2.下列程序中,函数 fun()的功能是计算 x²-2x+6,主函数中将调用函数 fun()计算 yl=(x+8)
²-2(x+8)+6 和 y2=sin²(x)-2sin(x)+6,请完成程序。
(1)fun(doublex)
{return(x*x-2*x+6);
}
main()
{doublex,yl,y2;
scanf(“%lf”,&x);
y1=fun((2));
y2=fun((3));
x[4][4],n=0,i,j;
printf(“yl=%lf,y2=%lf\n”,yl,y2);
3.以下程序按下面指定的数据给 x 数组的下三角置数,并按如下形式输出,请填空。
4
37
269
15810
#include
main()
{int
for(j=0;j<4;j++)
for(i=3;ij+;_+;x[i][j]=(1)(2));}
for(i=0;i<4;i++)
{for(j=0;j<=i;j++)printf(“%3d”,x[i][j]);
(3)
}
4.下面程序实现以下功能:先从键盘输入一个字符串,将小写字母转换为大写字母后输出到
文件中,然后从该文件读出字符串并显示出来,请完成程序。
#include
main()
{FILE*fp;
charstr[100];
charfilename[20];
inti=0;
gets(filename);
if((fp=fopen(filename,(1)))=NULL)
{printf(“Can'topenthisfile.\n”);exit(0):}
printf(“Inputastring:\n”);
gets(str);
while(str[i])
(if(str[i]>=‘a’&&str[i]<=‘z')str[i]=(2)
fputc(str[i],fp);
i++;
}
fclose(fp);
fp=fopen(filename,(3));
fgets(str,100,fp);
printf(“%s\n”,str);
fclose(fp);
五、程序设计题(1~3 题,每小题 12 分,第 4 小题 16 分,共 52 分)
1.(12 分)编写一个 C 程序,从键盘输入 30 个实数,分别计算并输出以下 5 个量:所有正数
之和,所有负数之和,所有数的绝对值之和,正数的个数,负数的个数。
2.(12 分)编写一个函数,其功能是将一个正整数 n 转换成字符串并输出(要求输出时各字符
之间用一个空格分隔),再编写一个主函数,从键盘输入正整数,并判断其输·入的合理性。
例如,输入的正整数为 123,应输出字符串“123”。
3.(12 分)编写一个 C 程序,从键盘输入一个 5 行 5 列的二维整型数组的数据,计
算二维数组中每一行的最大值,并将此最大值顺序存放在一个长度为 5 的一维数组中,
最后按矩阵形式输出二维数组中的各元素,且各行中的最大值输出到相应行的右边。4.(16
分)编写 C 程序,计算并输出下列级数之和。
其 中 n 与 x 从 键 盘输 入 。