黑马程序员技术交流社区
标题:
基础测试问题请教
[打印本页]
作者:
wanderingman
时间:
2015-1-28 22:01
标题:
基础测试问题请教
本帖最后由 wanderingman 于 2015-1-28 22:04 编辑
#include <ctype.h>
#include <string.h>
#include <stdio.h>
int main()
{
while(1)
{
char m[100] ;
char *p = m;
char ch ;
printf("Please enter a sentence:\n");
fgets(m,100,stdin); // Get string from keyboard ,which is less than 100 bytes
if (isalpha(*p) && islower(*p)) // Check if the value of pointer is a lower alpha
{ *p = *p -32 ;
}
p++;
while(*p) //Not NULL then loop , convert the first alpha of a word to upper
{
if (islower(*p)&&!isalpha( *(p-1)))
{
(*p) -= 32 ;
}
p++;
}
fputs(m,stdout); // Print on the screen
printf("\nDo you want to continue to convert?(y|n)\n");
scanf("%c",&ch);
if (ch == 'y'|| ch == 'Y')
continue ;
else
break;
}
return 0;
}
复制代码
输入一英文句子,将其中所有单词首字符转换成大写后输.
这是基础测试的一个题目,功能已经实现,想要通过判断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