用c语言写一个程序设s,t为俩个字符串,俩个字符串分2行输出,判断t是否为s的子串,如果是,输出子串所在位置(第一个字符,字符串的起始位置从0开始),否则输出-1
时间: 2024-05-02 11:18:14 浏览: 19
```c
#include <stdio.h>
#include <string.h>
int main()
{
char s[100], t[100];
int len_s, len_t, i, j, start;
printf("请输入字符串s:");
gets(s);
printf("请输入字符串t:");
gets(t);
len_s = strlen(s);
len_t = strlen(t);
for (i = 0; i <= len_s - len_t; i++) {
start = i;
for (j = 0; j < len_t; j++) {
if (s[i + j] != t[j]) {
break;
}
}
if (j == len_t) {
printf("t是s的子串,子串位置为:%d\n", start);
return 0;
}
}
printf("t不是s的子串,输出-1\n");
return 0;
}
```
相关问题
用c语言写一个函数,判断一个字符串是否为回文字符串
好的,可以使用以下 C 语言代码实现判断一个字符串是否为回文字符串:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[]) {
int len = strlen(str);
for (int i = 0; i < len/2; i++) {
if (str[i] != str[len-1-i]) {
return 0; // 不是回文字符串,返回0
}
}
return 1; // 是回文字符串,返回1
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
if (isPalindrome(str)) {
printf("%s 是回文字符串\n", str);
} else {
printf("%s 不是回文字符串\n", str);
}
return 0;
}
```
在上述代码中,`isPalindrome()` 函数接收一个字符串 `str`,返回一个整数值,1 表示 `str` 是回文字符串,0 表示 `str` 不是回文字符串。函数通过遍历字符串的前一半字符和后一半字符进行比较,如果发现不同则直接返回 0,否则遍历结束后返回 1。
在 `main()` 函数中,首先输入一个字符串,然后调用 `isPalindrome()` 函数判断它是否为回文字符串,并输出相应的结果。
用c语言编写一个程序,输入一个字符串并判断该串是否为回文串
以下是用C语言编写的判断回文串的程序:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int len, i, flag = 0;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
for (i = 0; i < len / 2; i++) {
if (str[i] != str[len - i - 1]) {
flag = 1;
break;
}
}
if (flag == 1) {
printf("%s 不是回文串\n", str);
} else {
printf("%s 是回文串\n", str);
}
return 0;
}
```
程序中首先定义了一个字符数组 `str`,用于存储用户输入的字符串。然后使用 `scanf` 函数读取用户输入的字符串。
接着,使用 `strlen` 函数获取字符串的长度,并使用 `for` 循环遍历字符串的前一半字符,判断其是否与后一半字符相同。如果有不同的字符,则标记变量 `flag` 取值为 1,表示该字符串不是回文串。
最后,根据标记变量 `flag` 的值,输出相应的提示信息。