设s、t为两个字符串,判断t是否为s的子串。如果是,输出子串所在位置(第一个字符),否则输出-1。的c语言的具体代码
时间: 2023-11-20 21:59:54 浏览: 185
以下是C语言代码:
```
#include <stdio.h>
#include <string.h>
int main() {
char s[100], t[100];
int i, j, flag;
printf("请输入字符串s:\n");
gets(s);
printf("请输入字符串t:\n");
gets(t);
for(i = 0; i <= strlen(s) - strlen(t); i++) {
flag = 1;
for(j = 0; j < strlen(t); j++) {
if(s[i + j] != t[j]) {
flag = 0;
break;
}
}
if(flag == 1) {
printf("子串所在位置为:%d\n", i + 1);
return 0;
}
}
printf("-1\n");
return 0;
}
```
解释一下代码:先输入两个字符串s和t,然后用两重循环逐个比较s中从i开始与t相同长度的子串是否与t完全相同,如果是的话,输出子串所在位置i+1,否则输出-1。
相关问题
c语言设s、t为两个字符串,判断t是否为s的子串。如果是,输出子串所在位置(第一个字符),否则输出-1
可以使用strstr函数判断t是否为s的子串,如果是,该函数会返回t在s中第一次出现的位置指针;否则返回NULL。具体代码如下:
```c
char* s = "hello world";
char* t = "world";
char* p = strstr(s, t);
if (p != NULL) {
// t是s的子串,输出位置
printf("%d\n", p - s);
} else {
// t不是s的子串,输出-1
printf("-1\n");
}
```
上面这段代码会输出`6`,表示t在s中第一次出现的位置是s中的第7个字符。
设s、t 为两个字符串,两个字符串分为两行输出,判断t 是否为s 的子串。如果是,输出子串所在位置(第一个字符,字符串的起始位置从0开始),否则输出-1
以下是Python的代码实现:
```python
s = input() # 输入字符串s
t = input() # 输入字符串t
if t in s: # 判断t是否为s的子串
print(s.index(t)) # 输出子串起始位置
else:
print(-1) # 输出-1表示不是子串
```
对于输入样例:
```
hello world
wor
```
输出结果为:
```
6
```
对于输入样例:
```
hello world
hi
```
输出结果为:
```
-1
```
阅读全文