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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wanderingman 中级黑马   /  2015-1-28 22:01  /  1216 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wanderingman 于 2015-1-28 22:04 编辑
  1. #include <ctype.h>
  2. #include <string.h>
  3. #include <stdio.h>

  4. int main()
  5. {
  6. while(1)
  7. {
  8.   char m[100] ;
  9.   char *p = m;
  10.   char ch ;
  11. printf("Please enter a sentence:\n");
  12.   fgets(m,100,stdin); // Get string from keyboard ,which is less than 100 bytes

  13.   if (isalpha(*p) && islower(*p))   // Check if the value of pointer is a lower alpha
  14.   {    *p = *p -32 ;  
  15.                      }   
  16.        p++;            
  17.       
  18.   while(*p)    //Not NULL then loop , convert the first alpha of a word to upper
  19.   {
  20.            if (islower(*p)&&!isalpha( *(p-1)))
  21.            {
  22.                     (*p) -= 32 ;
  23.            }
  24.                    p++;                           
  25. }
  26. fputs(m,stdout); // Print on the screen

  27. printf("\nDo you want to continue to convert?(y|n)\n");
  28. scanf("%c",&ch);
  29. if (ch == 'y'|| ch == 'Y')
  30.          continue ;
  31. else
  32.            break;
  33. }
  34.      
  35.   return 0;
  36. }                                                                        
  37.    
复制代码
输入一英文句子,将其中所有单词首字符转换成大写后输.
这是基础测试的一个题目,功能已经实现,想要通过判断Y|N 来实现循环输出 。只能实现一次,后面在选择判断处进入死循环。 请高手指点。


1 个回复

正序浏览
输入y回车后缓冲区有个\n下次会被fgets(m,100,stdin);直接读进去,正好借用下ch把\n收了就好了。
if (ch == 'y'|| ch == 'Y') {
            ch = getchar();
            continue ;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马