检查字符串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; }
重点了解这一句的写法:
for(j=i,k=0; t[k]!='\0'&&s[j] == t[k];j++,k++);
j、k是两个字符数组的下标偏移量,如果偏移量对应的内存地址的内存值相等,则继续偏移两个下标。
1 for循环格式
for(①循环变量初始化;②语句(通常是一个包含循环变量的关系或逻辑表达式);③循环变量更新语句)
{④循环体语句块}
2 执行的顺序是①→②→④→③→②→④→③→②→④→③→……
3 循环变量可以有多个,用逗号分隔;
4 循环体可以是空语句,用分号“;”表示,可以写在"()"后或单独写一行,把本来要在循环体内处理的内容放在表达式③中,作用是一样的。可以在表达式③中完成本来应在循环体内完成的操作。
5 表达式①可以写到for循环前,②、③可以写到for循环体中,但中间的分隔号“;“不能省略。
-End-