HDU 2564 詞組縮寫


詞組縮寫

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 14487    Accepted Submission(s): 4705


Problem Description
定義:一個詞組中每個單詞的首字母的大寫組合稱為該詞組的縮寫。
比如,C語言里常用的EOF就是end of file的縮寫。
 

 

Input
輸入的第一行是一個整數T,表示一共有T組測試數據;
接下來有T行,每組測試數據占一行,每行有一個詞組,每個詞組由一個或多個單詞組成;每組的單詞個數不超過10個,每個單詞有一個或多個大寫或小寫字母組成;
單詞長度不超過10,由一個或多個空格分隔這些單詞。
 

 

Output
請為每組測試數據輸出規定的縮寫,每組輸出占一行。
 

 

Sample Input
1
end of file
Sample Output
EOF
Author
lemon
 

Source

分析:這道題有點小坑啊!忘記吸掉換行符,WA了一次!還要注意輸出換行!
以下給出AC代碼:
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int T;
 6     char s[200];
 7     while(cin>>T)
 8     {
 9         getchar();//要注意吸掉回車換行,本人就是這個地方卡了好久,沒看出來!
10         while(T--)
11         {
12             gets(s);
13             int len=strlen(s);
14             if(s[0]>='a'&&s[0]<='z')
15             printf("%c",s[0]-32);
16             else if(s[0]>='A'&&s[0]<='Z') printf("%c",s[0]);
17             for(int i=1;s[i]!='\0';i++)
18                 {
19                     if(s[i]==' '&&(s[i+1]>='a'&&s[i+1]<='z'))
20                 printf("%c",s[i+1]-32);
21                 else if(s[i]==' '&&(s[i+1]>='A'&&s[i+1]<='Z'))
22                     printf("%c",s[i+1]);
23                 }
24                 printf("\n");
25         }
26     }
27     return 0;
28 }

 

此題出現了一種新的東西,小寫字母變大寫字母,有一個函數可以很方便的做這道題--strupr()函數!

strupr,函數的一種,將字符串s轉換為大寫形式。

說明:只轉換s中出現的 小寫字母,不改變其它 字符。返回指向s的 指針
兼容性說明:strupr不是標准C庫函數,只能在VC中使用。在linux gcc環境下需要自行定義這個函數。
舉例:
 1 // strupr.c
 2 #include <stdio.h>
 3 #include <string.h>
 4 int main()
 5 {
 6 char s[]="Copywrite 1999-2000 GGV Technologies";
 7 char* s2=strupr(s);//把s數組中的字符串轉換成大寫並且返回s用來初始化s2
 8 printf("%s",s2);
 9 printf("%s",s); //這個時候s和s2是相等的,指向同一個字符串。
10 // 注意:不能使用以下方式調用
11 // char* p="for test";
12 // strupr(p);
13 // 這樣調用會產生異常,原因是:指針p 這里定義的是常量字串,而常量字串我們知道是不可以更改的
14 getchar();
15 return 0;
16 }


 

下面給出另外一種解法:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 char a[120],b[120];
 5 int main()
 6 {
 7     int T;
 8     int i;
 9     int len=0;
10     int k;
11     scanf("%d",&T);
12     getchar();
13     while(T--)
14     {
15         gets(a);
16         len=strlen(a);
17         strupr(a);
18         k=0;
19         for(i=0;i<len;i++)
20         {
21             if(i==0)
22             {
23                 if(a[i]==' ' && a[i+1]!=' ')
24                      b[k++]=a[i+1];
25                 else if(a[i]!=' ')
26                     b[k++]=a[i];
27             }
28             else 
29             {
30                 if(a[i]==' ' && a[i+1])
31                     b[k++]=a[i+1];
32             }
33         }
34         for(i=0;i<k;i++)
35         {
36             if(b[i]!=' ')
37                 printf("%c",b[i]);
38         }
39         printf("\n");
40     }
41     return 0;
42 }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM