c语言研究生试题,武汉科技大学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 void main ( ) { int arr[]={3,6,9,12,15},*p,k; for( k=0 ; k < 5 ; k++ ) arr[k] += arr [k]/3 ; for(p=arr,k=0 ; k < 5 ; k++ ) printf(" %3d" , *(p+k)); } 4. 运行时输入:8 2 int ccc(int n, int r) { if(r>n) return 0; if (r==0||n==0||n==1) return 1; return ccc(n-1,r)+ccc(n-1,r-1); } void main() { int result = 0,n,r; do{ scanf("%d%d",&n,&r); }while(n三、程序填空(每空 3 分,共 60 分)

1. 以下函数的功能是将字符串 sa 中的内容逆置过来,即:若原串为”abcde”,逆置后应 为”edcba”。 #include void strinvert(char *sa) { int i=0,j,t; j= (1) ; while( (2) ) { t=sa[i]; sa[i]=sa[j]; sa[j]=t; i++; (3) ; } } 2. 下列程序 A 与 B 功能等价,请填空。 程序 A: int f(int n) { if(n<=1) return n; else return f(n-1)+f(n-2); } 程序 B: int f(int n) { int t0=0,t1=1,t=n ; ) while( (4) ; t0=t1; t1=t; n-- ; } { t= (5) ; return (6) } 3. 下面程序的功能是用公式π/4≈ 1 −

1 1 1 + − + ... (直至最后一项的值小于 10-4 为止)求 3 5 7

π的值。 #includemain() { int sign=1,i=1; float next=1.0,pi,sum=0; while( (7) ) { sum= (8) ; (9) ; i+=2; next=1.0/i; } (10) ; printf("pi=%f\n",pi); } 4. 已知带头结点的单链表 L,其节点中的元素以递减方式排列。函数 DelList 的功能是在 L 中查找所有大于 minK 且小于 maxK 的结点,若找到,则删除结点。若 L 中不存在满足条件的 结点,则返回-1,否则返回删除的节点数。 链表结点类型定义如下: typedef struct Node { int data; struct Node *next; }NODE, *LinkList; int DelList(LinkList L, int minK, int maxK) { ___(11)__ _ *q=L, *p= ___(12)__ _;

第 3 页 共 4 页

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 页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值