首字母变大写(曾经让我怀疑人生)

题目描述

输入一个只包含大小写英文字母和空格的句子,将每个单词的第一个字母改成大写字母。
输入

输入一个长度不超过100的英文句子。
输出

请输出按照要求改写后的英文句子。
样例输入 Copy

i like ACM

样例输出 Copy

I Like ACM
我改了好多次后的答案:

#include<stdio.h>
#include<string.h>
int main()
{
    char chuan[150];

    gets(chuan);
    int n,a;
    n=strlen(chuan);

    for(a=0; a<n-1; a++)//首字母是空格与不是空格都要考虑到,有时候之所以写的程序运行结果与所给的样例一样,但提交的时候不对往往是考虑的不全面
    {
        if(chuan[0]>='a'&&chuan[0]<='z')//首个字符不是空格的情况
            chuan[0]-=32;
        if((chuan[a]==' '&&chuan[a+1]!=' ')&&(chuan[a+1]>='a'&&chuan[a+1]<='z'))//此语句包含了首字母如果是空格的情况
        {
                  chuan[a+1]-=32;
        }
    }
    puts(chuan);

    return 0;
}

在此之前我提交过的答案,当然是有问题的

#include<stdio.h>
#include<string.h>
int main()
{
    char chuan[150];

    gets(chuan);
    int n,a;
    n=strlen(chuan);

    for(a=0; a<n-1; a++)//未考虑到首个字母不是空格而是小写字母的情况
    {
        if((chuan[a]==' '&&chuan[a+1]!=' ')&&(chuan[a+1]>='a'&&chuan[a+1]<='z'))
        {
                  chuan[a+1]-=32;
        }
    }
    puts(chuan);

    return 0;
}
#include<stdio.h>
int main()
{
    char chuan[150];

    gets(chuan);
    int n,i,a;
    for(i=0;chuan[i]!='\0';i++)
    {
        n++;
    }
    for(a=1; a<n; a++)//因为有a+1所以当a=n-1的时候,a+1则发生了越界
    {
        if(chuan[0]>='a'&&chuan[0]<='z')
            chuan[0]-=32;
        if(chuan[a]==' '&&chuan[a+1]!=' ')//未考虑到首个字符是空格的情况
        {
            if(chuan[a+1]>='a'&&chuan[a+1]<='z')
              {
                  chuan[a+1]-=32;
              }

        }
    }
    puts(chuan);

    return 0;
}

总结:以后写代码先写伪代码,仔细考虑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值