精华10
威望771
K币158 元
注册时间2004-5-8
在线时间62 小时
最后登录2013-12-7
中级战友
 
- 精华
- 10
- 威望
- 771
- K币
- 158 元
- 注册时间
- 2004-5-8
|
中央财经大学
2000年硕士研究生入学考试试题
考试科目:C语言
注意:所有答案必须写在答题纸上,只抄题号,不必抄题,写在
试卷纸上无效。
一、选择题
请给下列各题选择一个合适的答案(每题2分,共8分)
1、若定义:char ch[10],则以下表达式中[ ]不是元素ch[1]
的地址。
A)ch+1 B)&ch[0]+1 C)ch++ D)&ch[1]
2、以下关于C语言中静态变量的说法,只有[ ]是不正确的。
A) 静态变量每次启用时的值不变。
B) 静态变量在数据说明时就被分配内存单元。
c) 静态变量占用的内存要到程序运行结束才释放。
D) 静态变量每次启用时的值就是上次退出作用域时的值。
3、下列对C语言中字符数组的说法中,错误的是[ ]。
A) 在C语言中可用字符数组存放字符串。
B) 可以用关系运算符对字符数组中的字符串进行比较。
C) 字符数组中的字符串可以整体输入、输出。
D) 字符数组中的字符串可以按单个字符输入、输出。
4、若在C语言程序中使用以下的二维数组定义语句并赋以部
分初值,其中不正确的定义是[ ]
A) int a[2][3]={{4},{5,6}} B) int a[2][3]={{4},{5},{6}}
c) int a[2][3]={4,5,6} D) int a[2][3]={{4},5,6}
一、 读程序:给出程序执行后的输出结果。(每题5分,共30分)
1、执行以下程序的输出结果。
#include "stdioh"
main()
{union
{int i[2];
long k;
char c[4];
}*s;
s->i[0]=0x35;
s->i[1]=0x34;
printf("%lx\n",s->k);
printf("%c\n",s->c[0]);
}
2, #define PRINT(x) printf("%d\n",x)
#include "stdio.h"
mian()
{ int x,y,z;
x=1;y=1;z=0;
x=x&&y||z;
PRINT(x); PRINT(x||y++&&++z); PRINT(y); PRINT(z);
}
3, #include "stdio.h"
int test(int n)
{ int d=0,m=n;
while(m){
d=d*10+m%10;
m/=10;
}
return (d==n);
}
int data[]={5,123,121,453,545};
main()
{ int i;
for(i=0;i<sizeof(data)/sizeof(int);i++)
printf("%5d %s\n",data,test(data)?"OK":"NO");
}
4, struct ks{ int a;
char *b;
} as[]={5 "abcd",6,"efgh"};
main()
{ struct ks *p;
p=as;
printf("%s\n",as[1].b);
printf("%s\n",p->b++);
printf("%s\n",p->b);
printf("%s\n",p++->b);
printf("%s\n",p->b);
}
5. #include "stdio.h"
main()
{ int i;
char *f="%10.10s\n",*a="****************";
for(i=1;i<=4;i++)
{*(f+2)=2*i+'0';
*(f+4)=4*i/10+'0';
*(f+5)=4*i%10+'0';
printf(f,a);
}
}
6, char *c[]={"ENTER","THIRD","SECOND","FIRST"};
char **cp[]={c+3,c+2,c+1,c};
char ***cpp=cp;
main()
{ printf("%s\n";**++cpp);
printf("%s\n",*--*++cpp+3);
printf("%s\n",*cpp[-2]+3);
printf(%s\n",cpp[-1][-1]+1);
}
二、填空题(每空3分,共39分)
~ 4- ,
1. 本程序每次输入一个用户编码及其欠款金额后,就累计同一
用户的欠款金额,并按用户编码由小到的大顺序排列已输入
的所有欠款,最后输出排序后的全体用户的欠款总额清单。
#include "stdio.h"
#define MN 100
long code[MN];
float money[MN];
main()
{
int u,v,n;
long t_code;
float t_money;
n=0;
printf("Enter first code and money(-1 to quit");
scanf("%ld",&t_code);
while (t_code>0) {
scanf("%f",&t_money);
u=0;
While( [ (1) ]) u++;
if ( [ (2) ]) money+=t_money;
else {
for([ (3) ]){
code[v]=code[v-1];
money[v]=money[v-1],
}
code=t_code;
money=t_money;
[ (4) ];
}
printf("Enter next code and money(-1 to quit)");
scanf("%ld",&t_code);
for(u=0;u<n;u++) printf(%5ld%f\n",code,money);
}
2、 对于正整数n输出其和等于 n 且满足以下限制条件的正整数
的和式,既组成和式的数字自左至右构成一个非递增的序列。
如:n=4 则程序输出为:
4=4
4=3+1
4=2+2
4=2+1+1
4=1+1+1+1
#define MAXN 100
int a[MAXN];
rd (int n, int k)
{ int j,i;
for(j=[ (1) ];j>=1;j--)
{ a[k]=j;
if ( [ (2) ] )
{ printf(%d=%d",a[0],a[1]);
for(i=2;i<=k;i++) printf("+%d",a);
printf("\n"); }
else [ (3) ];
}
}
int test_data[]={3,4,5};
main()
{
int i;
for(i=0;i<sizeof(test_data)/sizeof(int);i++)
{
a[0]=test_data;
rd(test_data, 1);
}
}
3. 以下程序output.c, 其功能是将命令行中所列的文件依次在
屏幕上显示,每显示完一个文件内容后,用户按任意一键,
则显示下一个文件。如果命令中所列的文件不能打开或没有
给出文件名,则会显示相应的信息,命令的格式为:
output 文件1 文件2 .....
#include "stdio.h"
main(argc,argv )
int argc;
char [ (1) ];
{ FILE *fp;
int i;
if([ (2) ]) printf("命令行参数错误:缺少文件名\n");
else for(i=1;i<argc;i++)
{ if ((fp=fopen(argv," [ (3) ] "))==NULL)
printf("文件<<%s>>不能打开。\n",argv);
else output ( [ (4) ] );
[ (5) ];
if(i!=argc-1)
{printf("\n按任意一键,显示下一个文件\n");
getchar();
}
}
}
output(fptr)
FILE *fPTR;
{ int c;
while((c=[ (6) ])!=EOF)
putchar(c);
}
三、编程序题(第1、2题各7分,第3题9分,共23.分)
1、有N个学生,每个学生记录包括学号、姓名、成绩,数据
从键盘输入。要求找出成绩最高者的姓名和成绩。
2、将一个偶数分解成两个素数之和,并按下面格式输出结果。
如:
6=3+3
8=5+3
10=7+3
10=5+5
2、将自然数按下图所示的次序存到NxN的二维数组A中。
(注:下图所示是一个5×5的二维数组,箭头是提示自然数
出现的顺序。
1 一 2 9 一 10 25
↓ ↑ ↓ ↑
4 ← 3 8 11 24
↓ ↑ ↓ ↑
5 → 6 → 7 12 23
↓ ↑
16 ← 15 ← 14 ← 13 22
↓ ↑
17 → 18 → 19 → 20 → 21 |
评分
-
查看全部评分
|