编写函数实现串S和串T的比较操作,要求比较结果包括大于、下于和等于三种情况
基于new bing的编写:
参考学习哈
#include <stdio.h>
#include <string.h>
int stringCompare(char s[], char t[]) {
int i = 0;
// 迭代比较每个字符
while (s[i] == t[i]) {
if (s[i] == '\0' || t[i] == '\0')
break;
i++;
}
// 判断比较结果
if (s[i] == '\0' && t[i] == '\0')
return 0; // 两串相等
if (s[i] < t[i])
return -1; // 串 S 小于串 T
return 1; // 串 S 大于串 T
}
int main() {
char s[] = "abcd";
char t[] = "abce";
int compareResult = stringCompare(s, t);
if (compareResult == 0)
printf("两串相等");
else if (compareResult > 0)
printf("串 S 大于串 T");
else
printf("串 S 小于串 T");
return 0;
}
直接使用strcmp不就实现了吗?还要自己编写该函数?
int cmp(char *s1, char *s2)
{
while (*s1 && *s2 && *s1 == *s2)
s1++, s2++;
return *s1 - *s2;
}
int main()
{
printf("%d\n", cmp("123", "123"));
printf("%d\n", cmp("12", "1234"));
printf("%d\n", cmp("123", "122"));
}
不知道你这个问题是否已经解决, 如果还没有解决的话:#include "vstring.h"
int deleteSubstring(char *s, char *t);
int deleteSubstring(char *s, char *t) {
int i = 0, n = 0, k = 0;
char tmp[MAXSIZE];
int res[MAXSIZE];
char ss[MAXSIZE];
strcpy(ss, s);
//如果t的长度比s还大,就出错了
int len1 = strLength(s);
int len2 = strLength(t);
if(len1 < len2) {
return -1; //出错
}
//在s中可以划分出len1-len2+1个长度等于t的子串
while(i < len1-len2+1) {
subString(tmp, s, i, i+len2);
if(strCompare(tmp, t) == 0) {
res[k++] = i;
strAssign(ss, t);
n++;
}
i++;
}
for(i = 0; i < k; i++) { //输出下标
printf("%d ", res[i]);
}
printf("\n%s\n", ss);
return n;
}
void main(void) {
char s[MAXSIZE] = "abcdefgbcde78bcde223434bcde99";
char t[MAXSIZE] = "bcde";
int num = deleteSubstring(s, t);
printf("%d\n", num);
}
在上面的代码上添加了一些输出的提示内容,结果如下:
http://download.csdn.net/detail/dear_mr/9815973虽然折腾的时间比预期的有点长,但还是实现了,代码下载地址:
答案:
本题需要使用字符串的比较操作,可以使用strcmp函数比较两个字符串的大小,然后根据比较结果表示三种不同的情况。
比较操作如下所示:
#include <stdio.h>
#include <string.h>
int main(){
char s[100],t[100];
int cmp;
scanf("%s%s",s,t);
cmp = strcmp(s,t);
if (cmp > 0) {
printf("%s大于%s\n",s,t);
} else if (cmp < 0) {
printf("%s小于%s\n",s,t);
} else {
printf("%s等于%s\n",s,t);
}
return 0;
}
其中,strcmp函数返回值为0表示两个字符串相等,大于0表示第一个字符串大于第二个字符串,小于0表示第一个字符串小于第二个字符串。
输出结果分别表示三种不同的情况,例如s大于t的情况下输出"s大于t"。
注:代码中涉及到了字符串输入,需要注意字符串长度的限制,避免数据溢出。