黑马程序员技术交流社区

标题: 基础测试问题请教 [打印本页]

作者: wanderingman    时间: 2015-1-28 22:01
标题: 基础测试问题请教
本帖最后由 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 来实现循环输出 。只能实现一次,后面在选择判断处进入死循环。 请高手指点。



作者: 从今以后    时间: 2015-1-29 00:21
输入y回车后缓冲区有个\n下次会被fgets(m,100,stdin);直接读进去,正好借用下ch把\n收了就好了。
if (ch == 'y'|| ch == 'Y') {
            ch = getchar();
            continue ;
}




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