CPP31. 比较字符串大小
描述
编写一个函数 int mystrcmp(const char * src, const char * dst),用于比较两个字符串的大小(自己实现strcmp()函数)。要求如果字符串src大于字符串dst返回 1,小于返回 -1,相等返回 0。输入描述
键盘录入 2 个长度小于 100 的字符串输出描述
输出调用 mystrcmp() 函数返回的结果示例1
输入:
hello helloworld
输出:
-1
示例2
输入:
hello hello
输出:
0
示例3
输入:
helloworld hello
输出:
1
C++ 解法, 执行用时: 2ms, 内存消耗: 320KB, 提交时间: 2021-12-14
#include <iostream> using namespace std; int mystrcmp(const char* src, const char* dst); int main() { char s1[100] = { 0 }; char s2[100] = { 0 }; cin.getline(s1, sizeof(s1)); cin.getline(s2, sizeof(s2)); int ret = mystrcmp(s1, s2); cout << ret << endl; return 0; } int mystrcmp(const char* src, const char* dst) { // write your code here...... while(*src&&*dst) { if(*src-*dst>0) { return 1; } else if(*src-*dst<0) { return -1; } src++; dst++; } if(*src=='\0'&&*dst!='\0') { return -1; } else if(*src=='\0'&&*dst=='\0') { return 0; } else { return 1; } }
C 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2022-03-03
#include<stdio.h> int main() { char src[100]; while(scanf("%s",src)!=EOF) { char dst[100]; scanf("%s",dst); int len1=strlen(src); int len2=strlen(dst); int i,j,k; int result; if(len1<len2) { result=-1; for(i=0;i<len1;++i) { if(src[i]>dst[i]) { result=1; break; } } } else if(len1>len2) { result=1; for(j=0;j<len2;++j) { if(src[j]<dst[j]) { result=-1; break; } } } else result=0; for(k=0;k<len1;++k) { if(src[k]<dst[k]) { result=-1; break; } else if(src[k]>dst[k]) { result=1; break; } } printf("%d\n",result); return 0; } }
C++ 解法, 执行用时: 2ms, 内存消耗: 388KB, 提交时间: 2021-12-05
#include <iostream> using namespace std; int m=0,n=0; int mystrcmp(const char* src, const char* dst); int main() { char s1[100] = { 0 }; char s2[100] = { 0 }; cin.getline(s1, sizeof(s1)); cin.getline(s2, sizeof(s2)); int ret = mystrcmp(s1, s2); cout << ret << endl; return 0; } int mystrcmp(const char* src, const char* dst) { while(1) { if(int(*src)>int(*dst)) { m=1; break; } else if(int(*src)==int(*dst)) { m=0; } else { m=-1; break; } if(*src==*dst&&(*src)==0) { m=0; break; } dst++; src++; } return m; }
C++ 解法, 执行用时: 2ms, 内存消耗: 396KB, 提交时间: 2022-02-10
#include <iostream> using namespace std; int mystrcmp(const char* src, const char* dst); int main() { char s1[100] = { 0 }; char s2[100] = { 0 }; cin.getline(s1, sizeof(s1)); cin.getline(s2, sizeof(s2)); int ret = mystrcmp(s1, s2); cout << ret << endl; return 0; } int mystrcmp(const char* src, const char* dst) { // write your code here...... int a=0; for(; *src != '\0' || *dst != '\0';src++,dst++){ if(*src > *dst){ a = 1; break; } else if(*src < *dst){ a = -1; break; } } return a; }
C++ 解法, 执行用时: 2ms, 内存消耗: 396KB, 提交时间: 2022-01-25
#include <iostream> #include <cstring> using namespace std; int mystrcmp(const char* src, const char* dst); int main() { char s1[100] = { 0 }; char s2[100] = { 0 }; cin.getline(s1, sizeof(s1)); cin.getline(s2, sizeof(s2)); int ret = mystrcmp(s1, s2); cout << ret << endl; return 0; } int mystrcmp(const char* src, const char* dst) { //计算src和dst长度 int len1=strlen(src); int len2=strlen(dst); int i=0,j=0; while(i<len1&&j<len2){ //如果src当前字符小于dst,说明src小于dst,返回-1 if(src[i]<dst[j]){ return -1; } //如果src当前字符大于dst,说明src大于dst,返回1 else if(src[i]>dst[j]){ return 1; } //如果src当前字符等于dst,两指针后移 else{ i++; j++; } } //如果src后面还有字符,返回1 if(i<len1){ return 1; } //如果dst后面还有字符,返回-1 else if(j<len2){ return -1; } else{ return 0; } return 0; }