输入一行字符串,将每个单词的第一个字母改成大写字母
问题描述:
我打的代码不知道是哪的问题,从结果来看好像是没有循环
口“D:\Test\Debug\Test.exe 口 X
Input a line char:I am a student
Press any key to continue
答
*p -=32 的条件应该是 flag==1 并且 *p >='a',而且flag的初始值应该是1,否则第一个单词就没法更改了。
flag=1的条件应该是 *p == ' '
代码修改如下:
#include <stdio.h>
int main()
{
int flag = 1; //这里初始化为1
char str[80],*p = str;
printf("Input a line char:");
gets(str);
while(*p != '\0')
{
if (*p>='a' && flag==1)
{
*p -= 32;
flag = 0;
}else if (*p == ' ')
{
flag = 1;
}
p++;
}
puts(str);
return 0;
}
答
#include<stdio.h>
int main()
{
char str[200],*p;
gets(str);
p=str;
if(*p>='a'&&*p<='z') *p=*p-32;
while(*++p!='\0')
{
if(*(p-1)==' ')
{
if(*p>='a'&&*p<='z') *p-=32;
}
else if(*p>='A'&&*p<='Z') *p+=32;
}
puts(str);
return 0;
}