[问题描述]
[解题思路]
读取字符串时,用scanf()读入,会自动忽略空格,根据字符串的内容来判断是否大写,如果是第一个字母,则默认其前面有一个'.',故大写;如果','或者 '!'后面是小写字母,则变为大写字母 。输出时,两个字符串之间,再添加一个空格
[代码实现]
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
char s[100][100];
char c,ch;
int i,j,count;
count=0;
/*读入字符串,直到没有输入内容。并记下读取字符串的个数(读取到的字符串没有空格) */
while(scanf("%s",&str)!=EOF)
{
strcpy(s[count],str);
count++;
}
c='.';/*默认第一个字符串前是一个'.' ,c变量是用来记录当前字符的上一个字符 */
for(i=0;i<count;i++)
{
for(j=0;j<strlen(s[i]);j++)
{
/*如果上一个字符是'.', '!'则判断当前字符是否为小写字母,如果是,则变为大写*/
if(c=='.' || c=='!')
{
ch=s[i][j];
if(ch>=97 && ch<123)
{
ch=ch-32; /*变为大写减32*/
s[i][j]=ch;
}
}
c=s[i][j];
}
/*两个字符串之间用1个空格隔开,最后一个字符串后面没有空格 */
if(i<count-1)
printf("%s ",s[i]);
else printf(s[i]);
}
return(0);
}