成长轨迹52 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2743:字符串判等】
题目http://poj.grids.cn/practice/2743
//算法很简单,但是陷阱有一些:
//注意是每两行之后有个空行
//然后重用数组时,因为之前的字符串可能比较长
//要记得清掉后面的,或者直接在每次最后位加上'\0'
【ac代码】
1 #include <stdio.h>
2 #include <string.h>
3 #include <ctype.h>
4 #include <stdlib.h>
5
6 char buf[150];
7 char buf1[150];
8
9 char str[101];
10 char str1[101];
11
12 void deal(char *buf,char* str)
13 {
14 int len=strlen(buf);
15 int k=0;
16 for(int j=0;j<len;j++)
17 {
18 if(isalpha(buf[j]))
19 {
20 str[k]=toupper(buf[j]);
21 k++;
22 }
23 }
24 str[k]='\0';//【这里很关键】
25 //【每次的字符串可能不一样长,记得每次复制完都要给个结尾符号】
26 }
27
28 int main()
29 {
30 int t;
31 scanf("%d",&t);
32 gets(buf);//【貌似前边有个\n】
33
34 //char line[10];
35 //gets(line);
36 //t = atoi(line);
37 //这是一种据说比较安全的做法
38 //http://hi.baidu.com/dragon2nd/blog/item/41459c160e35b958f2de3253.html
39
40 for(int i=0;i<t;i++)
41 {
42 gets(buf);
43 deal(buf,str);
44 gets(buf1);
45 deal(buf1,str1);
46
47 if(!strcmp(str,str1))
48 printf("YES\n");
49 else
50 printf("NO\n");
51 if(i!=t-1)
52 gets(buf);
53 }
54 return 0;
55
56 }