| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3053 人关注过本帖
标题:改成大写字母
只看楼主 加入收藏
Justinlong
Rank: 2
等 级:论坛游民
帖 子:19
专家分:13
注 册:2012-3-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
改成大写字母
小弟刚开始学c,开始时候还可以,也没发现什么问题,但最近有一道题,真的伤脑筋。
题目是这样的:从键盘输入一行英文句子,输出到屏幕上,并将每个单词的首字符改写成大写字母(仅改写首字符为英文字母的单词)。
开始时我是这样的思路的:每个单词前面肯定会有空格,所以当有空格时,就把后面的一个字符改成大写字母(除了第一个单词的第一个字符)可是想了好久都不能想到怎么把它实现。。。怎一个无奈了得。。。
高手们,小弟恳请你们高抬贵手,教教我,小弟定当万分感激,谢谢。
补充:最好能够用初学者的只是教我,因为神马指针的,我还没学呀》》
搜索更多相关主题的帖子: 单词 英文字母 英文句子 神马 
2012-03-27 13:27
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
把你的代码贴上来

总有那身价贱的人给作业贴回复完整的代码
2012-03-27 13:35
唯佳
Rank: 2
等 级:论坛游民
帖 子:42
专家分:44
注 册:2012-1-11
收藏
得分:0 
看看标准库 查查ctype.h的用法

宁静致远
2012-03-27 22:19
Eilliot
Rank: 6Rank: 6
等 级:侠之大者
帖 子:41
专家分:418
注 册:2012-3-26
收藏
得分:0 
你也可以这么想 a和A的ASCLL 差多少
2012-03-27 22:44
sunqing
Rank: 2
来 自:重庆市
等 级:论坛游民
帖 子:28
专家分:55
注 册:2012-3-8
收藏
得分:0 
定一个变量如“int flag=0;”,若c=grtchar();为空格,则使flag=1;后面加if语句若flag=1;则使空格后第一个不为空格的字符+32,直至遇到\0结束整个循环,
2012-03-27 23:46
jj369258
Rank: 4
等 级:业余侠客
帖 子:116
专家分:226
注 册:2010-12-2
收藏
得分:5 
回复 楼主 Justinlong
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    char *str;
    str=(char *)malloc(sizeof(char));
    int i=0;
    gets(str);
    while(i<strlen(str))
    {
        if(i==0)
            str[i]=str[i]-'a'+'A';
        else if((str[i-1]==' ')&&(str[i]!=' '))
            str[i]=str[i]-'a'+'A';
        i++;
    }
    printf("%s\n",str);
    return 0;
}
2012-03-28 13:13
菜鸟7号
Rank: 2
等 级:论坛游民
帖 子:21
专家分:17
注 册:2011-8-29
收藏
得分:0 
以下是引用sunqing在2012-3-27 23:46:42的发言:

定一个变量如“int flag=0;”,若c=grtchar();为空格,则使flag=1;后面加if语句若flag=1;则使空格后第一个不为空格的字符+32,直至遇到\0结束整个循环,
精辟!
2012-03-28 17:24
cdutzh101
Rank: 2
等 级:论坛游民
帖 子:43
专家分:64
注 册:2009-8-20
收藏
得分:5 
#include
#include
#include
int main()
{
    int len,flag=1,i=0;
    char str[80];
    gets(str);
    len=strlen(str);  //测试字符串长度
    for(i=0;i<LEN;I++)
    {
      if(flag==1)  // 标志为1,则执行小写变大写
      {str[i]=str[i]-'a'+'A';  //自己的ASCII减去a的值就是相差的值,再加A,就得到小写变大写.
       flag=0;                  //让标志变为0
      }
      else if(str[i]==' ')   ///当遇到空格,让标志
      {
         flag=1;
      }

    }
    puts(str);
}
2012-03-28 21:24
魏新建
Rank: 2
等 级:论坛游民
帖 子:55
专家分:86
注 册:2012-2-17
收藏
得分:0 
学习了
2012-03-28 22:19
zhangxiangD
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:119
注 册:2011-12-20
收藏
得分:5 
该程序只对空格隔开的单词有效,若以标点隔开,则不行。
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
    char str[100];
    printf("输入该字符串:\n");
    gets(str);
    if(isalpha(str[0]))
    str[0]=str[0]-'a'+'A';
    for(int i=1;i<strlen(str);i++)
    {
        if(str[i]==' '&&isalpha(str[i+1]))
        str[i+1]=str[i+1]-'a'+'A';
    }
    printf("修改后的字符串为:\n");
    puts(str);
    return 0;
}
2012-03-28 23:32
快速回复:改成大写字母
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044338 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved