中央财经大学C语言试题.docx
《中央财经大学C语言试题.docx》由会员分享,可在线阅读,更多相关《中央财经大学C语言试题.docx(47页珍藏版)》请在冰豆网上搜索。
中央财经大学C语言试题
中央财经大学硕士研究生入学考试试题
招生专业:
产业经济学
考试科目:
C语言程序设计
注意:
本试题所有答案应按试题顺序写在答题纸上,只写试题顺序号,
不必抄题,写在试题纸上不得分。
一、选择题:
下列每题选择一个合适的答案(每题2分,共16分)
1.以下函数调用语句中含有( )个实参。
Sub1(f1,(f2,f3),f4,(f5,f6,f7))
A)6 B)4 C)3 D)以上答案都不对。
2.已知:
union{intx;
struct
{ charc1,c2;}b;
}a;
执行语句:
a.x=0x3412之后,a,b,c1的值为( )
A)0x34 B)0x3412 C)0x12 D)以上答案都不对
3.已知函数原形为:
structtree*f(x1,x2,x3,x4)
intx1,int*x2;
struct treex3,*x4
其中tree为已定义过的结构,且有下列变量定义:
strcuttreept,*p;inti;
请选择正确的函数调用语句( )。
A)&pt=f(10,&i,pt,p);
B)p=f(i++,(int*)p,pt,&pt);
C)p=f(i+1,&(i+2),*p,p);
D)f(i+1,&i,p,p);
4.若有以下程序片段:
charstr[]="ac\b\0x56\078\\0";
printf("%d",strler,(str));
A)3 B)6 C)4 D)8
5.若fp为文件指针,且文件已正确打开,以下语句的输出结果为本( )
fseek(fp,0,2);
i=ftell(fp);
printf("i=%d",i);
A)fp所指文件的记录长度
B)fp所指文件的当前位置,以字节为单位
C)fp所指文件的当前位置,以字节为单位
D)fp所指文件的长度,以字节为单位
6.若有以下说明,则有()不是对strcpy库函数的正确调用。
char *str1="abcd",str2[12]
char*str3="efghkl",*str4, *str5="mnopq";
A)strcpy(str2,str1); B)strcpy(str3,str1)
C)strcpy(str4,str1) D)strcpy(sir5,str1);
7.若有如下说明,且0<=k<4,则( )是错误的赋值
inta[4][6],*p,*q[4]
A)p=a B)q[k]=a[k]
C)p=a[k] D)q[k]=&a[0][0]
8.以下语句段中,()不是无限循环。
A)k=50; B)for(; ; )
while
(1)
{k=k%50;k++;
if(k>50)break;
}
C)k=32760; D)k=32760;
do while((k++%2)||(k%2))k++;
{k+=2;}
while(k>0);
二、度程序:
给出程序执行后的输出结果。
(第1、2题各5分,第3、4、
5、6题各6分,共34分)
假设有可运行程序的各文件名为test.exe。
使用命令行参数,运行该程序
的格式如下:
test ynop azcbrwza<回车>
请写出下面程序的输出结果。
#include "stdio.h"
#include "string.h"
main(argc,argv)
intargc;
char *argv[];
{ char **p;
sub1(argv+1;argc-1);
for(p=argv+1;--argc;p++)
printf("%s\n",*p);
}
sub1(char*s[],intn)
{int k,j;
char word[20];
for(k=0;k for(j=k+1;j if(strcmp(s[k],s[j])>0)
{strcpy(word,s[k]);
strcpy(s[k],s[j]);
strcpy(s[j],word);
}
}
2.写出以下程序运行后的输出结果。
#include "stdio.h"
#define N 6
#define M 21
main()
{ int a[M],*p[N],k,j,q;
for(k=0;k for(k=0;k for(k=2;k for(j=1;j *(*(p+k)+j)=*(*(p+k-1)+j-1)+*(*(p+k-1)+j);
for(k=0;k {for(j=0;j<=k;j++)printf("%4d",*(*(p+k)+j));
printf("\n");
}
}
3.写出以下输出结果。
#include"stdio.h"
charstr[]="PPPQWLTECH1\1\11Q\1QALLMS1";
main()
int k; charch;
for(k=2;(ch=str[k])!
='\0';k++)
{switch(ch)
{case'A':
putchar('a');continue;
case'1':
break;
case1:
while((ch=str[++k])!
='\1'&&ch!
='\0');
case9:
putchar('#');
case'E':
case'L':
continue;
default:
putchar(ch);continue;
}
putchar('*');
}
printf("\n");
}
4.写出下列程序的输出结果。
#include "stdio.h"
main()
{char*s[6]=["BGCD","OFEH","IJKV""ALMN","QXYZ","PRST"};
char **p;
int k;
p=s;
for(k=1;k<4;k++)printf("%c",(*p)[k]);
5.写出程序运行结果。
#include "stdio.h"
#include "string.h"
void fun(char*w, intm)
chars,*p1,*p2;
p1=w;
p2=w+m-1;
while(p1 s=p1++;p1=p2--;*p2=s;
}
main()
{ staticchara[]="ABCDEFG";
fun(a,strlen(a));
puts(a)
}
6.下列程序由两个文件组成,请写出运行结果
/*文件1*/
#include"stdio.h"
intj=4;
main()
{int,k,m,j;
externintn;
extern intf2();
k=4;m=3;j=0;
printf("p1=%d\n",f1(n,m));
printf("p2=%d\n",f2(k,m));
printf("p3=%d\n",f1(n,j));
printf("p4=%d\n",f2(n,j));
printf("n=%d\n",n);
printf("j=%d\n",j);
}
f1(intm,intk)
{int f;
if(n) n=k*n;
j=m+j;f=n%j;
return(f);}
/*文件2*/
intn=2;
f2(inta,intb)
{static intm;
extern int j;
n=n*j+1; j=j+m+1; m=n+j+a+b;
return(m);
}
三、填空题(每空2分,共22分)
1.以下程序功能:
输入100本书的名称和单价,按照单价进行排序后输
出。
#include"stdio.h"
#define NUM 100
structbook
{char name[20];
float price;
}
main()
{ structbookterm,books[NUM];
intcount;
for(count=0;count { printf("Input book nameandprice\n");
scanf("%s%f",[
(1)]);
sortbook(term,books,count++);
printf("------------------BOOKLIST-----------------\n");
for(count=0;count printbook([
(2)]);
}
sortbook(term,pbook,count)
struct book term;
struct book *pbook;
int count;
intk;
struct book *q,[(3)];
for(k=0;k for(;pbook if(pbook->price>term.price)break;
for(q=pend-1;q>=pbook;q--)
[(4)];
[(5)];
}
printbook(pbook)
struct book *pbook;
{printf("%-20s%6.2f\n",pbook->name,pbook->price);
}
2.以下程序显示指定文件,在显示文件内容的同时加上行号。
#include"stdio.h"
#include"string.h"
main()
{chars[20],filename[20];
int flag=1,[(6)];
FILE*fp;
printf("Enter filename");
gets(filename);
if((fp=fopen(filename,"r"))[(7)])
{printf("Fileopenerror!
\n");
exit(0);
}
while([(8)])
{
while(fgets(s,20,fp)[(9)])
{if([(10)])printf("%3d:
%s",++i,s);
else printf("%s",s);
if([(11)]) flag=1;
else flag=0;
}
} fclose(fp);
}
四、编程序(第1题8分,第2题9分,第3题11分,共28分)
1.某人有10张3分的邮票和10张5分的邮票,问使用这些邮票可以组
合出多少种不同面值的邮资。
(例如:
1张3分邮票加1张5分邮票可
以组成8分的邮资;5张3分的邮票或3张5分的邮票都可以组成同样
面值的邮资。
)
2.已知某数列前两项为2和3,其后继项根据前面最后两项的乘积,按下
列规则生成:
(1) 若乘积为一位数,则该乘积即为数列的后继项;
(2) 若乘积为二位数,则该乘积的十位数字和个位数字依次作为数列的
两个后继项。
请编程序生成该数列的前N项,并求前N项的和。
要求:
生成该数列
后继项及求和过程用函数实现,在主函数中调用该函数。
3.小刚假期同妈妈一起去书店,他选中了N本书,每本书的单价分别为:
p1,p2,p3....,pn元(均为整数),不巧的是:
妈妈只带了S(为整数)元钱,
不够买这N本书(即:
S为了让小刚过一个愉快的假
期,妈妈同意将这S元钱全部用来买书。
也就是小刚要从所选的N本
书中选出M本,使得这M本的价格和刚好等于S。
即:
pi1+pi2+
pi3+…+pim=S,请你编程序将所有满足这一条件的i1,i2,i3…im依次打
印出来。
01年c真题参考答案
一
1.d 2.c 3.b 4.a 5.d 6.c 7.a 8.c
二
1.azcb
rwza
ynop(这道题我没有调试出来,不知道怎么搞得,我的tc对这道题有意见,大家一起确认一下吧)
2.
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 51010 5 1
3. PQWTCH*#Q#
4. GCD
5. ABCDEAG
6. p1=0
p2=51
p3=0
p4=97
n=1
j=0
三
1.term.name,&term.price 2.&books[count] 3.*pend=pbook 4.*(q+1)=q 5.*(q+1)=term
6.i=0 7.==NULL 8.!
feof(fp) 9.!
=0 10.flag==1 11.strlen(s)<19
四
最后一道题,没有搞定,大家帮忙!
!
!
1.
#defineN101*101
main()
{inti,j,k,n,s,a[N];
n=1;a[0]=0;
for(i=0;i<=10;i++)
for(j=0;j<=10;j++)
{s=3*j+5*i;
for(k=0;kif(k==n){a[k]=s;n++;}}
printf("have%dtypes\n",n);}
2.
#defineN10
main()
{inti,s,a[N+1];
voidcreat(inta[],intn);
a[0]=2;a[1]=3;
creat(a,N);
s=sum(a,N);
printf("thea'sprimerpartN:
\n");
for(i=0;iprintf("%4d",a);
printf("thesumofais:
\n");
printf("\nsum=%d",s);}
voidcreat(inta[],intn)
{inti,t;
for(i=2;i{t=a[i-1]*a[i-2];
if(t/10==0)a=t;
else{a=t/10;a[++i]=t%10;}} }
sum(int*a,intn)
{inti,s;
s=0;
for(i=0;i3.
中央财经大学 二OO三年硕士研究生入学考试试题
招生专业:
产业经济学(信息经济、宏观经济与产业经济模型方向)
考试科目:
C语言程序设计
注意:
本试题所有答案,应按试题顺序写在答题纸上,不必抄题,写清
题号。
写在试卷上不得分。
一、选择题:
下列每题选择一个合适的答案(每题2分,共18分)
1.在C语言中,数组名作为参数传递给函数,作为实在参数的数组
名被处理为( )。
A)该数组的长度; B)该数组中各元素的值;
C)该数组的首地址; D)以上答案均不对。
2.变量定义:
chars[3]="aB",*p;在执行语句p=s之后,*(p-2)的
值是( )。
’ ’
A)'B' B)'\0' C)字符'B'的地址 D)不确定
3.第一个主要采用C语言编写的操作系统是( )。
A)MS-DOS B)Widows C)UNIX D)以上答案都不对
4.在C语言的函数voidf(){staticinti=O;...}说明中,静态变
量i的生命期是( )。
A)整个程序 B)函数f()所在的文件
C)函数f()内部 D)以上答案都不对
5.没有提供指针类型的语言,无法构造链表结构,该说法( )。
A)正确 B)错误
6.以下正确的程序段是( )。
A)charstr[20]; B)char*p;
scanf("%s",&str):
scanf("%s",p)
C)charstr[20]; D)charstr[20],*p=str;
scanf("%s",&str[2]); scanf("%s",p[2]);
7.若有说明语句:
chara[]="Itismine",char*p="Itismine";
则以下不正确的叙述是( )。
A)a+1表示的是字符t的地址;
B)p指向的字符串与a数组中存放的字符串是同一个串;
C)p变量中存放的地址值可以改变;
D)a中只能存放11个字符号。
8.若有说明:
char*l[]={"C","MATH","JAVA","BASIC"};则表达式
*l[2]>*l[3]比较的是( )。