zoukankan      html  css  js  c++  java
  • 上机练习八

    导航:复试上机历年真题,题目未搜集全
    十四:2003 十三:2004
    十二:2005 十一:2006
    十:2007 九:2008
    八:2009 七:2012
    六:2013 五:2014
    四:2015 三:2017
    二:2018 一:2019

    八、2009

    1、进制转换

    题目:
    编程实现将一个无符号十进制整数 I 转换成 B(2<=B<=16)进制数并
    输出。

    代码:

    #include<stdio.h>
    #include<algorithm>
    
    using namespace std;
    
    
    
    int main()
    {
    	
    	int N, B;
    	scanf("%d %d", &N, &B);
    	
    	char a[10];//可能需要存储字符 
    	int num=0;
    	
    	int t;
    	while(N!=0)
    	{
    		t = N%B;
    		if(t>=10)
    			a[num++] = t-10+'A';
    		else if(t<10)
    			a[num++] = t+'0';
    		
    		N /= B;
    	} 
    	
    	reverse(a, a+num);
    	if(num>0)
    		printf("%s", a);
    	else
    		printf("0");
    	
    	return 0;
    }
     
    

    2、单词查找

    题目:
    假设有个词典库,内存的单词和其 ID 号如下所示。编程实现,输入一个单词(不区分大小写):
    (1)如果该单词和库内的单词完全相同,则输出该单词的 ID号;
    (2)如果该单词和词库中的某个词错了一个字母,则输出“单词错误,您是否想输入:”后跟正确的单词;
    (3)其他情况输出,“库中没有该单词!”。

    代码:

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    
    
    typedef struct words{
    	char id[10];
    	char word[10];
    }words;
    
    
    words w[8] = {
    	{ "1000", "face"}, { "1001", "head"},
    	{ "1002", "hand"}, { "1003", "nose"},
    	{ "1004", "ear"}, { "1005", "kneel"},
    	{ "1006", "finger"}, { "1007", "leg"},
    };
    
    
    int strMatch(char str1[], char str2[])//字符串匹配,成功为1,失败为0 
    {
    	int res=0, len1, len2;
    	len1 = strlen(str1);
    	len2 = strlen(str2);
    	
    	int i, j, p;
    	p = 0;
    	i = p; j = 0;
    	while(i<len1&&j<len2)
    	{
    		if(str1[i]==str2[j])
    		{
    			i++;
    			j++;
    		}
    		else
    		{
    			p++;
    			i = p;
    			j = 0;
    		}
    	}
    
    	if(j>=len2)
    		res = 1;
    	
    	return res;
    } 
    
    
    int main()
    {
    	char str[10], id[10];
    	int len;
    	
    	while(gets(str)!=NULL)
    	{
    		
    		len = strlen(str);
    		int wlen, flag, minn;
    		minn = len;
    		for(int i=0;i<8;i++)
    		{
    			if(strcmp(w[i].word, str)==0)//匹配成功,退出 
    			{
    				flag = 0;//falg=0表示成功匹配 
    				strcpy(id, w[i].id); 
    			}
    			else
    			{
    				wlen = strlen(w[i].word);
    				if(abs(wlen-len)>=2)//长度相差2,肯定不成功,接着匹配下一个 
    				{
    					flag = 2; 
    				}
    				else if(abs(wlen-len)==1)//长度相差1
    				{
    					int res=0;
    					if(wlen>len)//短串是否在长串中,如果在res=1,不在res=0 
    						res=strMatch(w[i].word, str);
    					else if(len>wlen)
    						res=strMatch(str, w[i].word);
    						
    					if(res==1)//短串在长串中
    						flag=1;//如果找到一个只相差一个字母的单词,也还要继续匹配,可能完全相同的单词 
    					else //如果长串中没有短串,但是其实匹配,如face与fae 
    					{
    						flag = 0;
    						int k=0, j=0;
    						while(k<len&&j<wlen)
    						{
    							if(str[k]==w[i].word[j])
    							{
    								j++;
    								k++;
    							}
    							else if(str[k]!=w[i].word[j])
    							{
    								if(k+1<len&&str[k+1]==w[i].word[j])
    									k++;
    								else if(j+1<wlen&&str[k]==w[i].word[j+1])								
    									j++;
    								flag++;
    							}	
    							if(flag>1)
    								break;
    						}
    					}
    					
    				} 
    				else if(abs(wlen-len)==0)//长度相同,如face与facc 
    				{
    					flag = 0; 
    					int k=0,j=0;
    					while(k<len&&j<wlen)
    					{
    						if(str[k]!=w[i].word[j])
    							flag++;
    						if(flag>1)
    							break;
    						k++;
    						j++;
    						
    					}
    				}
    			} 
    			
    			if(minn>flag)//每次找最少的查询结果 
    				minn = flag;
    			if(minn==0)//如果匹配成功,直接退出 
    				break;
    		}
    		
    		if(minn>=2)
    		{
    			printf("库中没有该单词
    ");
    			break;	
    		}
    		else if(minn==1)
    			printf("单词错误,您是否重新输入
    "); 
    		else if(minn==0)
    		{
    			printf("匹配成功,单词ID为%s
    ", id);
    			break;
    		}
    	
    	}
    	
    	return 0;
    }
    
  • 相关阅读:
    POJ 3114 Tarjan+Dijkstra
    278. First Bad Version
    209. Minimum Size Subarray Sum
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    710. Random Pick with Blacklist
    767. Reorganize String
    524. Longest Word in Dictionary through Deleting
    349. Intersection of Two Arrays
    350. Intersection of Two Arrays II
  • 原文地址:https://www.cnblogs.com/welan/p/12722197.html
Copyright © 2011-2022 走看看