1. 程式人生 > >[P1580] yyy loves Easter_Egg I

[P1580] yyy loves Easter_Egg I

name 同時 傳送門 一個 str org link urn targe

Link:

P1580 傳送門

Solution:

拿來練練字符串的讀入

1、$gets()$相當於$c++$中的$getline()$,但返回值為指針!(無數據時為NULL)

(都讀入換行符,並將其舍棄)

2、$sscanf(起始指針,.....,......)$可以實現從另一個字符串讀入

3、$strcmp$和$memcmp$都是相同時返回值為0

4、$count(begin,end,value)$能實現各個容器中的個數查找

5、$strstr(s1,s2)$能查找$s1$中第一個$s2$的位置,沒有子串$s2$時返回$NULL$!

Tips:

1、字符串中的查找函數未找到時返回的是$NULL$

對$NULL$調用會RE,使用前一定要判斷

2、這道題數據出的不太好,結束符是一個空格……(不是回車或EOF)

Code:

#include <bits/stdc++.h>

using namespace std;
const int MAXN=1005;
int cur=1;
char text[MAXN],fst[MAXN],n1[MAXN],n2[MAXN];

int main()
{
    gets(text);
    sscanf(strstr(text,"@"),"@yyy loves %s",fst);
    while(++cur)
    {
        gets(text);
        
if(strlen(text)==1) break; sscanf(text,"yyy loves %s",n1); if(!strcmp(n1,fst)) return printf("Successful @yyy loves %s attempt",fst),0; //調用指針前要判斷 if(strstr(text,"@")!=NULL) sscanf(strstr(text,"@"),"@yyy loves %s",n2); if(count(text,text+strlen(text),
@)!=1 || strcmp(n2,fst)) {//註意對count函數的使用 printf("Unsuccessful @yyy loves %s attempt\n",fst); printf("%d\nyyy loves %s",cur,n1);return 0; } } printf("Unsuccessful @yyy loves %s attempt\n",fst); printf("%d\nGood Queue Shape",cur-1); return 0; }

[P1580] yyy loves Easter_Egg I