A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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. }
复制代码


3 个回复

倒序浏览
谢谢分享。
回复 使用道具 举报
谢谢分享。
回复 使用道具 举报
知道scanf的另一种用法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马