1. 程式人生 > >C語言進階-第一週:作業01

C語言進階-第一週:作業01

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; }