武汉科技大学C语言程序设计2013考研试题研究生入学考试试题考研真题
● 摘要
二 O 一三年招收硕士研究生入学考试试题 考试科目代码及科目名称: 考试时间 3 小时,总分值 150 855 C 语言程序设计 分。 答题内容写在答题纸上,写在试卷或草稿纸上一律无效考完后试题随答题纸交回。 一、选择题(每题 2 分,共 20 分) 1.C 语言结构类型变量在程序执行期间( ) 。 A) 所有成员一起驻留在内存中。 B) 只有一个成员驻留在内存中。 C) 部分成员驻留在内存中。 D) 没有成员驻留在内存中。 2. 数组定义为“int a[4][5];” ,下列哪一个引用是错误的( )。 A)*a B)*(*(a+2)+3) C)&a[2][3] D)++a 3. 结构变量 stu,类型为 STU,含有域 major,下面哪条语句正确引用了 major?( ) A) stu.major B)stu->major C)STU->major D)STU.major 4.设函数 fun 和实参数组的说明形式为:void fun(char ch,float x[]); float a[10]; 以下对函数的调用语句中,正确的是( ) 。 A)fun("abc",a[]); B)t=fun('D',a); C)fun('65',2.8); D)fun(32,a[10]); 5. 下列语句中与语句 while(1){if(i>=100)break;s+=i;i++;} 功能相同的是( ) 。 A)for(;i<100;i++) s=s+i; B)for(;i<100;i++;s=s+i); C)for(;i<=100;i++) s+=i; D)for(;i>=100;i++;s=s+i); 6.C 语言中函数返回值的类型是由( )决定的。 A) return 语句中的表达式类型 B)调用该函数的主调函数类型 C) 定义函数时所指定的函数类型 D)调用函数时临时 7. 以下对枚举类型名的定义中正确的是( ) 。 A)enum a={one, two, three}; B)enum a {a1, a2, a3} ; C)enum a={‘1’, ’2’, ’3’} ; D)enum a {“one”, ”two”, ”three”} ; 8. 对于以下递归函数 f,调用 f(4),其返回值为( int f(int n) { if(n) return f(n-1)+n ; ) else return n; } ) 。 准考证号码: 报考专业: 密 封 线 内 不 要 写 题 姓名: A)10 B) 4 C)0 D)以上均不是 9. 设整型变量 i,j 值均为 3,执行了 j=i++,j++,++i 后,i,j 的值是( A)3,3 B)5,4 C)4,5 D)6,6 10. while(!x) 中的表达式(!x)等价于( ) 。 A) x!=1 B)x!=0 C)x==1 D) x==0 第 1 页 共 4 页
二、阅读程序写出程序运行结果(每题 5 分,共 20 分)
1. void main( ) { int k=0; char c='A'; do { switch (c++) { case 'A': k++; break; case 'B': k--; case 'C': k+=2; break; case 'D': k=k%2; break; case 'E': k=k*10; break; default: k=k/3; } k++; } while(c<'G'); printf("k=%d\n", k); } 2. void main ( void ) { int i=0; do { printf(“Yes!”); } while(++i<4); printf(“\n”); while(i++<8) printf(“No!”); } 3. #include 三、程序填空(每空 3 分,共 60 分)
1. 以下函数的功能是将字符串 sa 中的内容逆置过来,即:若原串为”abcde”,逆置后应 为”edcba”。 #include int Tag=0; while(p) if(p->data>=maxK) { q=p; else if( ___(14)__ _) { q->next= ___(15)__ p= ___(16)__ _; else ___(18)__ _; if( ___(19)__ _) return -1; ___(20)__ _; }
___(13)__ _; free(p); ___(17)__
_; }
_;
}
四、程序设计(4 小题,共 50 分)
1.(10 分) 函数 digit(n,k)的功能是求正整数 n 中从右端开始的第 k(≥1)个数字的值(k 从 1 开始) ,如果 k 超过了 n 的位数,则函数返回-1;否则返回 n 中第 k 个数字。 例如: digit(264539 , 3)=5 digit( 7622 , 5)=-1 要求分别用递归和非递归设计该函数。 2.(10 分) 编程统计输入的一行中的大写字母、小写字母、数字的个数以及单词数(单词 间以空格隔开)。 3. (15 分) 建立一个学生登记表(人数<100) ,每个学生包含下列信息:学号(no)、姓名 (name)、性别(sex)、分数(score),其结构定义如下: struct student { long no; char name[8]; char sex; float score; } ; 要求: (1)定义学生信息录入函数 input,当输入学号为-1 表示学生信息录入结束。函数返 回录入信息的学生人数,其函数原型定义如下: int input(struct student *stu) ; (2)定义 sort 函数,实现按照学生姓名升序排序的功能。 (3)使用二分查找算法,定义 search 函数,实现根据给定学生的姓名,查找并显示出 该学生的信息,如果不存在,请给出提示信息。 4.(15 分) 函数 BitTree Del_RightBottom (BitTree T)的功能是:若 T 指向一棵二叉树的 根结点,则找出该结点的右子树上的“最右下”结点*p,并从树中删除以*p 为根的子树,函 树返回被删除子树的根结点指针;若该树根的右子树上不存在“最右下”结点,则返回空指 针。 一棵非空二叉树中“最右下”结点定义为:若树根的右子树为空,则树根为“最右下” 结点;否则,从树根的右子树树根出发,沿结点的右孩子分支向下查找,直到某个结点不存 在右孩子时为止,该结点即为此二叉树的“最右下”结点。 Typedef struct BitNode{ int data; struct BitNode *left,*right; }*BitTree; //left,right 为结点的左、右孩子指针
第 4 页 共 4 页