武汉科技大学C语言程序设计b2013考研试题研究生入学考试试题考研真题
● 摘要
二 O 一三年招收硕士研究生入学考试试题 考试科目代码及科目名称: 考试时间 3 小时,总分值 150 855 C 语言程序设计 分。 答题内容写在答题纸上,写在试卷或草稿纸上一律无效考完后试题随答题纸交回。 一、选择题(每题 2 分,共 20 分) 1. 以下程序的输出结果是( fun(char **m){ 准考证号码: ) fun(a) ; } ++m; printf(“%s\n”,*m); } void main( ) 密 封 线 内 不 要 写 题 { char *a[ ]={ “BASIC”,”FOXPRO”,”C”} ; 报考专业: A) BASIC B) ASIC C) FOXPRO D) C 2.判断字符串"abcd"和"ab cd"是否相等,应使用的语句是( ) 。 A)if( "abcd" = = "ab cd" ) B)if( abcd = = ab cd ) C)if( strcmp( "abcd", "ab cd" ) ) D)if( strcmp( abcd, ab cd ) ) 3.调用 fopen 函数打开一个文件失败时,函数的返回值是( ) 。 A)-1 B)EOF C)NULL D)1 4. 以下关于函数调用的描述中错误的是( ) 。 A) 实参可以是常量、表达式或有确定值的变量 B) 实参和形参共用同一内存单元 C) 实参与形参的类型、个数必须一致 D) 只有发生函数调用时,系统才为形参分配存储空间 5.若有以下定义和语句,则对 m 数组元素地址的正确引用是( ) 。 int m[ 2 ] [ 3 ] , (*p) [ 3 ]=m; A)p[2] B)p[0]+1 C)*(p+2) D)(p+1)+3 6. 在 C 语言程序中,有关函数的定义正确的是( ) 。 A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套 C)函数的定义和函数的调用均不可以嵌套 D)函数的定义和函数的调用均可以嵌套 7.数组名作为函数参数传递给函数时,数组名被处理成该数组的( ) 。 A)长度 B)元素个数 C)各元素的值 D)首地址 8. while(x)中的表达式(x)等价于( ) 。 A) (x!=0) B) (x==0) C) (x==1) D) (x!=1) 9. int a=1, x=1; 循环语句 while(a<10) x++; a++; 的循环执行( )。 A) 无限次 B)不确定次 C)10 次 D)9 次 10. 以下合法的用户标识符是( A) long B) \t ) 。 C) 5a 第 1 页 共 4 页 姓名: D) user
二、阅读程序写出程序运行结果(每题 5 分,共 20 分)
1. #include void fun2( ) { static int a=1; a=a+2; printf(“%d”, a); } void main(void) { int i; for(i=0 ;i<4 ;i++) fun2( ); }
第 2 页 共 4 页
printf(“/n”);
}
三、程序填空(每空 3 分,共 60 分)
1. 递归函数 void reverse(char *s,int len),其功能为逆置长度为 len 的字符串。例如, 若串 s 的内容为“abcd” ,则逆置后其内容变为“dcba” 。 void reverse(char *s, int len) { char ch; if( ___(1)__ _) { ch=*s; *s=*(s+len-1); __(2)_ _; reverse( _(3) _); } } 2.以下程序为输出所有的水仙花数(3 位数中各位置上数字的立方和等于该三位数本身)。 void main(void) { int i,s,n,t ; for ( i=100 ; i<1000 ; i++ ) { s = (4) ; n = i ; while ( (5) ) { t = n % 10; s = s (6) ; (7) ; } if ( (8) ) printf(″%d″, i ); } } 3. 函数 f 的功能是返回整数的逆序数,如整数 12345 的逆序数为 54321。 int f(int n) { _____(9)_____; while(_____(10)_____) { s=s*10+n%10; n=n/10; } return s; } 4. 下面程序在数组 a 中查找与 x 值相同的元素所在位置。 #include
5. 下面函数的功能为删除结点类型为 intnode 结构的链表中结点数据域值为 x 的一个结点。 struct intnode { int data; struct intnode *next; }; int deletenode( (16) , int x) { struct intnode *p, *last; p=*headp; while( (17) ) { last=p; (18) ; } if( (19) ) { if(p==*headp) *headp=p->next; else (20) ; free(p) ; return(1); } else return(0); } 四、程序设计(4 小题,共 50 分) 1.(10 分) 分别用递归和非递归函数设计实现计算 f(x,n)的功能。 f(x,n)的定义如下(x 为浮点数,n 为正整数) : f ( x, n) = n + (n − 1) + ( n − 2) + " + 2 + 1 + x 2.(10 分) 编程求 2~100 中每个整数的素数因子,按如下格式输出结果。 2=2 3=3 4=2*2 … 100=2*2*5*5 3.(15 分) 编程,输入年、月、日,将其转换成该年的第几天,并输出。具体要求如下: (1)编写一函数 mday(y,m),返回该年该月应有的天数。 (28,29,30 或 31) (2)编写一函数 nday(y,m,d),调用(1)中的函数 mday(y,m),返回某年某月某日 是这一年的第几天。 (3)编写一主函数,由键盘输入年、月、日,调用(2)中的函数 nday(y,m,d),计 算并输出处理结果。 (4)在主函数中,输入年、月、日前要有提示,并检查输入数据月和日的合理性,对于 不合理的输入,应要求重新输入。 4.(15 分)建立一个学生登记表,每位学生包含姓名、学号、年龄等信息。主函数分别调用 了如下三个函数,请按照函数的说明编写相应代码。 (1)函数 create 的功能是将输入的 n 个学生信息按照先进后出方式建立单链表。 (2)函数 sort 的功能是对单链表中的各学生信息按照年龄递减排序。 (3)函数 print 的功能是输出单链表中每个学生的信息。 第 4 页 共 4 页