标题:这个问题要你输入字符并统计'ei'出现的次数。问题如下:
只看楼主
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
结帖率:90.38%
已结贴  问题点数:20 回复次数:4 
这个问题要你输入字符并统计'ei'出现的次数。问题如下:
程序代码:
#include<stdio.h>
int main(void){
    char ch;
    char last_ch=0;           //这行的作用是什么?为什么要将lash_ch赋值为0?
    int count=0;
    while((ch=getchar())!='#'){
        if((ch=='i')&&(last_ch=='e'))
            count++;
        last_ch=ch;           //这行的作用是什么?为什么要last_ch=ch
    }
    printf("%d",count);
    return 0;
}
搜索更多相关主题的帖子: count 次数 字符 输入 出现 
2019-10-11 12:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
要不你自己写一个?
即使你不会C语言,你也可以用中文将逻辑描述清楚。
2019-10-11 14:20
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
以下是引用rjsp在2019-10-11 14:20:28的发言:

要不你自己写一个?
即使你不会C语言,你也可以用中文将逻辑描述清楚。

我写了这段,但是无法统计'ei'出现的次数。问题出在哪?该如何修改?
程序代码:
#include<stdio.h>
int main(void){
    int count=0;
    int inword=0;
    char ch;
    while((ch=getchar()!='#')){
        if((ch=='e')&&(inword==0))
            inword=1;
        else 
            if(!(ch=='i'))
                continue;
            else 
                if((ch=='i')&&(inword==1)){
                    count++;
                    inword=0;
                }            
    }
    printf("ei的个数有%d个",count);
    return 0;
}
2019-10-11 21:29
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
得分:10 
同意二楼的说法。当你面对这个问题时,先想想自己会怎么做,再怎么,最后怎么才算结束。
不需要把别人的想法强加给自己,适当的理解,变通。
首先看到问题是计算“ei”的次数,这时脑子里应该有一些方法告诉你先找到“ei”再计算“ei”的数量。然后先是如何找‘ei’,慢慢细化步骤写出自己的算法。
if((ch=='i')&&(last_ch=='e'))

是先判断“ch==‘i’”为真,然后再判断last_ch的值是否为‘e’。只有当ch为‘i’的时候才判断last_ch是否为‘e’。
两者真“count++”,为假数量不变。之后将ch赋值给last_ch,并将下一个字符送给ch,直到出现结束标志。
一个变量在定义的时候未进行初始化,它的值是不确定的(任意值),未对其赋值前直接使用可能会产生异常(指针变量的情况更加严重)。

char last_ch=0;           //这行的作用是什么?为什么要将lash_ch赋值为0?

如果last_ch不赋值,直接使用,可能出现“last_ch==‘e’”的情况。
至于给last_ch赋什么值是看你的情况的,题目是计算‘ei’则不要用‘e’或‘i’赋值,自找麻烦。


[此贴子已经被作者于2019-10-11 21:52编辑过]

2019-10-11 21:47
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
得分:0 
回复 3楼 hffjhhh
if语句嵌套有问题,其实你可以一步一步的判断答案,没必要这样用if嵌套语句,多了容易出错,而且回过头来也不容易找出问题点。最后加个注释,或者大括号区分。
if语句只是判断真假,真执行if后面的语句,假则执行else后面的语句。无法即执行if后面的语句有执行else后面的语句。
2019-10-11 22:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497186-1-1.html




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

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