c语言输入一行带空格字符串,输出其中以p或P开头的单词,每个单词一行.

如题所述

VS2012 可测
int _tmain(int argc, _TCHAR* argv[])
{
char inputStr[1024] = "";
char *cur = NULL;
bool valid = false;

gets(inputStr);
for(cur = inputStr; *cur; cur++)
{
if(' ' == *cur)
{
if(valid) if(valid) printf("%s", "\r\n");

valid = false;
continue;
}

if('p' == *cur || 'P' == *cur)
{
if(!valid) valid = true;
}

if(valid) printf("%c", *cur);
}

scanf("%s", inputStr);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-02
思路:先定义一个变量f用来标记是否是单词的开始位置,如果是开始位置就输出大写字母,并把f标记成false,如果遇到空格,就把f标记成true。依次遍历字符串即可。参考代码:#include "stdio.h" int main() {char a[100];int i;bool f=true;gets(a);for(i=0;a[i]!='\0';i++) {if(f){printf("%c",a[i]-32);f=false;}elseprintf("%c",a[i]);if(a[i]==' ')f=true;}return 0;}/*运行结果:i love youI Love You*/