计算机院和网院复试上机真题以及参考代码回忆版.docx
- 文档编号:4921821
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:21
- 大小:29.43KB
计算机院和网院复试上机真题以及参考代码回忆版.docx
《计算机院和网院复试上机真题以及参考代码回忆版.docx》由会员分享,可在线阅读,更多相关《计算机院和网院复试上机真题以及参考代码回忆版.docx(21页珍藏版)》请在冰豆网上搜索。
计算机院和网院复试上机真题以及参考代码回忆版
2010北邮复试上机网研的题目:
第一题:
查找
输入数组长度n
输入数组 a[1...n]
输入查找个数m
输入查找数字b[1...m]
输出YESorNO 查找有则YES否则NO
如(括号内容为注释)
输入:
5(数组长度)
15243(数组)
3(查找个数)
256(查找具体数字)
输出:
YES
YES
NO
#include
#include
intmain()
{
intn,m,i,j,a[2001]={0},b[2001]={0},flag=0;
scanf("%d",&n);
for(i=0;i scanf("%d",&a[i]); scanf("%d",&m); for(i=0;i scanf("%d",&b[i]); for(i=0;i { for(j=0;j { if(b[i]==a[j]) { flag=1; printf("YES\n"); break; } } if(flag! =1) printf("NO\n"); flag=0; } ////system("PAUSE"); return0; } 第二题: 查找第K小数 查找一个数组的第K小的数,注意同样大小算一样大 如 213452第三小数为3 如(括号内容为注释) 输入: 6(数组长度n) 213522(数组) 3(K即为第三小数) 输出: 3 Code #include #include intmain(intargc,char*argv[]) { intn,k,i,j,a[1001],temp,m=1; scanf("%d%d",&n,&k); for(i=0;i scanf("%d",&a[i]); for(i=0;i for(j=0;j if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } for(i=0;i if((a[i]==a[i+1])&&(i k++; printf("%d\n",a[k-1]); //system("PAUSE"); return0; ∙} 第三题: 打牌 牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是否能够压过对方出牌 规则: 出牌牌型有5种 [1]一张如4则5...9可压过 [2]两张如44则55,66,77,...,99可压过 [3]三张如444规则如[2] [4]四张如4444规则如[2] [5]五张牌型只有1234523456345674567856789五个,后面的比前面的均大 压过输出YES否则NO 如(括号内容为注释) 输入: 12233445566677(手中牌) 33(出牌) 输出: YES ProblemId: 1820 Submittime: 2010-04-2520: 28: 36 User_id: jyjyjy1989 Memory: 204K Time: 19MS Language: G++ Result: Accepted ∙Code ∙ #include ∙#include ∙using namespace std; ∙ ∙int main(void) ∙{ ∙ char str1[100],str2[5]; ∙ scanf("%s",str1); ∙ char ch;ch=getchar(); ∙ scanf("%s",str2); ∙ int i=0;int count[10]={0}; ∙ while(str1[i]! ='\n') ∙ { ∙ if((str1[i]-'1')==0) count[0]++; ∙ else if((str1[i]-'1')==1) count[1]++; ∙ else if((str1[i]-'1')==2) count[2]++; ∙ else if((str1[i]-'1')==3) count[3]++; ∙ else if((str1[i]-'1')==4) count[4]++; ∙ else if ((str1[i]-'1')==5) count[5]++; ∙ else if((str1[i]-'1')==6) count[6]++; ∙ else if((str1[i]-'1')==7) count[7]++; ∙ else if((str1[i]-'1')==8) count[8]++; ∙ else break; ∙ i++; ∙ } ∙int s1,s2,s3,s4,s5;int flag=1; ∙if(strlen(str2)==1) ∙{ s1=*str2-'1'; ∙for(;s1<9;s1++) ∙ if(count[s1+1]>0) ∙ {printf("YES\n",s1);flag=0;break;} ∙ } ∙else if(strlen(str2)==2) {s2=*str2-'1'; for(;s2<9;s2++)if(count[s2+1]>=2) {printf("YES\n",s2);flag=0;break;} } ∙else if(strlen(str2)==3) {s3=*str2-'1'; for(;s3<9;s3++)if(count[s3+1]>=3) {printf("YES\n");flag=0;break;} } ∙else if(strlen(str2)==4) {s4=*str2-'1'; for(;s4<9;s4++)if(count[s4+1]>=4) {printf("YES\n");flag=0;break;} } ∙else if(strlen(str2)==5){s5=*str2-'1'; for(;s5<9;s5++) if(count[s5+5]>0&&count[s5+1]>0&&count[s5+2]>0&&count[s5+3]>0&&count[s5+4]>0&&((s5+5)<9)) {printf("YES\n");flag=0;break;}} ∙if(flag==1) printf("NO\n"); ∙ // system("PAUSE"); ∙ return EXIT_SUCCESS; ∙} 第四题: 树查找 简单说就是一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY,具体描述得借助图形比较好,懒得写了,基本就是这个样子的。 2010计算机学院上机题目回忆版 ACM——BOJ——2010年北邮计算机学院研究生入学考试(复试)上机测试——即1814(A比较奇偶数个数)、1815(B找最小数)、1816(C翻转)、1817(D哈夫曼树) 因为boj上题目都已经看不到了。 所以题目只能是回忆版。 但boj上仍然可以提交。 所有知道题意以后,仍然可以自己进行测试。 题目大意(回忆版): 第一行输入一个数,为n,第二行输入n个数,这n个数中,如果偶数比奇数多,输出NO,否则输出YES。 Sample: Input: 5 12345 Output: YES ProblemId: 1814 Submittime: 2010-04-1014: 06: 48 User_id: bupt111310352 Memory: 72KTime: 17MS Language: G++Result: Accepted Code */ #include intmain() { //所有数的数目 intm_Num_Count; scanf("%d",&m_Num_Count); //输入数 intm_Input_Num; //偶数奇数的个数 intm_Oushu_Count=0,m_Jishu_Count=0; //循环输入 while(m_Num_Count>0) { scanf("%d",&m_Input_Num); getchar(); //判断奇偶并计数 if((m_Input_Num%2)==0) ++m_Oushu_Count; else ++m_Jishu_Count; --m_Num_Count; } //输出 if(m_Jishu_Count>=m_Oushu_Count) printf("YES\n"); else printf("NO\n"); return0; } /* 题目大意(回忆版): 第一行输入一个数n,1<=n<=1000,下面输入n行数据,每一行有两个数,分别是xy。 输出一组xy,该组数据是所有数据中x最小,且在x相等的情况下y最小的。 Sample: Input: 5 33 22 55 21 36 Output: 21 ProblemId: 1815 Submittime: 2010-04-1014: 24: 39 User_id: bupt111310352 Memory: 104KTime: 19MS Language: G++Result: Accepted Code */ #include typedefstructLNode { intm_X;//x坐标值 intm_Y;//y坐标值 boolm_Used;//该位是否被使用 }; intmain() { //样例个数 intm_Case_Count; scanf("%d",&m_Case_Count); //因为1<=N<=1000,建结点 LNodem_Case[1000]; //循环数 intm_Cycle; //最小的x,y值,并初始化,1<=x,y<=1000 intm_X_Min=1000,m_Y_Min=1000; //初始化结点被使用状态 for(m_Cycle=0;m_Cycle<1000;++m_Cycle) m_Case[m_Cycle].m_Used=false; //初始化循环数,下面使用 m_Cycle=0; //循环输入样例 while(m_Case_Count>0) { //输入坐标值 scanf("%d%d",&m_Case[m_Cycle].m_X,&m_Case[m_Cycle].m_Y); //置状态值,并且m_Cycle++ m_Case[m_Cycle++].m_Used=true; --m_Case_Count; } //循环找最小的x,y值 for(m_Cycle=0;(m_Cycle<1000)&&(m_Case[m_Cycle].m_Used);++m_Cycle) { if(m_Case[m_Cycle].m_X { //如果找到更小的x值,记录 m_X_Min=m_Case[m_Cycle].m_X; m_Y_Min=m_Case[m_Cycle].m_Y; } elseif(m_Case[m_Cycle].m_X==m_X_Min) { //如果x值相等,判断y值,如果在相等的x值的条件下,找到更小的的y值,记录y if(m_Case[m_Cycle].m_Y m_Y_Min=m_Case[m_Cycle].m_Y; } } //输出找到的最小值 printf("%d%d\n",m_X_Min,m_Y_Min); return0; } /* 题目大意(回忆版): 该题是要翻转数据。 首先输入一个5*5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数xy代表需操作数据为以xy为左上角的那几个数据。 操作类型有四种: 12表示: 90度,顺时针,翻转4个数 13表示: 90度,顺时针,翻转9个数 22表示: 90度,逆时针,翻转4个数 23表示: 90度,逆时针,翻转9个数 Sample: Input: 12345 678910 1112131415 1617181920 2122232425 1311 Output: 116145 1272910 13831415 1617181920 2122232425 ProblemId: 1816 Submittime: 2010-04-1015: 06: 04 User_id: bupt111310352 Memory: 88KTime: 14MS Language: G++Result: Accepted 解题思路: --。 自己细心点就行。 。 。 Code */ #include intmain() { //输入数据 intm_Case[5][5]; scanf("%d%d%d%d%d",&m_Case[0][0],&m_Case[0][1],&m_Case[0][2],&m_Case[0][3],&m_Case[0][4]); scanf("%d%d%d%d%d",&m_Case[1][0],&m_Case[1][1],&m_Case[1][2],&m_Case[1][3],&m_Case[1][4]); scanf("%d%d%d%d%d",&m_Case[2][0],&m_Case[2][1],&m_Case[2][2],&m_Case[2][3],&m_Case[2][4]); scanf("%d%d%d%d%d",&m_Case[3][0],&m_Case[3][1],&m_Case[3][2],&m_Case[3][3],&m_Case[3][4]); scanf("%d%d%d%d%d",&m_Case[4][0],&m_Case[4][1],&m_Case[4][2],&m_Case[4][3],&m_Case[4][4]); //输入操作 intm_Op_First,m_Op_Second,m_X,m_Y; scanf("%d%d%d%d",&m_Op_First,&m_Op_Second,&m_X,&m_Y); //临时数据 intm_Temp_First,m_Temp_Second; if((m_Op_First==1)&&(m_Op_Second==2)) { //如果是12,翻转4个数,90度,顺时针 m_Temp_First=m_Case[m_X-1][m_Y-1]; m_Case[m_X-1][m_Y-1]=m_Case[m_X][m_Y-1]; m_Case[m_X][m_Y-1]=m_Case[m_X][m_Y]; m_Case[m_X][m_Y]=m_Case[m_X-1][m_Y]; m_Case[m_X-1][m_Y]=m_Temp_First; } elseif((m_Op_First==1)&&(m_Op_Second==3)) { //如果是13,翻转9个数,90度,顺时针 m_Temp_First=m_Case[m_X-1][m_Y-1];//00 m_Temp_Second=m_Case[m_X][m_Y-1];//10 m_Case[m_X-1][m_Y-1]=m_Case[m_X+1][m_Y-1];;//00=20 m_Case[m_X][m_Y-1]=m_Case[m_X+1][m_Y];//10=21 m_Case[m_X+1][m_Y-1]=m_Case[m_X+1][m_Y+1];//20=22 m_Case[m_X+1][m_Y]=m_Case[m_X][m_Y+1];//21=12 m_Case[m_X+1][m_Y+1]=m_Case[m_X-1][m_Y+1];//22=02 m_Case[m_X][m_Y+1]=m_Case[m_X-1][m_Y];//12=01 m_Case[m_X-1][m_Y+1]=m_Temp_First;//02=00 m_Case[m_X-1][m_Y]=m_Temp_Second;//01=10 } elseif((m_Op_First==2)&&(m_Op_Second==2)) { //如果是22,翻转4个数,90度,逆时针 m_Temp_First=m_Case[m_X-1][m_Y-1]; m_Case[m_X-1][m_Y-1]=m_Case[m_X-1][m_Y]; m_Case[m_X-1][m_Y]=m_Case[m_X][m_Y]; m_Case[m_X][m_Y]=m_Case[m_X][m_Y-1]; m_Case[m_X][m_Y-1]=m_Temp_First; } elseif((m_Op_First==2)&&(m_Op_Second==3)) { ////如果是23,翻转9个数,90度,逆时针 m_Temp_First=m_Case[m_X-1][m_Y-1];//00 m_Temp_Second=m_Case[m_X-1][m_Y];//01 m_Case[m_X-1][m_Y-1]=m_Case[m_X-1][m_Y+1];//00=02 m_Case[m_X-1][m_Y]=m_Case[m_X][m_Y+1];//01=12 m_Case[m_X-1][m_Y+1]=m_Case[m_X+1][m_Y+1];//02=22 m_Case[m_X][m_Y+1]=m_Case[m_X+1][m_Y];//12=21 m_Case[m_X+1][m_Y+1]=m_Case[m_X+1][m_Y-1];//22=20 m_Case[m_X+1][m_Y]=m_Case[m_X][m_Y-1];//21=10 m_Case[m_X+1][m_Y-1]=m_Temp_First;//20=00 m_Case[m_X][m_Y-1]=m_Temp_Second;//10=01 } //输出 printf("%d%d%d%d%d\n",m_Case[0][0],m_Case[0][1],m_Case[0][2],m_Case[0][3],m_Case[0][4]); printf("%d%d%d%d%d\n",m_Case[1][0],m_Case[1][1],m_Case[1][2],m_Case[1][3],m_Case[1][4]); printf("%d%d%d%d%d\n",m_Case[2][0],m_Case[2][1],m_Case[2][2],m_Case[2][3],m_Case[2][4]); printf("%d%d%d%d%d\n",m_Case[3][0],m_Case[3][1],m_Case[3][2],m_Case[3][3],
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 复试 上机 以及 参考 代码 回忆