`
thecloud
  • 浏览: 881847 次
文章分类
社区版块
存档分类
最新评论

2011年北航计算机复试上机题代码

 
阅读更多

下面的代码是自己写的,难免有纰漏之处,发现请指正,谢谢。

点击2011年北航计算机复试上机题


  • 第一题

/**************************************************************************
* Problem: 北航2011上机题1
* Copyright 2011 by Yan
* DATE:
* E-Mail: yming0221@gmail.com
************************************************************************/

#include<stdio.h>

int tab[20001];/*存储每个数的因数之和*/

int main()
{
	int m,n;
	int i,j;
	int flag;
	for(i=1;i<20001;i++)
	{
		for(j=1;j<i;j++)
		{
			if(i%j==0) tab[i]+=j;
		}
	}
	while(scanf("%d %d",&m,&n)!=EOF)
	{
		flag=0;
		for(i=m;i<=n;i++)
		{
			for(j=m;j<i;j++)
			{
				if(tab[i]==j && tab[j]==i) printf("%d %d ",j,i),flag=1;
			}
		}
		if(flag==1) printf("\n");
		if(flag==0) printf("NONE\n");
	}
	return 0;
}

上面使用打表的方式,这样打表只计算一遍,如果是多重输入的话推荐这样,如果是单重输入,可以将打表放在输入后,减少打表时间复杂度。

  • 第二题
/**************************************************************************
* Problem: 2011北航上机2题
* Copyright 2011 by Yan
* DATE:
* E-Mail: yming0221@gmail.com
************************************************************************/

#include<stdio.h>
#define MAX 21
#define MIN(a,b) (a)>(b)?(b):(a)
int value[MAX][MAX];
int sub[MAX][MAX];

int main()
{
	freopen("input","r",stdin);
	int m,n;/*原矩阵大小*/
	int i,j;
	int x,y;/*替换矩阵大小  x行、y列*/
	int posx,posy;
	int tmp1,tmp2;
	while(scanf("%d %d",&m,&n)!=EOF)
	{
		for(i=0;i<m;i++)
			for(j=0;j<n;j++) scanf("%d",&value[i][j]);
		scanf("%d %d",&x,&y);
		for(i=0;i<x;i++)
			for(j=0;j<y;j++) scanf("%d",&sub[i][j]);

		scanf("%d %d",&posx,&posy);

		tmp1=MIN(posx+x,m);tmp2=MIN(posy+y,n);

		for(i=posx-1;i<tmp1;i++)
			for(j=posy-1;j<tmp2;j++)
				value[i][j]=sub[i-posx+1][j-posy+1];
		for(i=0;i<m;i++)
		{
			for(j=0;j<n;j++)
				printf("%d ",value[i][j]);
			printf("\n");
		}

	}
	return 0;
}


  • 第三题

/**************************************************************************
* Problem: 2011北航上机题3
* Copyright 2011 by Yan
* DATE:
* E-Mail: yming0221@gmail.com
************************************************************************/

#include<stdio.h>

char str[100];

int main()
{
	freopen("input","r",stdin);
	int i,j;
	while(scanf("%s",str)!=EOF)
	{
		for(i=0;str[i]!='\0';i++)
		{
			if(str[i]=='-')
			{
				if(str[i-1]>='A' && str[i-1]<='Z' && str[i+1]>='A'
					&& str[i+1]<='Z' && str[i+1]>str[i-1])/*大写字母扩展*/
				{
					for(j=str[i-1]+1;j<str[i+1];j++) printf("%c",j);
				}
				else if(str[i-1]>='a' && str[i-1]<='z' && str[i+1]>='a'
					&& str[i+1]<='z' && str[i+1]>str[i-1])/*小写字母扩展*/
				{
					for(j=str[i-1]+1;j<str[i+1];j++) printf("%c",j);
				}
				else if(str[i-1]>='0' && str[i-1]<='9' && str[i+1]>='0'
					&& str[i+1]<='9' && str[i+1]>str[i-1])/*数字扩展*/
				{
					for(j=str[i-1]+1;j<str[i+1];j++) printf("%c",j);
				}
				else printf("-");
			}
			else printf("%c",str[i]);/*不扩展*/
		}
		printf("\n");
	}
	return 0;
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics