A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fudanxiaoan 中级黑马   /  2015-7-31 17:42  /  1228 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


/******** *** *************************************

7、输入一英文句子,将其中所有单词首字符转换成大写后输出。(C语言

**************************************************/
#include <ctype.h>
#include <string.h>
#include <stdio.h>

int main()
{
    char m[100] = {0};
   
    printf("请输入一英文句子:\n");
    fgets(m,100,stdin);
   
    for (int i = 0; i < 100; i++)
    {
        //若第一个数组元素为英文小写则改为大写,若为其他则不变
        if((i = 0) && islower(m[0]))
            m[0] = m[0] - 32;
        //第一个元素以后的元素若满足:是英文小写且前面非英文,则改为大写
        else if((!(isalpha(m[i-1]))) && islower(m))
            m= m -32 ;
    }
   
    fputs(m,stdout);
   
    return 0;
}

6 个回复

倒序浏览
你这不能用else if后面的语句有点问题,不能直接这么写的。因为当m=0时候,也会判断m[i-1]是否,则会出现段错误
回复 使用道具 举报
网页有问题啊。。。恢复的字怎么少 了几个。。。。
当i=0的时候回判断if语句,然后判断else if语句了。i-1就是-1了。数组越界了。

点评

谢谢了 不过好奇怪,改正了之后,为什么读取的都是大写呢??  发表于 2015-7-31 19:15
回复 使用道具 举报
m[0]改为m[i]

点评

主要问题不是这里呢  发表于 2015-8-6 21:48
回复 使用道具 举报

谢谢,已经解决了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马