C語言進階-第一週:作業01
阿新 • • 發佈:2018-12-24
1字串比對(10分)
題目內容:
題目說起來很簡單,你會讀到兩個字串,每個字串佔據一行,每個字串的長度均小於10000字元,而且第一個字串的長度小於第二個字串的。你的程式要找出第一個字串在第二個字串中出現的位置,輸出這些位置,如果找不到,則輸出-1。
注意,第一個字元的位置是0。
注意,第一個字串在第二個字串中的位置可能不止一處。
注意,字串中可能含有空格。
注意,兩個字串的長度一定大於0。
輸入格式:
兩個字串,一行一個。
輸出格式:
第一個字串在第二個字串中出現的位置,按照從小到到的順序排列,每個數字後面有一個空格。
如果在第二個字串中找不到第一個字串,則輸出-1。
輸入樣例:
abba
ababbba abbabbabbabbaacc
輸出樣例:
8 11 14 17
時間限制:500ms記憶體限制:32000kb
#include<stdio.h>
#include<Windows.h>
#include<string.h>
int main() {
char s1[10001] ;
char s2[10001] ;
gets(s1);
gets(s2);
int lens2 = strlen(s2);
int flag = 1;
//如果兩個字串中一樣的僅有 結束符,說明字串中沒有一樣的東西,輸出-1
if (strstr(s2, s1) == '\0' ) {
flag = 0;
printf("%d", -1);
}
char *p = s2;//建立指標指向s2的第一位
while (flag)
{
p = strstr(p, s1);//查詢字串S2中含有的S1位置
if (p == '\0')break;
int lens = strlen(p);
printf("%d ", lens2 - lens);
p++;
}
system("pause");
return 0;
}