问题是如果句子里面的单子如果有首字母本身是大写的,会转换成*呢??
//输入一英文句子,将其中所有单词首字符转换成大写后输出.
#include <stdio.h>
int main()
{
printf(" 请输入一段英文句子:\n");
char a[100];//定义一个数组接受字符串
char *p=a ;//定义一个指针指向数组a中的第一个元素
//保存用户输入的英文句子
scanf("%[^\n]",a );//可以存放除了\n外的其他所有字符
if(*p >='a' && *p <='z' ) //如果是小写就转换成大写
{
*p -= 32;
p++;
}
else if( *p >='A' && *p <='Z') // 如果大写就不转换
{
p++;
}
while (*p!='\0')//循环直到遇到\0
{
if (*p !=' ')//如果不为空格,就继续进行判断
{
p++;
}
else if(*p ==' ')//如果是了空格,就使空格后面的单词首字母变为大写
{
p++ ;
*p -=('a'-'A');
}
}
//打印转换后的a
printf("%s\n",a );
return 0;
} |
|