三道上机测试题

题一:从键盘上输入一个整式数N,设计程序,输入大于N的最小回文数。

// aa.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

bool isHuiWen(int N)
{
	char c[60];
	_itoa_s(N,c,10);
	string ss(c);
	int i=0;
	int j=ss.length()-1;
	if(j==0)
	{	
		return true;	
	}
	while(i<j)
	{
		if(ss.at(i)!=ss.at(j))
		{
			return false;
		}
		i++;
		j--;
	}
	return true;
}
int _tmain(int argc, _TCHAR* argv[])
{
	cout<<"请输入一个正整数:"<<endl;
	int N;
	cin>>N;
	for(int i=N+1;i<=INT_MAX;i++)
	{
		if(isHuiWen(i))
		{
			cout<<i<<endl;
			break;
		}
	}
	system("pause");
	return 0;
}

题二:从键盘上输入一段字符串,取出其中最短的数字串。例如输入的字符串为:abcd123efg4567ha32975e,则输出为:123,因为123,4567,32975中最短的为123.

// aa.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

string minstr(char* s)
{
	char ss[60];
	memset(ss,0,60);
	int i=0;
	string str1(s);
	for(i=0;i<str1.length();i++)
	{
		if(s[i]>='0'&&s[i]<='9')
			ss[i]=s[i];
	}
	char* p=ss;
	int len=999;
	string minstr(60,'0');                              //精华部分
	for(i=0;i<str1.length();i++)
	{
		string str2(p);
		len=str2.length();
		if(len!=0)
		{
			if(len<minstr.length())                 //精华部分
				minstr=str2;
			p=p+len;
			i=i-1+len;
		}
		else
			p++;
	}
	return minstr;
}
int _tmain(int argc, _TCHAR* argv[])
{
	cout<<"请输入一个字符串:"<<endl;
	char s[60];
	cin>>s;
	string str=minstr(s);
	cout<<str<<endl;
	system("pause");
	return 0;
}

题三:分别从键盘上输入两段字符串str1,str2,判断str2是否为str1友串。

友串的定义:如果字符串str1通过轮转字符,能得到包含str2的字符串,则称str2是str1的友串。如str1="abcde",,str2="dea",将str1中a移至末位,则包含str2,所以str2是str1的友串。

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
bool isfriend(char* s,char* ss)
{
	string str(s);
	int len=str.length();
	for(int i=0;i<len;i++)
	{
		if(str.find(ss)!=string::npos)
		{
			return true;
		}
		char ch=str.at(0);
		string substr=str.substr(1);
		str=substr.append(1,ch);
	}
	return false;
}
int main()
{
	cout<<"请输入字符串1:"<<endl;
	char s[60];
	cin>>s;
	cout<<"请输入字符串2:"<<endl;
	char ss[60];
	cin>>ss;
	cout<<isfriend(s,ss)<<endl;
	system("pause");
    return 0;
}


改进版本:

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
bool isfriend(string str1,string str2)
{
	string str=str1;
	int len=str1.length();
	for(int i=0;i<len;i++)
	{
		if(str.find(str2)!=string::npos)
		{
			return true;
		}
		char ch=str.at(0);
		string substr=str.substr(1);
		str=substr.append(1,ch);
	}
	return false;
}
int main()
{
	string str1,str2;
	cout<<"请输入字符串1:"<<endl;
	cin>>str1;
	cout<<"请输入字符串2:"<<endl;
	cin>>str2;
	cout<<isfriend(str1,str2)<<endl;
	system("pause");
    return 0;
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值