码迷,mamicode.com
首页 > 其他好文 > 详细

北京航空航天大学计算机系考研复试上机真题及答案---2014

时间:2015-07-25 09:24:06      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:

第一题,阶乘数。 输入一个正整数,输出时,先输出这个数本身,跟着一个逗号,再输出这个数的各位数字的阶乘和,等号,阶乘和的计算结果,并判断阶乘和是否等于原数,如果相等输出Yes,否则输出No。题目说明输入的正整数以及其各位阶乘和都不会超出int型的表示范围。 输入样例1: 145 输出样例1: 145,1!+4!+5!=145 Yes 输入样例2: 1400 输出样例2: 1400,1!+4!+0!+0!=27 No 第二题,五子棋。 输入一个19*19的矩阵,只包含数字0、1、2,表示两人下五子棋的棋牌状态,1、2分别表示两人的棋子,0表示空格。要求判断当前状态下是否有人获胜(横向、竖向或者斜线方向连成5个同色棋子)。题目说明输入样例保证每条线上至多只有连续5个同色棋子,并且保证至多只有1人获胜。如果有人获胜,输出获胜者(1或2)加一个冒号,接着输出获胜的五连珠的第一个棋子的坐标,从上到下从左到右序号最小的为第一个,序号从1开始编号。如果无人获胜,输出no。 参考答案(本人编写,仅用于交流) 第一题 #include"stdio.h" int factorial(int n){ int sum=1; for(int i=2; i<=n; i++){ sum = sum*i; } return sum; } void sum(int n){ int a,b = n; int s = 0; int m=10;//注意是正序输出,不是逆序输出,因此要从前面开始除 while(b/m != 0){ m = m*10; } m = m/10; while(m !=0 ){ a = b/m; printf("%d!",a); b = b - a*m; s = s + factorial(a); m = m/10; if(m != 0){ printf("+"); }else{ printf("=%d\n",s); } } if(n == s){ printf("Yes\n"); }else{ printf("No\n"); } } int main(){ int n; freopen("c:\\input.txt","r",stdin); scanf("%d",&n); printf("%d,",n); sum(n); return 0; } 第二题 //随进生成数组,与题意并不是100%符合,但寻找方法没问题 #include #include #include #define M 19 #define N 19 void isWin(int a[M][N],int m,int n){ int t1,t2,t3,t4; int i=0,j=0; for(i=0; i=0){ t4 = a[i][j] & a[i+1][j-1] & a[i+2][j-2] & a[i+3][j-3] & a[i+4][j-4]; } if(t1 !=0 || t2 != 0 || t3!=0 || t4 != 0){ break; } } if(t1 !=0 || t2 != 0 || t3!=0 || t4 != 0){ break; } } if(t1 !=0){ printf("%d:%d,%d\n",t1,i+1,j+1); } else if(t2 !=0){ printf("%d:%d,%d\n",t2,i+1,j+1); } else if(t3 !=0){ printf("%d:%d,%d\n",t3,i+1,j+1); } else if(t4 !=0){ printf("%d:%d,%d\n",t4,i+1,j+1); }else{ printf("no\n"); } } int main(){ srand(time(0)); int a[M][N]; for(int i=0; i北京航空航天大学计算机系考研复试上机真题及答案---2014

标签:

原文地址:http://www.cnblogs.com/shuaishuai-it/p/4675257.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!