南京理工大学计算机专业研究生入学考试上机复试真题回忆整理版.docx
《南京理工大学计算机专业研究生入学考试上机复试真题回忆整理版.docx》由会员分享,可在线阅读,更多相关《南京理工大学计算机专业研究生入学考试上机复试真题回忆整理版.docx(7页珍藏版)》请在冰豆网上搜索。
南京理工大学计算机专业研究生入学考试上机复试真题回忆整理版
2010上机题
1.输入两个字符串s和t,打印出t在s中的出现的位置,并输出出现的次数
如输入:
s=qwqwertqweqqqq,t=qw
输出:
135
3
2.观察一个数的序列规律,1,2,3,4,5,6,8,9,10,12,15,16,18……
现在输入一个数8(即上述序列中的第8个数),输出:
9
试编程实现。
注:
上述序列皆是1,2,3,5,的倍数
3.求二进制逆序
如输入10,对应二进制数为1010,其逆序为0101,对应十进制输出为5(5即为10的逆序数)。
4.
求满足条件n*n-m*m-n*m=1,且使m*m+n*n值最大的m,n,其中m,n的值都要小于k,k由用户输入。
5.已知一个数组如a【10】={1,2,3,4,5,6,7,8,9,0},输入p,则右移p位,如输入3后,输出a【10】={8,9,0,1,2,3,4,5,6,7},要求时间复杂度和空间复杂度尽量小。
6.已知一个斜三角:
2232147745
12343723
442315
3454
88
从最左上角元素开始往右或往右下走,请问顺着哪条路所经过的值的总和最大,
如可以有路线:
22,32,34,23,54;22,12,44,34,88等等
请求出满足值总和最大的那条线路。
2010上机原题答案
毕竟回忆的,个别地方会有一点点的出入
第六题没来得及做,第一题有点问题,大家自己调一下。
第一题
#include
#include
#include
#include
voidmain()
{
chars[70],t[100];
inti=0,j,count=0,len;
cout<<"输入两字符串:
"<cin>>s;
cout<<"输入第2个字符串:
"<cin>>t;
len=strlen(t);
while(s!
='\0')
{
for(j=0;j<=len;j++)
{if(s[i+j]==t[j])
j++;
elsebreak;
}
if(j==len+1)
{count++;
cout<
}
i++;
}
cout<}
第二题
#include
#include
#include
intfun(intn)
{
while(n%2==0)
n=n/2;
while(n%3==0)
n=n/3;
while(n%5==0)
n=n/5;
if(n==1)return1;
elsereturn0;
}
voidmain()
{
intj=0,n,a[1500];
longi;
for(i=1;i<1000000;i++)
{if(fun(i))
a[j++]=i;
}
cout<<"输入n(n<=1500):
"<cin>>n;
cout<}
第三题
#include
#include
#include
voidmain()
{
inti=0,m,j=0,n=0,a[100];
cout<<"输入一个十进制数:
"<cin>>m;
while(m!
=0)
{
a=m%2;
m=m/2;
i++;
}
while(j
{
n=n*2+a[j];
j++;
}
cout<<"其二进制逆序数:
"<}
第四题
#include
#include
#include
voidmain()
{
intm,n,k,maxm,maxn,max=0;
cout<<"输入k:
"<cin>>k;
for(m=0;m<=k;m++)
for(n=0;n<=k;n++)
if(n*n-m*n-m*m==1&&max{max=m*m+n*n;
maxm=m;
maxn=n;
}
cout<"<}
第五题
#include
#include
#include
voidmain()
{
intp,i,j,r[10]={1,2,3,4,5,6,7,8,9,10},s[10];
cin>>p;
for(i=0;i<=p-1;i++)
s=r;
for(j=p;j<=10;j++)
r[j-p]=r[j];
for(j=0;j
r[10-p+j]=s[j];
cout<<"左移后的结果:
"<for(i=0;i<10;i++)
cout<cout<}