北京理工大学研究生复试上机试题计算机专业.docx

上传人:b****5 文档编号:14844572 上传时间:2023-06-27 格式:DOCX 页数:75 大小:32.69KB
下载 相关 举报
北京理工大学研究生复试上机试题计算机专业.docx_第1页
第1页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第2页
第2页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第3页
第3页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第4页
第4页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第5页
第5页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第6页
第6页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第7页
第7页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第8页
第8页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第9页
第9页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第10页
第10页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第11页
第11页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第12页
第12页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第13页
第13页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第14页
第14页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第15页
第15页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第16页
第16页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第17页
第17页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第18页
第18页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第19页
第19页 / 共75页
北京理工大学研究生复试上机试题计算机专业.docx_第20页
第20页 / 共75页
亲,该文档总共75页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

北京理工大学研究生复试上机试题计算机专业.docx

《北京理工大学研究生复试上机试题计算机专业.docx》由会员分享,可在线阅读,更多相关《北京理工大学研究生复试上机试题计算机专业.docx(75页珍藏版)》请在冰点文库上搜索。

北京理工大学研究生复试上机试题计算机专业.docx

北京理工大学研究生复试上机试题计算机专业

北京理工大学2000-2010年研究生复试上机试题(计算机专业)

 

计算机专业研究生复试上机试题

2000年:

1、输入任意4个字符(如:

abcd),并按反序输出(如:

dcba)

#include

#include

usingnamespacestd;

voidmain()

{

strings;

cin>>s;

for(inti=3;i>=0;i--)

cout<

cout<

}

2、设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:

abc+bcc=532。

求满足条件的所有a、b、c的值。

#include

usingnamespacestd;

voidmain()

{

inta,b,c;

//ints;

for(inti=100;i<1000;i++)

{

a=i/100;

b=i/10-a*10;

c=i%10;

//cout<

//cout<

if((i+b*100+c*10+c)==532)

{

cout<

cout<

}

}

}

3、一个数如果恰好等于它的各因子(该数本身除外)子和,如:

6=3+2+1,则称其为“完数”;若因子之和大于该数,则称其为“盈数”。

求出2到60之间所有“完数”和“盈数”,并以如下形式输出:

E:

e1e2e3......(ei为完数)G:

g1g2g3......(gi为盈数)

#include

usingnamespacestd;

voidmain()

{

cout<<"E:

";

for(inti=2;i<=60;i++)

{

ints=0;

for(intj=1;j

{

if(i%j==0)

{

//s=0;

s+=j;

}

}

if(s==i)

{

cout<

}

}

cout<

cout<<"G:

";

for(intk=2;k<=60;k++)

{

ints=0;

for(intj=1;j

{

if(k%j==0)

{

s+=j;

}

}

if(s>k)

{

cout<

}

}

cout<

}

4、从键盘输入4个学生的数据(包括姓名、年龄和成绩),并存放在文件sf1上。

从该文件读出这些数据,按成绩从高到底排序,并输出其中成绩次高者的所有数据。

#include

#include

#include

usingnamespacestd;

structstudent

{

stringname;

intage;

intscore;

};

voidmain()

{

studentst[4];

students;

studentt;

inti=0;

ofstreamout("sf1.txt");

cout<<"请输入4个学生的姓名,年龄,成绩:

"<

for(i=0;i<4;i++)

{

cin>>s.name>>s.age>>s.score;

out<

}

ifstreamin("sf1.txt");

cout<<"name"<<"age"<<"score"<

for(i=0;i<4;i++)

{

in>>st[i].name>>st[i].age>>st[i].score;

cout<

}

for(i=0;i<4;i++)

for(intj=i+1;j<4;j++)

if(st[i].score

{

t=st[i];

st[i]=st[j];

st[j]=t;

}

cout<<"name"<<"age"<<"score"<

for(i=0;i<4;i++)

cout<

}

2001年

(1):

1、编写程序,计算下列分段函数y=f(x)的值。

y=-x+2.50<=x<2y=2-1.5(x-3)(x-3)2<=x<4y=x/2-1.54<=x<6

#include

usingnamespacestd;

voidmain()

{

intx;

cout<<"请输入x(0-6):

";

cin>>x;

if(x<0&&x>=6)

cout<<"输入有误!

";

if(x>=0&&x<2)

cout<<"y="<<(-x+2.5)<

elseif(x>=2&&x<4)

cout<<"y="<<2-1.5*(x-3)*(x-3)<

elseif(x>=4&&x<6)

cout<<"y="<

}

2、编写程序,读入一个整数N。

若N为非负数,则计算N到2N之间的整数和;若N为一个负数,则求2N到N之间的整数和。

#include

#include

usingnamespacestd;

voidmain()

{

intN;

cout<<"请输入一个整数:

";

cin>>N;

cout<<((N+2*N)*(abs(N)+1))/2<

}

3、设N是一个四位数,它的9倍恰好是其反序数(例如:

1234的反序数是4321),求N的值。

#include

usingnamespacestd;

voidmain()

{

for(inti=1000;i<=9999;i++)

{

inta,b,c,d;

a=i/1000;

b=i/100-a*10;

c=(i/10)%10;

d=i%10;

if(9*i==d*1000+c*100+b*10+a)

cout<

}

}

4、N个人围成一圈顺序编号,从1号开始按1、2、3顺序报数,报3者退出圈外,其余的人再从1、2、3开始报数,报3的人再退出圈外,依次类推。

请按退出顺序输出每个退出人的原序号。

要求使用环行链表编程。

#include

#include

usingnamespacestd;

typedefstructnode

{

intnum;

structnode*next;

}LNode;

voidmain()

{

LNode*head,*p,*q;

intN;

cout<<"输入人数:

";

cin>>N;

p=(LNode*)(malloc(sizeof(LNode)));

p->num=1;

head=p;

for(inti=1;i

{

p->next=(LNode*)(malloc(sizeof(LNode)));

p=p->next;

p->num=i+1;

}

p->next=head;

p=head;

cout<<"输出序列为:

"<

while(p->next!

=p)

{

q=p->next;

p=q->next;

q->next=p->next;

cout<num<<"";

deletep;

p=q->next;

}

cout<num<

deletep;

}

2001年

(2)

1、请输入高度h,输入一个高为h,上底边长为h的等腰梯形(例如h=4,图形如下)。

****

******

********

**********

#include

usingnamespacestd;

voidmain()

{

inth;

cout<<"请输入h:

";

cin>>h;

for(inti=0;i

{

for(intj=0;j

cout<<"";

for(intk=0;k

cout<<"*";

cout<

}

}

2、请编写一个程序,从键盘上输入n(n的范围是1~20),求n的阶乘。

#include

usingnamespacestd;

voidmain()

{

intn;

intsum=1;

//intt=0;

cout<<"请输入n(1-20):

";

cin>>n;

for(inti=1;i<=n;i++)

{

sum=sum*i;

}

cout<

}

3、从键盘上任意输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果。

#include

#include

#include

usingnamespacestd;

voidmain()

{

strings;

cout<<"Enterstring:

";

cin>>s;

sort(s.begin(),s.end());

cout<

}

2002年(A)

1、某人有8角的邮票5张,1元的邮票4张,1元8角的邮票6张,用这些邮票中的一张或若干张可以得到多少中不同的邮资?

#include

usingnamespacestd;

voidmain()

{

intsum=0;

for(inti=0;i<=5;i++)

for(intj=0;j<=4;j++)

for(intk=0;k<=6;k++)

{sum++;

cout<<0.8*i+j+1.8*k<<"";

}

cout<

cout<

}

2、输入n值,使用递归函数,求杨辉三角形中各个位置上的值,按照如下形式打印输出图形。

例如:

当n=6时。

11112113311464115101051

#include

usingnamespacestd;

intfun(intn,intk)//n为行,k为列

{

if(k==0||n==k)

return1;

else

returnfun(n-1,k-1)+fun(n-1,k);

}

voidmain()

{

inti,j,n;

cout<<"请输入n:

";

cin>>n;

for(i=0;i

{

for(intk=0;k

cout<<"";

for(j=0;j<=i;j++)

cout<

cout<

}

}

2002年(B)

1、打印所有不超过n(n<256)的,其平方具有对称性质的数。

如11*11=121。

#include

#include

#include

usingnamespacestd;

voidmain()

{

intt,x;

chars[10];

for(inti=1;i<256;i++)

{

intj=0;

x=i*i;

while(x)

{

t=x%10;

s[j++]=t+48;

x/=10;

}

s[j]='\0';

if(i*i==atoi(s))

{

cout<

}

}

cout<

}

2、编写一个求菲波那奇数列的递归函数,输入n值,使用该递归函数,输出如下图形。

例如:

当n=6时。

001101123011235801123581321011235813213455

#include

usingnamespacestd;

intfun(intn)

{

if(n==0)

return0;

elseif(n==1)

return1;

else

returnfun(n-1)+fun(n-2);

}

voidmain()

{

intn;

cout<<"请输入n:

";

cin>>n;

//cout<<"";

for(inti=0;i

{

for(intj=0;j<(2*n-1)-(2*i+1);j++)

cout<<"";

for(intk=0;k<2*i+1;k++)

cout<

cout<

}

}

2003年

1、输入球的中心点和球上某一点的坐标,计算球的半径和体积。

#include]

#include

usingnamespacestd;

doubleconstPI=3.14156;

voidmain()

{

intx1,x2,y1,y2,z1,z2;

doubler;

cout<<"请输入中心点坐标:

";

cin>>x1>>y1>>z1;

cout<<"请输入球上某一点的坐标:

";

cin>>x2>>y2>>z2;

r=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));

cout<<"半径为:

"<

cout<<"体积为:

"<<4*PI*r*r*r/3<

}

2、手工建立一个文件,文件种每行包括学号、姓名、性别和年龄。

每一个属性使用空格分开。

文件如下:

01李江男2102刘唐男2303张军男1904王娜女19根据输入的学号,查找文件,输出学生的信息。

#include

#include

#include

usingnamespacestd;

structstudent

{

intnum;

stringname;

stringsex;

intage;

};

voidmain()

{

studentt[10];

studentst;

strings;

intNO;

intn;

ofstreamout("student.txt");

cout<<"请输入学生人数:

";

cin>>n;

cout<<"请输入学生信息:

"<

for(inti=0;i

{

cin>>st.num>>st.name>>st.sex>>st.age;

out<

}

cout<<"请输入您要查找学生的学号:

";

cin>>NO;

cout<<"学号"<<"姓名"<<"性别"<<"年龄"<

ifstreamin("student.txt");

for(intj=0;j

{

in>>t[j].num>>t[j].name>>t[j].sex>>t[j].age;

if(t[j].num==NO)

cout<

}

cout<

}

真确算法:

#include

#include

#include

usingnamespacestd;

intmain()

{

charstr[80];

intst_no;

ifstreamfile("student.txt");

if(!

file)

{

cout<<"error!

";

return0;

}

cout<<"输入你要查找的学生的学号:

";

cin>>st_no;

while(!

file.eof())

{

file.getline(str,80);

if(st_no==atoi(str))

{

cout<<"学号"<<"姓名"<<"性别"<<"年龄"<

cout<

}

}

return0;

}

3、输入年月日,计算该填是本年的第几天。

例如1990年9月20日是1990年的第263天,2000年5月1日是2000年第122天。

(闰年:

能被400正除,或能被4整除但不能被100整除。

每年1、3、5、7、8、10为大月)

 #include

usingnamespacestd;

intmonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};

voidmain()

{

inty,m,d;

intsum=0;

cout<<"输人年月日:

";

cin>>y>>m>>d;

for(inti=1;i

{

sum=sum+month[i-1];

}

if(m>2&&(y%400==0)||(y%4==0&&y%100!

=0))

{

sum=sum+1;

}

sum=sum+d;

cout<

}

2004年

第一题是建立一个角类,在这个类中重载减号运算符,并实现求出角度的正弦值的函数。

#include

#include

usingnamespacestd;

doubleconstPI=3.14159;

classangle

{

intX;

public:

voidxsin();

angle(){};

angle(intx){X=x;}

angleoperator-(anglec);

};

angleangle:

:

operator-(anglec)

{

returnangle(X-c.X);

}

voidangle:

:

xsin()

{

doublex=X*PI/180;

cout<<"正弦值为:

"<

}

voidmain()

{

anglea(30),b(60),d;

a.xsin();

b.xsin();

d=b-a;

d.xsin();

}

第二题是建立一个求一元二次方程解的类(a*x^2+b*x+c=0),输入系数a,b,c的值后打印出这个方程的解来,也比较简单。

需要注意的是系数a不能为零以及方程有无解,单解还是双解的情况。

#include

#include

usingnamespacestd;

classRoot

{

inta,b,c;

public:

Root(intaa,intbb,intcc):

a(aa),b(bb),c(cc){}

Root(){}

voidresult();

//voidprint();

};

voidRoot:

:

result()

{

if(a==0)

cout<<"error!

";

doubledelta=b*b-4*a*c;

if(delta==0)

cout<<"单根:

"<<"x="<<-b/2*a<

elseif(delta<0)

cout<<"无解!

"<

else

cout<<"双跟:

"<<"x1="<<-b/2*a+sqrt(delta)/2*a<<""<<"x2="<<-b/2*a-sqrt(delta)/2*a<

}

voidmain()

{

intaa,bb,cc;

cout<<"请输入系数:

";

cin>>aa>>bb>>cc;

Rootx(aa,bb,cc);

//x.a=aa;x.b=bb;x.c=cc;

x.result();

}

 第三道题是实现一个多项式的类(a+b*x+c*x^2+d*x^3+...+),要求输入该多项式的系数和x的值后打印出这个多项式的值。

这道题本身并不难,但他要求用好的算法(实际上就是递归)。

 #include

usingnamespacestd;

intconstsize=60;

intfun(floatnum[],intx,intn,intN)

{

if(n==0)

returnnum[n];

else

returnx*fun(num,x,n-1,N)+num[N-n];

}

voidmain()

{

intn,x;

floatnum[size];

cout<<"请输入最高项次数:

";

cin>>n;

cout<<"请输入各项系数:

";

for(inti=0;i<=n;i++)

cin>>num[i];

cout<<"

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2