6-2 每个单词的首字母改为大写 (12 分)

本题要求实现一个函数,将p所指字符串中每个单词的首字母字母改成大写,大写字母及非字母不变化。(这里的“单词”是指由一个或者多个空格隔开的字符串)。

函数接口定义:

 

void Conv( char *p );

其中 p 是用户传入的参数,函数将 p 所指字符串中每个单词的首字母改成大写。

裁判测试程序样例:

 

#include <stdio.h> void Conv( char *p ); int main() { char str[64]; gets(str); Conv(str); printf("After changing: %s", str); return 0; } /* 请在这里填写答案 */

输入样例1:

i am a student.

输出样例1:

After changing:   I Am A Student.

输入样例2:

There are 45 students in my class.

输出样例2:

After changing:   There Are 45 Students In My Class.
void Conv( char *p )
{
    if(*p>='a'&&*p<='z')
    {
        *p=*p-32;
        p++;
    }    
    while(*p!='\0')
    {
        if(*(p-1)==' '&&(*p>='a'&&*p<='z'))
        {
            *p=*p-32;
        }
        p++;
    }    
}    

关键就是如何识别首字母,想到上学期类似的题目中是比较该位的ascll码是否属于小写字母,同时上一位是否为“ ”,唯一有遗漏的地方是例子提示我们整句话的第一个字母也有可能是小写,就会遗漏,可以在最前面先检测首字母是否为小写。同时不要忘了小写转大写是-32(表中先大写后小写)。 

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值