国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

藍橋杯——2015 西工大計算機研究生機試真題(節選,2017.2.7)

2019-11-11 02:05:49
字體:
來源:轉載
供稿:網友

1.

源代碼:

#include <stdio.h>void FindtheMinimum(int a,int b,int c){	int t;	if(a>b)		t=a,a=b,b=t;	if(b>c)		t=b,b=c,c=t;	if(a>b)		t=a,a=b,b=t;	PRintf("%d/n",a);}int main(){	int a,b,c;	while(scanf("%d %d %d",&a,&b,&c)!=EOF)		FindtheMinimum(a,b,c);	return 0;}程序截圖:

2. 

源代碼:

#include <stdio.h>#define maxn 25int main(){	int i,j,a[maxn][maxn];	int m,n,N;	char direction;	while(scanf("%d",&N)!=EOF)	{		for(i=0;i<N;i++)			for(j=0;j<N;j++)				a[i][j]=0;		scanf("%d %d",&m,&n);		scanf("%c",&direction);		if(direction=='w')		{			if(m-1>=0 && m-1<N)				printf("Y/n");			else				printf("N/n");		}		else if(direction=='s')		{			if(m+1>=0 && m+1<N)				printf("Y/n");			else				printf("N/n");		}		else if(direction=='a')		{			if(n-1>=0 && n-1<N)				printf("Y/n");			else				printf("N/n");		}		else if(direction=='d')		{			if(n+1>=0 && n+1<N)				printf("Y/n");			else				printf("N/n");		}	}	return 0;}程序截圖:

3. 

源代碼:

#include <stdio.h>#define maxn 105int main(){	int i,j,a[maxn][maxn];	int m,n,N,direction;	int nextloc;	while(scanf("%d",&N)!=EOF)	{		for(i=0;i<N;i++)			for(j=0;j<N;j++)				scanf("%d",&a[i][j]);		scanf("%d %d",&m,&n);		scanf("%d",&direction);		if(direction==0)		{			nextloc=a[m][n-1];			if(n-1>=0 && n-1<N && nextloc==0)				printf("Y/n");			else				printf("N/n");		}		else if(direction==1)		{			nextloc=a[m+1][n];			if(m+1>=0 && m+1<N && nextloc==0)				printf("Y/n");			else				printf("N/n");		}		else if(direction==2)		{			nextloc=a[m][n+1];			if(n+1>=0 && n+1>N && nextloc==0)				printf("Y/n");			else				printf("N/n");		}		else if(direction==3)		{			nextloc=a[m-1][n];			if(m-1>=0 && m-1<N && nextloc==0)				printf("Y/n");			else				printf("N/n");		}	}	return 0;}程序截圖:

4. 

源代碼:

#include <stdio.h>#include <string.h>#define maxlen 256void GetNextval(char b[],int nextval[]){	int j=0,k=-1;	int lenb=strlen(b);	nextval[0]=-1;	while(j<lenb)	{		if(k==-1 || b[j]==b[k])		{			j++,k++;			if(b[j]!=b[k])				nextval[j]=k;			else				nextval[j]=nextval[k];		}		else			k=nextval[k];	}}void Replace(char a[],char b[],char c[]){	int nextval[maxlen],i=0,j=0;	int lena=strlen(a),lenb=strlen(b),lenc=strlen(c);	int t;                               //t記錄匹配點 	GetNextval(b,nextval);	while(i<lena && j<lenb)	{		if(j==-1 || a[i]==b[j])		{			i++;			j++;		}		else			j=nextval[j];	}	if(j>=lenb)		t=i-lenb;	for(i=0;i<t;i++)		printf("%c",a[i]);	printf("%s",c);	for(i=t+lenb;i<lena;i++)		printf("%c",a[i]);	printf("/n");}int main(){	char a[maxlen],b[maxlen],c[maxlen];	while(scanf("%s",a)!=EOF)	{		scanf("%s",b);		scanf("%s",c);		Replace(a,b,c);	}	return 0;}程序截圖:

===================================我是分割線===================================

回顧與拓展:串的模式匹配(KMP算法)

5. 輸入主串source與模式串obj(長度<=1000),在主串中尋找模式串,找到返回第一個匹配主串的首字符下標,否則返回-1

源代碼:

#include <stdio.h>#include <string.h>#define maxlen 1010void GetNextval(char obj[],int nextval[])        //使用修正后的求nextval數組算法 {	int j=0,k=-1;	int len=strlen(obj);	nextval[0]=-1;	while(j<len)	{		if(k==-1 || obj[j]==obj[k])		{			j++,k++;			if(obj[j]!=obj[k])				nextval[j]=k;			else				nextval[j]=nextval[k];		}		else			k=nextval[k];	}}void KMP(char source[],char obj[]){	int nextval[maxlen];	int i=0,j=0;	int len1=strlen(source),len2=strlen(obj);	GetNextval(obj,nextval);	while(i<len1 && j<len2)	{		if(j==-1 || source[i]==obj[j])			i++,j++;		else			j=nextval[j];	}	if(j>=len2)		printf("%d/n",i-len2);	else		printf("-1/n");}int main(){	char source[maxlen],obj[maxlen];	while(gets(source)!=NULL)	{		gets(obj);		KMP(source,obj);	}	return 0;}程序截圖:

6. 采用順序結構存儲串,編寫一個算法計算指定子串在一個字符串中出現的次數,如果該子串不出現則為0

源代碼:

#include <stdio.h>#include <string.h>#define maxlen 1010void Objcount(char source[],char obj[]){	int i=0,j=0,count=0;                          //count-子串出現次數 	int len1=strlen(source),len2=strlen(obj);	while(i<len1 && j<len2)	{		if(source[i]==obj[j])                     //主串與子串字符相同,繼續匹配下一個字符		{			i++;			j++;		}		else                                      //否則主串、子串指針回溯,重新開始下一次匹配		{			i=i-j+1;			j=0;		}		if(j>=len2)                               //如果j已經達到了子串的長度,產生了一個匹配		{			count++;                              //匹配次數+1 			i=i-j+1;                              //主串從下一個位置開始繼續匹配			j=0;                                  //子串從頭開始匹配 		}	}	printf("%d/n",count);}int main(){	char source[maxlen],obj[maxlen];	while(gets(source)!=NULL)	{		gets(obj);		Objcount(source,obj);	}	return 0;}程序截圖:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漳平市| 延吉市| 芦溪县| 庆阳市| 五家渠市| 新化县| 祥云县| 肇源县| 丰原市| 讷河市| 铁岭市| 芜湖县| 满洲里市| 东平县| 江永县| 黄浦区| 中江县| 莆田市| 张家川| 商城县| 丰原市| 凌源市| 江口县| 高青县| 蒙山县| 红桥区| 曲麻莱县| 娄烦县| 张家港市| 舟山市| 江都市| 台中县| 南华县| 宜城市| 扬中市| 扬中市| 阿拉善右旗| 烟台市| 泸州市| 尤溪县| 股票|