北航機試題2014(題目+代碼)

https://apriljia.com/2018/07/16/%E5%8C%97%E8%88%AA%E4%B8%8A%E6%9C%BA%E8%AF%95%E9%A2%982014%EF%BC%88%E9%A2%98%E7%9B%AE%E4%BB%A3%E7%A0%81%EF%BC%89/

1.階乘數。輸入一個正整數,輸出時,先輸出這個數本身,跟着一個逗號,再輸出這個數的各位數字的階乘和,等號,階乘和的計算結果,並判斷階乘和是否等於原數,如果相等輸出Yes,否則輸出No。各數字均不會超出INT的範圍

輸入 145
輸出
145,1!+4!+5!=145
Yes
輸入 1400
輸出
1400,1!+4!+0!+0!=27

No

#include "stdafx.h"
#include <iostream>
#include <string>
#include "math.h"
#include "stdio.h"
#include "string.h"
#include "ctype.h"
#include <vector>
#include <queue>
#include <map>
#include <algorithm>

using namespace std; 
int jiecheng(int n){
	int result=1;
	for(int i=n;i>0;i--)
		result*=i;
	return result;
}

int main(int argc, char* argv[])
{	 
	int n,n1;
	int num[100];
	int m=0;
	int sum=0;
	scanf("%d",&n);
	n1=n;
	while(n1!=0){
		num[m++]=n1%10;
		n1/=10;
	}
	printf("%d,",n);
	for(int i=m-1;i>0;i--){
		printf("%d!+",num[i]);
		sum+=jiecheng(num[i]);
	}
	printf("%d!=",num[0]);
	sum+=jiecheng(num[0]);
	printf("%d\n",sum);
	if(sum==n) printf("yes");
	else printf("no");
	return 0;
}


2.五子棋。輸入一個19*19的矩陣,只包含數字0、1、2,表示兩人下五子棋的棋牌狀態,1、2分別表示兩人的棋子,0表示空格。要求判斷當前狀態下是否有人獲勝(橫向、豎向或者斜線方向連成5個同色棋子)。題目說明輸入樣例保證每條線上至多隻有連線5個同色棋子,並且保證至多隻有1人獲勝。如果有人獲勝,輸出獲勝者1或2,加一個冒號,接着輸出獲勝的五連珠的第一個棋子的座標,從上到下從左到右序號最小的爲第一個,序號從1開始編號。如果無人獲勝,輸出No。
輸入
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0

輸出 No

#include "stdafx.h"
#include <iostream>
#include <string>
#include "math.h"
#include "stdio.h"
#include "string.h"
#include "ctype.h"
#include <vector>
#include <queue>
#include <map>
#include <algorithm>

using namespace std; 

int panduan(int qipan[19][19],int &rx,int &ry){
	int result=0;
	int t;
	for(int i=0;i<19;i++){
		for(int j=0;j<19;j++){
			if(qipan[i][j]!=0){
				t=qipan[i][j];
				if(j<19-4){
					if(t==qipan[i][j+1]&&t==qipan[i][j+2]&&t==qipan[i][j+3]&&t==qipan[i][j+4])
					{
						rx=i;
						ry=j;
						return qipan[i][j];
					}
				}
				if(i<19-4){
					if(t==qipan[i+1][j]&&t==qipan[i+2][j]&&t==qipan[i+3][j]&&t==qipan[i+4][j])
					{
						rx=i;
						ry=j;
						return qipan[i][j];
					}
				}
				if(i<19-4&&j<19-4){
					if(t==qipan[i+1][j+1]&&t==qipan[i+2][j+2]&&t==qipan[i+3][j+3]&&t==qipan[i+4][j+4])
					{
						rx=i;
						ry=j;
						return qipan[i][j];
					}
				}
				if(i<19-4&&j>3){
					if(t==qipan[i+1][j-1]&&t==qipan[i+2][j-2]&&t==qipan[i+3][j-3]&&t==qipan[i+4][j-4])
					{
						rx=i;
						ry=j;
						return qipan[i][j];
					}
				}

			}
		}
	}
	return 0;
}
int main(int argc, char* argv[])
{	 
	int qipan[19][19];
	int i,j;
	for(i=0;i<19;i++)
		for(j=0;j<19;j++)
			scanf("%d",&qipan[i][j]);
	int result=panduan(qipan,i,j);
	if(result==0)printf("no");
	else {
		printf("%d:(%d,%d)",result,i,j);
	}

	return 0;
}

3.排版題。輸入若干行字符,表示某電影的演職員表,每行只有一個冒號,冒號前面是職位,冒號後面是姓名,要求把各行冒號對齊,刪除多餘空格後輸出。先輸入一個數字,表示排版要求的冒號位置,該位置號保證比各行冒號前的最大字符數還要大。再輸入若干行字符,最多50行,每行最多100個字符,除空格、製表符和回車之外都是有效字符,要求每行的冒號處於格式要求的位置,冒號兩邊與有效單詞之間各有一個空格,冒號前面的單詞之間只有一個空格(刪除多餘的空格和製表符),在冒號左邊右對齊,前面全由空格填充,冒號後面的單詞之間也只有一個空格,在冒號右邊左對齊,最後一個單詞後不加空格直接換行。

#include "stdafx.h"
#include <iostream>
#include <string>
#include "math.h"
#include "stdio.h"
#include "string.h"
#include "ctype.h"
#include <vector>
#include <queue>
#include <map>
#include <algorithm>

using namespace std; 

int main(int argc, char* argv[])
{	 
	int mao=50;
	char c;
	char s[50][100];
	int maoindex[50];
	int si=0,i=0,spaceflag=0;
	scanf("%d",&mao);
	getchar();

	while((c=getchar())!=EOF){
		if(c==' ') {
			if(spaceflag==1||i==0) continue;
			spaceflag=1;
		}
		if(c=='\n') {
			if(spaceflag==0){
				s[si++][i]=0;
				i=0;
				//printf("%s",s[si-1]);
				continue;
			}else{
				s[si++][i-1]=0;
				i=0;
				//printf("%s",s[si-1]);
				continue;
			}
		}
		if(c==':') {
			if(spaceflag==0){
				s[si][i++]=' ';
			}
			maoindex[si]=i;
		}

		s[si][i++]=c;
		if(c==':') {
			s[si][i++]=' ';
		}
		if(c!=' ') {
			spaceflag=0;
		}
	}

	for(int j=0;j<si;j++){
		for(int k=0;k<mao-maoindex[j];k++){
			printf(" ");
		}
		printf("%s\n",s[j]);
	}
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章