• 有关字符串的练习


    1. 取两个字符串的最大公共子串
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
    	int n = 0;
    	string a, b, t;
    	
    	cin >> a >>b;
    	for (int i=0; i<a.size(); i++)
    	{
    		for (int j=a.size(); j>i&&j-i>n; --j)
    		{
    			string temp = a.substr(i, j-i);
    			if (b.find(temp) != string::npos)
    			{
    				n = j-i;
    				t = temp;
    			}
    		}
    	}
    
    	cout << t <<endl;
    
    	return 0;
    }
    2. 求出一个串的最长重复子串
    # include <stdio.h>
    # define maximum 30
    
    void StrInitiate(char *h)
    {
    	gets(h);
    }
    
    //串的长度
    int StrLength(char *h)
    {
    	int count = 0;
    	while (h[count] > 0)
    	{
    		count++;
    	}
    
    	return count;
    }
    
    //求出串的最长重复子串
    void MaxSubStr(char *h, char *t)
    {
    	int lenmax = 0, len, index = 0;
    	int i = 0, j, k;
    
    	while (i < StrLength(h))
    	{
    		j = i+1;
    		while (j < StrLength(h))
    		{
    			if (h[i] == h[j])
    			{
    				len = 1;
    				for (k=1; h[i+k] == h[j+k]; k++)
    					len++;
    				if (len > lenmax)
    				{
    					index = i;
    					lenmax = len;
    				}
    				j += len;
    			}
    			else
    				j++;
    		}
    		i++;
    	}
    
    	for (i=0; i<lenmax; i++)
    		t[i] = h[index+i];
    }
    
    //串的显示
    void DisplayStr(char *h)
    {
    	for (int i=0; i<StrLength(h); i++)
    		printf("%c", h[i]);
    	printf("
    ");
    }
    
    int main()
    {
    	char str[maximum];
    	printf("输入串为:");
    	StrInitiate(str);
    	printf("
    ");
    	char t[maximum];
    
    	MaxSubStr(str, t);
    	printf("最大重复子串为:
    ");
    	DisplayStr(t);
    	printf("
    ");
    
    	return 0;
    }
    
    3. 显示多位数数值将最多五位数的数值转换成字符的形式,在显示出来。在常用的word和txt文本中,
    数字都是以字符形式存储的,因此本实验有实际的价值。 
    /*************************************************************************
    	功能:显示多位数数值
    将最多五位数的数值转换成字符的形式,在显示出来。在常用的word和txt文本中,
    数字都是以字符形式存储的,因此本实验有实际的价值。
    	
    	  思路:对于计算结果,从高位数开始,依次存入到祖父数组中,之后以字符
    的形式显示出来。因此计算每个位数上的数值是关键步骤。例如,2538 = 2*1000 + 
    5*100 + 3*10 + 8。
    *************************************************************************/
    # include <stdio.h>
    # include <math.h>
    # include <string.h>
    # include <stdlib.h>
    
    void main()
    {
    	char i[15], j[15];
    	char r[15];
    
    	for (int z=0; z<15; z++)
    	{
    		r[z] = NULL;
    	}
    
    	gets(i);
    	gets(j);
    
    	int oper1, oper2;
    	int result;
    
    	oper1 = atoi(i);
    	oper2 = atoi(j);
    
    	printf("两个操作数:%d and %d
    ", oper1, oper2);
    	printf("两数相乘: %d * %d = ", oper1, oper2);
    
    	//以下程序的母的是将乘积以字符的形式打印至DOS中
    	result = oper1 * oper2;
    	int div = 10;
    	while (result/div >= 10)
    		div = div * 10;
    
    	int count = 0;
    	int t;
    	while (div != 0)
    	{
    		t = result / div;
    		r[count] = t + 48;
    		result = result - div * t;
    		div = div /10;
    		count++;
    	}
    
    	puts(r);
    }

  • 相关阅读:
    获取comboBox里面的item使用的方法
    QT格式化代码
    按键槽的写法
    int to String
    sprintf在51单片机中的使用
    学习使用MarkDown
    分享9款超酷的jQuery/CSS3插件
    2014年展望
    操作系统面试
    web一点小结
  • 原文地址:https://www.cnblogs.com/enumhack/p/7472720.html
Copyright © 2020-2023  润新知