[关闭]
@sensitive-cs 2016-10-04T23:17:16.000000Z 字数 569 阅读 837

I - cAPS lOCK

分析:

满足条件的字符串是字母全部为大写字母,或者除了第一个字母都是大写的字符串。转换的规则是反转,即大写变小写,小写变大写。

思路:

对于一个字符串首先判断是否符合规则:只需判断除了带一个字母以外的字母是否全部为大写。然后符合条件的用大写字母与小写字母的ascii码之差进行转换。

代码:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. char a[110];
  5. while (scanf("%s",a) != EOF)
  6. {
  7. int n = 0,i = 0;
  8. int flag1 = 0,flag2 = 1,flag3 = 0;
  9. while (a[n] != '\0')
  10. n++;
  11. if (a[0] >= 'a' && a[0] <= 'z')
  12. flag1 = 1;
  13. for (i = 1;i < n;i++)
  14. {
  15. if (a[i] >= 'A' && a[i] <= 'Z')
  16. flag2++;
  17. }
  18. for (i = 0;i < n;i++)
  19. {
  20. if (a[i] >= 'A' && a[i] <= 'Z')
  21. flag3++;
  22. }
  23. if (flag1 == 1 && flag2 == n)
  24. {
  25. for (i = 0;i < n;i++)
  26. {
  27. if (i == 0)
  28. a[i] -= ('a' - 'A');
  29. else
  30. a[i] += ('a' - 'A');
  31. }
  32. }
  33. else if (flag3 == n)
  34. {
  35. for (i = 0;i < n;i++)
  36. a[i] += ('a' - 'A');
  37. }
  38. printf("%s\n",a);
  39. }
  40. return 0;
  41. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注