ZZULIOJ-2258——name

灰太狼 2022-04-12 11:59 257阅读 0赞

name

题目描述

lpq同学最近突然对外国人的名字产生了兴趣,特别是外国女生的名字,于是他开始试图去认识一些国外的女生。

随着认识的女生数量越来越多,lpq发现他的脑子不够用了——他不能准确地记住每个女生的名字。终于有一天,当他又把Hello Kitty和Dear Amy的名字弄混并遭到暴力后,他突发奇想:如果我把每个人的名字按不同部分的首字母变成缩写,就便于记忆,也就不会把名字弄混了。

比如:Hello Kitty简写成HK,Dear Amy简写成DA。

lpq还决定,对于名字简写长度大于5(不包括5)的女生,他便放弃交往。
但是lpq认识的女生太多了,于是他想到了作为神犇的你,请你帮助他。

输入

第一行输入一个整数N(N<=10000),表示女生的人数。

接下的N行,每行包含一个字符串,为一个女生的全名,其中名字不同部分之间用’~!@#$%^&*()’分隔,字符串的长度不大于100。

保证输入的字符只有字母及’~!@#$%^&*()’(不包括引号)。

输出

输出第一行为一个整数K,表示可以继续交往的女生人数。

接下来K行,每一行包括由若干字母组成的字符串,表示对应名字的缩写。

样例输入

3
Hello@#^Kitty
Dear~^Amy
Sro~Li~Pei~Qian

样例输出

3
HK
DA
SLPQ

题意描述:

统计一串字符串中每个单词的首字母,若单词数超过5个。就不再统计这个字符串。

解题思路:

将符合条件的单词首字母存入到一个二维字符数组中,判断字符串中第一个字符是否为字母,若为字母则统计上该首字母,从第二个字符开始,若一个字符本身为字母但前一个字符不为字母则统计该字母,同时单词数加一,当单词数超过5个时,下次再判断下一字符串时,直接还在这行存入二维字符数组。

程序代码:

  1. #include<stdio.h>
  2. #include<string.h>
  3. char s[110];
  4. char a[10010][10];
  5. int sad(char ch)
  6. {
  7. if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
  8. return 1;
  9. return 0;
  10. }
  11. int main()
  12. {
  13. int n,i,j,len,num,ans,f;
  14. scanf("%d\n",&n);
  15. num=0;
  16. while(n--)
  17. {
  18. scanf("%s",s);
  19. len=strlen(s);
  20. f=0;
  21. if(sad(s[0]))
  22. {
  23. ans=1;
  24. a[num][ans]=s[0];
  25. }
  26. else
  27. ans=0;
  28. for(i=1;i<len;i++)
  29. {
  30. if(sad(s[i-1])==0&&sad(s[i])==1)
  31. {
  32. ans++;
  33. a[num][ans]=s[i];
  34. //printf("%c\n",a[num][ans]);
  35. }
  36. if(ans>5)
  37. {
  38. f=1;
  39. break;
  40. }
  41. }
  42. if(f==0)
  43. {
  44. ans++;
  45. a[num][ans]='\0';
  46. num++;
  47. }
  48. }
  49. printf("%d\n",num);
  50. for(i=0;i<num;i++)
  51. {
  52. for(j=1;a[i][j]!='\0';j++)
  53. printf("%c",a[i][j]);
  54. printf("\n");
  55. }
  56. return 0;
  57. }

发表评论

表情:
评论列表 (有 0 条评论,257人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ZZULIOJ-2258——name

                                                      name 题目描述 lpq同学最近突然对外国人的名字产生了兴趣,