应该是基础测试题 我新手刚注册好 在家自学 OC还没学完不知道还能赶上12期不
试下 写的不好请大神纠正
思路:
创建一个字符串 接受字符串
循环输出
判断如果是字母和空格就进入循环
判断如果不是字母和空格就直接输出当前字符
判断首字母是否为小写 如果是就改成大写并且单词数+1
判断前一个字符和当前字符是不是空格如果是空格就输出当前空格 结束循环
判断前一个字符是否为空格 和当前字符是否为大写字母 如果是大写字母直接输出当前字符 结束循环 单词+1
判断前一个字符是否为空格 和判断额当前字符是否为小写字母 如果是小写改大写 单词+1
打印字符
打印换行
打印单词数量
int main(int argc, const char * argv[]) {
@autoreleasepool {
char ch[100];
int count = 0;
printf("请用美国输入法输入一句话...\n");
gets(ch);
for(int i = 0; ch[i]!='\0'; i++)
{
if((ch[i] >= 'a' && ch[i] <= 'z') || (ch[i] >= 'A' && ch[i] <= 'Z') || ch[i] == ' ')//如果是英文字母和空格进入 如果不是就直接输出
{
if(ch[0] >= 'a' && ch[0] <= 'z')//如果首字母是小写 就改成大写
{ count++;//单词数 +1 因为是判断字母前一个字符为空格的所以首歌单子要加1 如果首歌单词前面是空格 那么下面会自动+1的
ch[0]= ch[0] - 32;
}
else if(ch[i-1]== ' ' && ch[i] == ' ')//判断如果前一个字符时空格 当前字符也是空格name就输出空格 然后结束本次循环
{
printf(" ");
continue;
}
else if(ch[i-1] == ' ' && (ch[i] >= 'A' && ch[i] <= 'Z' ))
{ count++;//单词+1
printf("%c",ch[i]);
continue;
}
else if(ch[i-1] == ' ')//如果能到这里那就代表这个字符不是空格并且他前面的一个字符是空格
{
count++;//单词数+1
ch[i] = ch[i] - 32;//小写改成大写
}
printf("%c",ch[i]);//打印字符
}
else
{
printf("%c",ch[i]);//如果不是字母或者空格就直接输出
}
}
printf("\n");//打印换行
printf("这句话一共有%d个单词\n",count);//打印单词数
}
return 0;
}
|