检查字符串s中是否包含字符串t,若包含,则返回并输出t在s中的开始位置(下标值),否则返回-1。请将程序补充完整。
#include<iostream>
using namespace std;
int main()
{
int i,j,k;
char s[20]="Today is sunday!",t[10]="sun";
for(i=0;s[i]!='0';i++)
{
for(j=i,k=0; t[k]!='0'&&s[j] == t[k];j++,k++);
if(t[k]=='0')
{
cout<<"t在s中的开始位置下标为:"<<i<<endl;
return i;
}
}
return -1;
}
![d8b01bff4b4b862862b7bce4abf28978.png](https://img-blog.csdnimg.cn/img_convert/d8b01bff4b4b862862b7bce4abf28978.png)
重点了解这一句的写法:
for(j=i,k=0; t[k]!='0'&&s[j] == t[k];j++,k++);
j、k是两个字符数组的下标偏移量,如果偏移量对应的内存地址的内存值相等,则继续偏移两个下标。
C/C++学习交流:点击加入
1 for循环格式
for(①循环变量初始化;②语句(通常是一个包含循环变量的关系或逻辑表达式);③循环变量更新语句)
![a983cc505105c7aa8f199d842c1b01fa.png](https://img-blog.csdnimg.cn/img_convert/a983cc505105c7aa8f199d842c1b01fa.png)
{④循环体语句块}
2 执行的顺序是①→②→④→③→②→④→③→②→④→③→……
3 循环变量可以有多个,用逗号分隔;
4 循环体可以是空语句,用分号“;”表示,可以写在"()"后或单独写一行,把本来要在循环体内处理的内容放在表达式③中,作用是一样的。可以在表达式③中完成本来应在循环体内完成的操作。
5 表达式①可以写到for循环前,②、③可以写到for循环体中,但中间的分隔号“;“不能省略。
想学习更多C/C+编程知识记得点击收藏与关注哦!