C语言判断两个字符串重复
时间: 2024-10-24 14:13:54 浏览: 39
在C语言中,判断两个字符串是否重复通常需要先比较它们的长度,如果长度相等再逐个字符进行比较。这里有一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
int isDuplicate(char str1[], char str2[]) {
if (strcmp(str1, str2) == 0) { // 使用strcmp函数比较两串是否相等
return 1; // 如果相等,则返回1,表示重复
} else {
return 0; // 否则返回0,表示不重复
}
}
int main() {
char str1[] = "Hello";
char str2[] = "World";
char str3[] = "Hello"; // 测试重复的情况
printf("%s and %s are %s duplicate.\n", str1, str2, isDuplicate(str1, str2) ? "" : "not ");
printf("%s and %s are %s duplicate.\n", str1, str3, isDuplicate(str1, str3) ? "" : "not ");
return 0;
}
```
在这个例子中,`isDuplicate`函数接收两个字符串作为参数,通过`strcmp`函数检查它们是否完全相同。如果相同,函数返回1;如果不相同,返回0。
相关问题
c语言判断字符串是否存在重复字符函数
C语言判断字符串是否存在重复字符的函数,可以通过使用数组和循环来实现。下面给出一个示例的函数实现:
```c
#include <stdio.h>
#include <stdbool.h>
bool hasDuplicateCharacters(const char* str) {
// 用一个数组来统计字符出现的次数,ASCII字符共有256个
int freq[256] = { 0 };
// 遍历字符串中的每个字符
for (int i = 0; str[i] != '\0'; i++) {
// 如果该字符出现过,则返回true
if (freq[(int)str[i]] > 0) {
return true;
}
// 更新字符的出现次数
freq[(int)str[i]]++;
}
// 如果所有字符都未重复出现,则返回false
return false;
}
int main() {
const char* str1 = "abcde";
const char* str2 = "hello";
if (hasDuplicateCharacters(str1)) {
printf("%s 包含重复字符\n", str1);
} else {
printf("%s 不包含重复字符\n", str1);
}
if (hasDuplicateCharacters(str2)) {
printf("%s 包含重复字符\n", str2);
} else {
printf("%s 不包含重复字符\n", str2);
}
return 0;
}
```
该函数中,我们使用了一个长度为256的整型数组freq来统计字符串中每个字符出现的次数。通过遍历字符串中的每个字符,将其对应的数组元素加1来记录出现次数。如果某个字符的出现次数大于1,则说明该字符重复出现,函数返回true;否则,所有字符都未重复出现,函数返回false。
在main函数中,我们调用了hasDuplicateCharacters函数来判断两个字符串str1和str2是否存在重复字符,并输出相应的结果。
需要注意的是,该函数中只能判断ASCII字符范围内的重复字符,如果处理的字符串包含非ASCII字符,可能会出现错误结果。如果需要支持更多字符集,可以使用更高级的算法或数据结构来处理。
c语言判断字符串是否是回文
### 回答1:
可以使用以下方法来判断一个字符串是否是回文:
1. 定义两个指针,一个指向字符串的开头,一个指向字符串的结尾。
2. 依次比较这两个指针所指向的字符,如果相同则继续比较下一个,直到两个指针相遇。
3. 如果在比较的过程中发现不同的字符,则说明这个字符串不是回文。
4. 如果两个指针相遇时都没有发现不同的字符,则说明这个字符串是回文。
下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int i, len, flag = 0;
printf("请输入一个字符串:");
gets(str);
len = strlen(str);
for(i = 0; i < len/2; i++) {
if(str[i] != str[len-i-1]) {
flag = 1;
break;
}
}
if(flag)
printf("%s 不是回文\n", str);
else
printf("%s 是回文\n", str);
return 0;
}
```
在这个示例代码中,我们使用了一个变量 `flag` 来标记是否发现了不同的字符。如果在比较的过程中发现不同的字符,则将 `flag` 设置为 1,跳出循环并输出结果;否则循环结束后输出结果。
### 回答2:
C语言判断字符串是否是回文可以通过以下步骤实现:
1. 接收用户输入的字符串。
2. 定义两个指针,一个指向字符串的开头,一个指向字符串的末尾。
3. 判断两个指针指向的字符是否相等,如果相等,则移动两个指针分别指向下一个字符,重复这一步骤;
如果不相等,则说明字符串不是回文,输出结果为“不是回文”。
4. 当两个指针相遇时,说明字符串是回文,输出结果为“是回文”。
下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
int i = 0;
int j = len - 1;
int flag = 1;
while (i < j) {
if (str[i] != str[j]) {
flag = 0;
break;
}
i++;
j--;
}
if (flag) {
printf("是回文\n");
} else {
printf("不是回文\n");
}
return 0;
}
```
该示例中,我们首先使用`scanf`函数接收用户输入的字符串,并使用`strlen`函数获取字符串的长度。然后,我们使用两个指针`i`和`j`分别指向字符串的开头和末尾,并在循环中比较两个指针指向的字符是否相等。如果发现不相等的字符,则将`flag`标志设为0,同时跳出循环。最后,根据`flag`的值判断是否输出结果为“是回文”或“不是回文”。
### 回答3:
要判断一个字符串是否是回文,可以使用C语言编写以下的代码:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[]) {
int i, j;
int len = strlen(str);
for (i = 0, j = len-1; i < j; i++, j--) {
if (str[i] != str[j]) {
return 0; // 不是回文
}
}
return 1; // 是回文
}
int main() {
char str[100];
printf("请输入一个字符串:");
gets(str);
if (isPalindrome(str)) {
printf("%s 是回文。\n", str);
} else {
printf("%s 不是回文。\n", str);
}
return 0;
}
```
首先,定义一个 `isPalindrome` 函数,接受一个字符串作为参数。使用两个指针,一个指向字符串开头,另一个指向结尾。然后,比较指针所指向的字符是否相同,如果有不相同的字符,则说明不是回文,返回0;如果指针相遇或者交叉,说明是回文,返回1。
在 `main` 函数中,首先声明一个字符数组 `str`,用于存储用户输入的字符串。然后,使用 `gets` 函数获取用户输入的字符串。接下来,调用 `isPalindrome` 函数判断字符串是否是回文,并根据返回的结果输出相应的提示信息。
以上的代码可以判断单词是否是回文,对于句子中包含空格或者标点符号的情况稍有差别,需要进行处理。
阅读全文