黑马程序员技术交流社区

标题: 输入英文语句,单词首字符转换大写后输出 [打印本页]

作者: huh    时间: 2016-1-1 09:37
标题: 输入英文语句,单词首字符转换大写后输出
  1. /*
  2. main.m
  3. 输入英文语句,单词首字符转换大写后输出
  4. 分析:
  5. 如何判断英文语句里面,哪些是单词?空格两边得都是单词
  6. 如何判断单词的首字母为大写?*p>='A'
  7. 语句的首字母判断,
  8. 1)为空,继续循环
  9. 2)大写,继续循环
  10. 3)小写,转换为大写!(*p-32)
  11. 如果检测到了空格就使下一个字母变为大写!()
  12. 注意:
  13. gets() 和scanf()的区别
  14. 1.不同点:
  15. scanf不能接受空格、制表符Tab、回车等;
  16. 而gets能够接受空格、制表符Tab;
  17. 2.相同点:
  18. 字符串接受结束后自动加'\0'。

  19. *p 和 p 的区别
  20. p存放的是地址,
  21. *p是让程序去那个地址取出数据
  22. */
  23. #import <Foundation/Foundation.h>

  24. int main(int argc, const char * argv[]) {
  25.     printf("请输入英文...\n");
  26.     char a [100];
  27.     char *p = a;
  28.     gets(p);//scanf( "%[^\n]", c); 表示可以存放除了 \n 外的其他所有字符。
  29.    
  30.     //语句的首字母判断
  31.     if(*p==' '){//是空格
  32.         p++;
  33.     }else if(*p>='A'&&*p<='Z'){//是大写
  34.         p++;
  35.     }else if(*p>='a'&&*p<='z'){
  36.         *p-=32;//*p = *p-32
  37.         p++;
  38.     }
  39.     while (*p!='\0') {//语句没结束,就循环
  40.         if(*p!=' '){
  41.             p++;
  42.         }else if(*p ==' '){
  43.             p++;
  44.             if (*p>='a' && *p<='z') {
  45.                 *p-=32;
  46.             }
  47.         }
  48.     }
  49.     puts(a);//打印
  50.     return 0;
  51. }
复制代码



作者: 15931110616    时间: 2016-1-1 11:02
谢谢分享。
作者: zf147    时间: 2016-1-1 22:08
谢谢分享。
作者: foolishlovepig    时间: 2016-1-1 22:35
知道scanf的另一种用法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2