#include<stdio.h> #include<string.h> int main() { char s1[100],s2[100]; int len1,len2,i,j,k,flag; scanf("%s\n",s1); scanf("%s\n",s2); len1=strlen(s1); len2=strlen(s2); flag=0; for (i = 0; i <= len1 - len2; i++) { k = i; for (j = 0; j < len2; j++) { if (s1[k] != s2[j]) { break; } k++; } if (j == len2) { printf("%d ", i); flag = 1; } } // 如果没有找到,输出no if (flag == 0) { printf("no"); } return 0; }详细解释每句代码的意思
时间: 2024-01-15 11:05:26 浏览: 67
这段代码是一个 C 语言的程序,主要用于查找字符串 s2 在字符串 s1 中的位置。下面是每句代码的详细解释:
```C
#include<stdio.h> // 包含标准输入输出库的头文件
#include<string.h> // 包含字符串操作函数的头文件
int main() { // 主函数
char s1[100],s2[100]; // 定义两个字符串 s1 和 s2,长度为 100
int len1,len2,i,j,k,flag; // 定义四个整型变量 len1,len2,i,j,k 和 flag
scanf("%s\n",s1); // 从标准输入中读入一个字符串 s1
scanf("%s\n",s2); // 从标准输入中读入一个字符串 s2
len1=strlen(s1); // 计算字符串 s1 的长度,并将结果赋值给变量 len1
len2=strlen(s2); // 计算字符串 s2 的长度,并将结果赋值给变量 len2
flag=0; // 将变量 flag 的值设为 0,用于标记是否找到了 s2
for (i = 0; i <= len1 - len2; i++) // 循环遍历 s1,从第一个字符开始查找
{
k = i; // 将变量 k 的值设为 i,用于在 s1 中查找 s2
for (j = 0; j < len2; j++) // 循环遍历 s2,与 s1 中的字符逐一比较
{
if (s1[k] != s2[j]) // 如果 s1 和 s2 中的字符不相同,则退出循环
{
break; }
k++; } // 如果 s1 和 s2 中的字符全部相同,则输出 s2 在 s1 中的位置
if (j == len2) { printf("%d ", i); flag = 1; } } // 如果没有找到,输出 no if (flag == 0) { printf("no"); } return 0; // 程序结束,返回 0
}
```
总体思路是:从字符串 s1 的第一个字符开始,逐一比较 s2 中的字符是否与 s1 中的字符相同,如果全部相同,则输出 s2 在 s1 中的位置,否则继续查找。如果找到了 s2,则将变量 flag 的值设为 1,否则输出 no。
阅读全文