东华理工大学 2017 年硕士生入学考试初试试题C 语言程序设计.pdf
注意:答案请做在答题纸上,做在试卷上无效 第 1 页,共 7 页 东华理工大学2017年硕士生入学考试初试试题 科目代码: 814 ; 科目名称:C语言程序设计;( A 卷) 适用专业(领域): 电路与系统(077402,080902) 一、选择题:(共25小题,每小题2分,共50分) 1、 以下有关宏替换和函数的调用叙述不正确的是_。 A) 宏替换和函数的调用均占用运行时间。 B) 宏名无类型,函数有类型 C) 宏替换只是字符替换,不分配内存,但函数调用要分配内存 D) 再调用宏时程序的长度要加长,而函数调用不变 2、以下程序的输出结果是_。 long fun( int n) long s; if(n= =1 | n= =2) s=2; else s=n-fun(n-1); return s; main() printf(%ldn, fun(5); A) 1 B) 2 C) 3 D) 4 3、设有如下定义: int (*ptr)( ); 则以下叙述中正确的是_。 A) ptr是指向一维组数的指针变量 B) ptr是指向int型数据的指针变量 C) ptr是指向函数的指针变量,该函数返回一个int型数据 D) ptr是一个函数名,该函数的返回值是指向int型数据的指针 4、判断char型变量ch是否为大写字母的正确表达式是_。 A) A =ch = A)&(ch= A )&(ch=Z) D) ( A = ch) 5、下列程序段的输出结果为_。 int arr=6,7,8,9,10; int * ptr; ptr=arr; * (ptr+2)+=2; printf (%d,%dn,*ptr,*(ptr+2); 注意:答案请做在答题纸上,做在试卷上无效 第 2 页,共 7 页 A) 8,10 B) 6,8 C) 7,9 D) 6,10 6、阅读下面程序段,选择那个说法正确_。 for (t=1; t=100;t+) scanf(%d,&x); if(x0) continue; printf(%3d,t); A) 当x=0时什么也不输出 C) printf函数永远也不执行 D)最多允许输出100个非负整数 7、当a=1,b=3,c=5,d=4,执行完下面一段指令后,x 的值是_。 if(ab) if(cd) x=1; else if(ac) if(by) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=20 C) x=20, y=30, z=10 D) x=20, y=30, z=30 10、 若希望当A的值为奇数时,表达式的值为”真”, A的值为偶数时,表达式的值为”假”。则以下不能满足要求的表达式是_。 A) A%2=1 B) !(A%2=0) C) !(A%2) D) A%2 11、在C语言中,形参的缺省存储类是_。 A) auto B) register C) static D) extern 12、已知各变量的类型说明如下 int k,a,b; unsigned long w= 5; double x=1.42; 则以下不符合C语言语法的表达式是_。 注意:答案请做在答题纸上,做在试卷上无效 第 3 页,共 7 页 A) x%(-3) B) w+=-2 C) k=(a=2,b=3,a+b) D) a+= a-=(b=4)*(a=3) 13、定义如下变量和数组_。 int k; int a33=1,2,3,4,5,6,7,8,9; 则下面语句的输出结果是: for(k=0;k3;k+) printf (%d,a2-k k); A) 3 6 9 B) 7 5 3 C) 9 6 3 D) 3 5 7 14、对两个数组a和b进行如下初始化 char a =ABCDEF; char b =A,B,C,D,E,F; 则以下叙述正确的是_。 A) a与b数组完全相同 B) a与b长度相同 C) a和b中都存放字符串 D) a数组比b数组长度长 15、下面函数调用语句含有实参的个数为_。 y = func ( a, b, max(d ,e)); A) 5 B) 2 C) 3 D) 4 16、在宏定义 #define PI “3.14159”中,用宏名PI代替一个_。 A) 常量 B)单精度数 C)双精度数 D)字符串 17、有如下程序 int a10=1,2,3,4,5,6,7,8,9,10;*P=a; 则数值为 9 的表达式是_。 A) *(P+8) B) *P+9 C) *P+=9 D) P+8 18、下面程序段的运行结果是_。 char str =ABC , *p=str ; printf (%dn,*(p+2); A) 0 B) 字符C的地址 C) 字符C D) 字符C的ASCII码 19、下面判断正确的是_。 A) char str10=“china”; 等价于 char str10; str =“china”; B) char *a= “china”; 等价于 char *a; *a= “china”; C) char *s= “china”; 等价于 char *s; s= “china”; D) char c4= “abc”, d4= “abc”; 等价于 char c4=d4= “abc”; 20、有如下定义 struct personchar name9; int age; strict person class10=Johu, 17, Paul, 19, Mary, 18, 注意:答案请做在答题纸上,做在试卷上无效 第 4 页,共 7 页 Adam”, 16,; 根据上述定义,能输出字母M的语句是_。 A) prinft(%cn,class3.mane); B) pfintf(%cn,class3.name1); C) prinft(%cn,class2.name1) D) printf(%cn,class2.name0); 21、以下程序的输出结果是_。 union myun struct int x, y, z; u; int k; a; main() a.u.x=4; a.u.y=5; a.u.z=6; a.k=1; printf(%dn,a.u.y); A) 1 B) 5 C) 6 D)4 22、 阅读以下程序,当输入数据的形式为25,13,10正确的输出结果为_。 main() int x,y,z scanf(%d%d%d,&x,&y,&z ); printf(“x+y+z=%dn” ,x+y+z);。 A) x+y+z=48 B) x+y+z=35 C) x+y+z=35 D) 不确定值 23、设有:int a=1, b=2, c=3, d=4, m=2, n=2; 则执行 (m=ab)&(n=cd)后n的值为_。 A) 1 B) 2 C) 0 D) 4 24、若有说明:int a34;则对a数组元素的正确引用是_。 A) a24 B) a1,3 C) a1+10 D) a(2)(1) 25、对二维数组的正确定义是_。 A) int a =1,2,3,4,5,6; B) int a2 =1,2,3,4,5,6; C) int a 3=1,2,3,4,5,6; D) int a2,3=1,2,3,4,5,6; 二、程序阅读填空题:(共6小题,每小题5分,共30分) 1、阅读下面的程序运行后输出的结果_。 main() int x=0,a=0,b=0; switch(x) case 0: b+; case 1: a+; 注意:答案请做在答题纸上,做在试卷上无效 第 5 页,共 7 页 case 2: a+;b+; printf(“a=%d,b=%dn”,a,b); 2阅读以下程序,程序运行后的输出结果是 。 void fun(char *a, char *b) a=b; (*a)+; main() char c1=A,c2=a,*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf(%c%cn,c1,c2); 3下面是一个求 3*3 矩阵对角线元素之和的程序,请阅读程序完成填空 1、空 2和空3: main() float a33,sum=0; int i,j; printf(please input rectangle element:n); for(i=0;i3;i+) for(【 1 】j+) scanf(%f,&aj); for(【 2 】i+) sum=sum+a; printf(duijiaoxian he is %6.2f,【 3 】); 4下面是一个求字符串的长度主函数()和子函数length(p),阅读程序完成空1、空2和空3。 main() int len; char *str20; printf(please input a string:n); scanf(%s,str); len=length(【 1 】); printf(the string has %d characters.,len); length(p) /求字符串长度子函数 char *p; int n; n=0; while(*p!= 【 2 】) n+; p+; 注意:答案请做在答题纸上,做在试卷上无效 第 6 页,共 7 页 return 【 3 】; 5下面是一段是求101200之间有多少个素数,并输出所有素数,请阅读程序并完成空1、空2和空3。 #include math.h main() int m, i, k, hm=0, leap=1; printf(n); for(【 1 】m+) k=sqrt( m+1 ); for(i=2; iz) 【 2 】 if(yz) t=y;y=z;z=t; printf(small to big:【 3 】n,x,y,z); 三、算法流程图设计题:(共3小题,每小题10分,共30分) (以下3题不需要编写程序,只写出算法思路和画出算法流程图) 1有一个数据采集系统,开始时连续采集8个数据保存,计算其平均值,此后,每采集一个数,需要把这8个数中最早采集的数据去掉,新采集一个数据补充在后面,形成移动平均滤波。要求:(10分) 注意:答案请做在答题纸上,做在试卷上无效 第 7 页,共 7 页 (1) 根据题意用文字叙述写出算法思路; (2) 设计出合理规范的程序流程图。 2设有一个有序的数组(已由大到小排列),现输入一个数,请用折半查找法找出该数在数组中的位置;如果该数不在数组中,则输出“无此数”。要求:(10分) (1) 根据题意,用文字叙述写出算法思路; (2) 设计出合理规范的流程图。 3编写一个函数建立一个有5个员工数据的单向动态链表,每个员工包含工号、姓名和年龄;再编写一个函数,输入一个工号,将链表中包含这个工号的结点删除。要求:(10分) (1) 根据题意用文字叙述写出算法思路; (2) 设计出合理规范的程序流程图。 四、程序设计题:(共4小题,共40分) 1有一个已经排好序的数组,现从键盘输入一个数,要求按原来的规律将它插入数组中。要求:(10分) (1) 根据题意写出算法思路(不要画流程图,只用文字叙述清楚); (2) 设计编写出合理的程序。 2从键盘输入一个年、月、日,请用C语言编程判断这一天是这一年的第几天?要求:(10分) (1) 根据题意写出编程的算法思路(可不画流程图,只用文字叙述清楚); (2) 设计编写出合理的程序(关键处加注释)。 3数学游戏平分七筐鱼:甲、乙、丙三位鱼夫出海打鱼,他们随船带了 21 只箩筐。当晚返航时,他们发现有七筐装满了鱼,还有七筐装了半筐鱼,另外七筐则是空的。由于他们没有秤,只好通过目测认为七个满筐鱼的重量是相等的,7个半筐鱼的重量是相等的。在不将鱼倒出来的前提下,如何将鱼和筐平分为三份?要求:(10分) (1) 根据题意说明编程的算法思路(用文字方式叙述); (2) 设计编写出合理的程序(关键处加注释)。 4在屏幕上用“*”画出一个空心圆,圆的直径任意从键盘输入。要求:(10分) (1) 根据题意设计算法思路或实现方法(不用画流程图,只用文字叙述清楚); (2) 设计编写出合理的程序(关键处加注释)。