精华10
威望771
K币158 元
注册时间2004-5-8
在线时间62 小时
最后登录2013-12-7
中级战友
 
- 精华
- 10
- 威望
- 771
- K币
- 158 元
- 注册时间
- 2004-5-8
|
中央财经大学
一九九七年硕士研究生入学考试试题
考试科目:c语言程序设计
招生专业:信息经济 .
注意:本试题所有的答案,均按试题顺序号写在答题纸上,不必抄题;写在试题纸上不得
分。
一、判别下列关于c语言的叙述,若正确,请在答题纸上相应题号标以[√],若错误,则
标以[×]。(每题2分.共lO分)
1.自动变量是在函数内定义的局部变量,外部变量是为访问其他的源文件而在任何函
数以内定义的全程变量。
2.C函数不可嵌套定义,但可递归调用。
3.变量、常量和表达式可以用取地址运算符&进行取地址操作。
4.可以把一个数组名作为一个同名的指针来使用,或者把顺序的指针作为同名的数组
名来使用。
5.c函数只有值参调用,而且每个函数可以返回至多一个结果值。
二、选择题:下列每题选择一个合适的答案(每题2.5分,共10分)
1.对静态函数A、B进行如下初始化:
static char A[]="ABCDEF";
static char B[]={'A','B','c','D','E','F'};
下列叙述正确的是:
A.A和B完全相同 B.A和B是长度相等
c.A和B不相同,A是指针数组 c.A数组长度比B数组长
2.类型定义
char s[3]="AB";
char *p;
执行了语句p=s之后,*(p+2)的值是:
A.'B', B.'/O', C.不确定, D.字符'B'的地址
3.数组名作为参数传递给函数,作为实在参数的数组名被处理为:
A.该数组的长度 B.该数组的元素个数
C.该数组中各元素的值 D.该数组的首地址
4.关于字符串
A.C语言提供字符串数据类型
B.不提供字符串数据类型,但提供字符串整体操作的运算符
c.调用库函数可以进行字符串操作
D.借用其他运算符进行字符串整体操作
三.读程序,给出程序执行结果(每题10分,共20分)
1.
#define CMPLX struct complex
CMPLX {int re;int im;}
main()
{static CMPLX za={3,4};
static CMPLX zb={5,6};
CMPLX z, cmult(), x, y;
z=cmult(za,zb);
cpr(za, zb, z);
x.re=10; x.im=20; y.re=30; y.im=40;
z=cmult(x, y);
cpr(x, y, z);
}
CMPLX cmult(za, zb)
CMPLX za, zb;
{ CMPLX z
z.re=za.re*zb.re-za.im*zb.im;
z.im=za.re*zb.im+za.im*zb.re;
return (z);
}
cpr(za, zb, z)
CMPLX za, zb, z;
{printf("(%d+%di)*(%d+%di)=",
za.re, za.im, zb.re, zb.im);
printf("%d+%di\n", z.re, z.im);
}
2.
main()
{char *p, *a;
int i;
p="%2d=%-20.1s\n";
for(i=1; i<10; i++)
{*(p+9)=i+'0';
prinrf(p, i, a);
}
四、写程序,阅读程序说明,写出C语言程序,(每题10分,共20分)
1. 有数的集合 {2^m,3^n|m≥1,n≥1},从两个数列{2^m}和{3^m}中取出小的数进入
新的数列,使它们按升序排列,新数列不用数组存放,而直接打印输出。
2. 有单链表,head为链表的头指针,按升序查找并且打印链表中各结点数据,打印完
该结点后,把它从链表中删除,直至链表为空。
五、填空题,阅读程序说明和程序,填充程序中编号为[1]、[2]……中的空白。(共40分)
1. 寻找具有完全平方且不超过七位数的回文数,所谓回文数,是指它的各位数码是
左右对称的,例如121、676、94249等,本程序采用分解数方法判断回文数。(10分)
#include <stdio.h>
#include <math.h>
int symm(int n)
{ int i, j, k;
int m;
i=n; j=0;
while [ 1 ]
}
j++; i/=10; }
k=j>>1; m=0;
for(i=1; i<=k; i++) {
[ 2 ]
n/=10;}
if [ 3 ]
n/=10;
if (m==n) return (1);
else return (0);
}
main()
{int i, s;
for(i=11; i<=(int) (sqrt(9999999)); i++) {
[ 4 ];
if (symm(s)) printf("%10d", s);
}
{
2. 运动会连续开了n天,一共发了m枚奖章。第一天发1枚并留下(m-1)枚的1/
7, 其余枚数用语第二天。第二天发2枚,并照例留下1/7,以后照此办理,最后一天发完
剩下的全部奖章。程序求解运动会开的天数和共发的奖章数。(15分)
#include <stdio.h>
main()
{char m, n, x, b;
x=0;
do {x++; [ 1 ]
n=1; b=0xff;
while((m>n)&&b) {
[ 2 ]
if(!(m%7)) m=(int)(m/7)*6;
else b=0;
n++;}
} while [ 3 ]
printf("n=%6dm=%8d", n, 7*x+1);
3.摇动排序算法程序,有数组r[0], r[1], "", r[n-1],从一端开始扫描,进行
比较、交换,然后改变下一趟的扫描方向,进行同样处理。(15分)
#define m 100
typedef struct {
int key;
float inf;
} element;
typedef element list[m];
void shakesort(list r, int n)
{
int i, l, h;
element extr;
l=0;
h=n-1;
[ 1 ]
do
{
for(i=1; i<h; i++)
if(r.key>r[i+1]. key)
{
extr=r;
r=r[i+1];
r[i+1]=extr;
}
[ 3 ];
for(i=h; i>=1, i--)
if(r.key>r[i+1].key)
{
extr=r;
r=r[i+1];
r[i+1]=extr;
[ 4 ]
}
[ 5 ];
} while (1<=h); |
评分
-
查看全部评分
|