资源限制
内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
在C语言中,有一个strcmp函数,其功能是比较两个字符串s1和s2。请编写一个你自己的字符串比较函数my_strcmp,来实现strcmp函数的类似功能。如果s1=s2,则返回0;否则返回s1 与s2 第一个不同字符的差值(如果s1<s2,该差值是一个负数;如果s1>s2,该差值是一个正数)。编写测试程序,输入两个长度小于1000的字符串(可能包含有空格,且长度不一定相等),然后调用my_strcmp函数来进行比较,并输出返回结果。
输入:
aBcDefgf
aacdef
输出:
-31
解答:
#include<iostream>
#include<string.h>
using namespace std;
string s1,s2;
int my_strcmp(string s1,string s2){
int i = 0;
int j = 0;
while(i<s1.length() || j<s2.length()){
if(s1[i] == s2[j] ){
i++;j++;
continue;
}
return (s1[i]-s2[j]);
}
return 0;
}
int main(){
getline(cin,s1);
getline(cin,s2);
cout<<my_strcmp(s1,s2);
}
这里需要注意一点比如说我输入s1=“you are pig”,s2=“you”按理说这两个字符串是不一样的因此考虑到这个我们第八行条件判断只能用||不能用&&
资源限制
内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
编写一个函数RegularPlural,其功能是实现一个英文单词的复数形式。复数的规则为:
(1) 如果单词末尾为s,x,z,ch或sh,则在后面加es
(2) 如果单词末尾为y,且前一个字母为辅音(除a, e, i, o, u以外的其它情况),则把y改成ies。
(3) 如果是其它情形,一律在后面加s。
编写测试程序,输入一个长度小于20的单词,输出该单词的复数形式。
输入:
box
输出:
boxes
解答:
#include<iostream>
#include<string.h>
using namespace std;
string s1,s2;
int my_strcmp(string s1,string s2){
int i = 0;
int j = 0;
while(i<s1.length() || j<s2.length()){
if(s1[i] == s2[j] ){
i++;j++;
continue;
}
return (s1[i]-s2[j]);
}
return 0;
}
string RegularPlural(string s1){
int i = s1.length()-2;
int j = s1.length()-1;
if(s1[j]=='s' || s1[j]=='x' || s1[j]=='z' || (s1[i]=='c'&&s1[j]=='h') || (s1[i]=='s'&&s1[j]=='h')){
s1 +="es";
return s1;
}else if(s1[j]=='y' && s1[i]!='a'&&s1[i]!='e'&&s1[i]!=i&&s1[i]!='o' &&s1[i]!='u'){
s1[j] = 'i';
s1+="es";
}else
s1+='s';
return s1;
}
int main(){
getline(cin,s1);
cout<<RegularPlural(s1);
}