1、编程实现strcmp库函数
//返回1: src>dst
//返回-1: src<dst
指对给定的字符串,按照首字母的字典值排序,如果首字母相同的字符串,则按照第二个字母,依次内推。
实现方法:使用strcmp()函数比较两个字符串,然后利用冒泡排序法的思想对字符串进行排序
总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。
注意:是沿着格子的边缘走,且只能向下想右走
分析:
设f(n,m)表示n*m格子的走法,向下走,格子变为(n-1)*m,走法为f(n-1,m);向右走,格子变为n*(m-1),走法为f(n,m-1)。因此会有:
f(n,m)=f(n-1,m)+f(n,m-1)
输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度
//返回1: src>dst
//返回-1: src<dst
//返回0: src=dst
int mystrcmp(char *src,char *dst)
{
int ret=0,i=0;
while(i<strlen(src)&&i<strlen(dst))
{
if(src[i]>dst[i])
{
ret=1;
break;
}
else if(src[i]<dst[i])
{
ret=-1;
break;
}
else
i++;
}
if(i==strlen(src)||i==strlen(dst))
{
if(strlen(src)>strlen(dst))
ret=1;
else if(strlen(src)<strlen(dst))
ret=-1;
}
return ret;
}
2、字符串根据字典值排序
指对给定的字符串,按照首字母的字典值排序,如果首字母相同的字符串,则按照第二个字母,依次内推。
实现方法:使用strcmp()函数比较两个字符串,然后利用冒泡排序法的思想对字符串进行排序
#include<iostream>
#include<string>
using namespace std;
int main()
{
char *a[10]={"dog","dear","eye","bed","do","hello","zero","fire","hc","zz" };
char *temp;
for(int i=0;i<10-1;i++)
{
for(int j=0;j<10-i-1;j++)
{
if(strcmp(a[j],a[j+1])==1)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}
4、请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,
总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。
注意:是沿着格子的边缘走,且只能向下想右走
分析:
设f(n,m)表示n*m格子的走法,向下走,格子变为(n-1)*m,走法为f(n-1,m);向右走,格子变为n*(m-1),走法为f(n,m-1)。因此会有:
f(n,m)=f(n-1,m)+f(n,m-1)
#include<iostream>
using namespace std;
int f(int n,int m)
{
if(n==1) //注意边界条件
return (m+1);
else if(m==1)
return (n+1);
else
return f(n,m-1)+f(n-1,m);
}
int main()
{
int n,m;
while(cin>>n>>m)
{
cout<<f(n,m)<<endl;
}
return 0;
}
5、在字符串中找出连续最长的数字串
输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度
#include<iostream>
#include<string>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
void solve(string str)
{
vector<string> s;
int in,i;
int s_size=0;
for(i=0;i<str.size();)
{
if(str[i]>='0'&&str[i]<='9')
{
in=i;
do
{
i++;
}while(str[i]>='0'&&str[i]<='9');
string temp(str,in,i-in);
s.push_back(temp);
s_size++;
}
i++;
}
int max=0;
for(i=0;i<s.size();i++)
{
if(s[i].length()>max)
max=s[i].length();
}
for(i=0;i<s.size();i++)
{
if(s[i].length()==max)
{
cout<<s[i];
}
}
cout<<","<<max<<endl;
}
int main()
{
string str;
while(cin>>str)
{
solve(str);
}
return 0;
}