黑马程序员技术交流社区

标题: 让单词首字母大写且统计单词个数 [打印本页]

作者: wxh794708907    时间: 2015-7-23 09:08
标题: 让单词首字母大写且统计单词个数
如题 谁会做这个题 给我个思路也行 我还是希望能给我个代码 帮我注释一下 看了视频了 没看懂那个isword = 1是什么意思 我把老师的答案贴上 帮我分析下把
#include <stdio.h>
int main(int argc, const char * argv[]) {
   //定义变量
    char str[100];
    int isWord = 0;
    int count = 0; //统计单词的个数
    //提示用户输入字符串
    printf("请输入一个字符串:\n");
    //接收字符串,并保存到数组中
    gets(str);
    //循环取出每一个字符  遇到\0 循环结束
    for (int i=0; str[i]!='\0'; i++) {
        
        //判断
        if (str[i]==' ') {
            //把是否是单词标记改一下
            isWord = 0;  //这是一个标记,words=0表示是一个单词
        }else if(isWord == 0){
             //    当前循环 字符是空格 下次循环一定是一个单词
            count++;
            str[i] = str[i]-32; //减去32就大写了
            isWord = 1; // 让单词标志变为不是单词
        }
        
    }
    printf("单词个数:%d,字符串:%s\n",count,str);
   
    return 0;
}

作者: wxh794708907    时间: 2015-7-23 10:32
求大神解答
作者: 408205555    时间: 2015-7-23 10:46
给你说下思路你仔细想一下就知道了。
isword这个变量是用于标记。
count用来记录单词个数。

循环之前,先说一下,for循环的作用是统计单词的个数并让单词首字母大写。
刚开始循环的时候,因为isword==0.所以进入到else if代码块,这是让count+1,表示已经找到了第一个单词,并且让这个单词的首字母变成大写。执行完这两个操作后,让isword=1,如果不=1,还是=0,表示for循环每循环一次,都让count+1,这样的结果就是,这个单词有多少个字母,就让count加多少次,但是count是用来记录单词的个数而不是用来记录字母的个数的。所以我们要让这个标识换个值,告诉程序,这些字母属于一个单词。

第一个单词和第二个单词之间有一个空格,循环完第一个单词最后一个字母后,就会循环到这个空格,当循环到这个空格的时候我让标识isword=0,也就表示,从下一位开始,就开始循环一个新的单词了,并且是新的单词的首字母,这样isword=0了,下次循环的时候,还会进入到else if代码块,继续count+1,并且修改新单词的首字母等等操作。

如此循环,直至最后一个数据。
作者: liusuizuoyou    时间: 2015-7-23 10:52
isword = 1  意思是当前检查的字符不是空格        如果当前字符不为空格   先判断 isword ==0(前一个字符为空格)         
    如果成立的话  先把当前 字母 转换为 大写   然后再 isword = 1;
作者: wxh794708907    时间: 2015-7-23 18:33
408205555 发表于 2015-7-23 10:46
给你说下思路你仔细想一下就知道了。
isword这个变量是用于标记。
count用来记录单词个数。

非常感谢 说的很详细 懂了  真心厉害  我现在看了十二天视频了 但是感觉要我写程序写不出来 很苦恼 爱爱

作者: wxh794708907    时间: 2015-7-23 18:34
liusuizuoyou 发表于 2015-7-23 10:52
isword = 1  意思是当前检查的字符不是空格        如果当前字符不为空格   先判断 isword ==0(前一个字 ...

谢谢 我懂了
作者: 408205555    时间: 2015-7-23 18:40
wxh794708907 发表于 2015-7-23 18:33
非常感谢 说的很详细 懂了  真心厉害  我现在看了十二天视频了 但是感觉要我写程序写不出来 很苦恼 爱爱  ...

没基础学写代码很费劲的,慢慢来,多看多写就好了。思想比代码重要,代码是实现你思想的工具。
作者: wxh794708907    时间: 2015-7-23 18:42
408205555 发表于 2015-7-23 18:40
没基础学写代码很费劲的,慢慢来,多看多写就好了。思想比代码重要,代码是实现你思想的工具。 ...

我现在就是没有思想 感觉好烦啊  哎哎 真心学到后面感觉好累 都没激情了
作者: 408205555    时间: 2015-7-23 19:05
wxh794708907 发表于 2015-7-23 18:42
我现在就是没有思想 感觉好烦啊  哎哎 真心学到后面感觉好累 都没激情了  ...

别着急啊,你才看了12天的视频,没有基础那个IOS基础视频你得认认真真看一个月才行,基础打不好以后的课学起来很费劲的。耐心的去学,都弄懂了到时候你自己完整的写一套项目,那种感觉很爽的。坚持下去就好了。
作者: 小蜗牛0519    时间: 2015-7-23 20:26
顶一个 !!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2