首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一路关于计算ei出现次数的题目

2013-07-16 
一道关于计算ei出现次数的题目。编写一个程序读取输入,直到#,并报告序列ei出现的次数。以下是我编写的程序:

一道关于计算ei出现次数的题目。
编写一个程序读取输入,直到#,并报告序列ei出现的次数。
以下是我编写的程序:



不知该如何修改。请各位大大赐教。一路关于计算ei出现次数的题目分数不多了。。所以给的分有点少。希望不要嫌弃。。 谢谢...
[解决办法]
单数时无法结束是什么意思?
你说的这个误认并没有误认啊

if(count==1
[解决办法]
count==0)   //这是你写的,count无论是0和1都是输出1啊
        printf("'ei' has appearanced 1 time.");

[解决办法]
单数是什么意思,是你只输入一个字符码?如果是的话,应该getchar()没读到‘#’字符,当然不会结束
2。把
if(count==1
[解决办法]
count==0)
        printf("'ei' has appearanced 1 time.");
    else
    {
        printf("'ei' has appearanced %d times.",count);
    }
改为printf("'ei' has appearanced %d times.",count);就行
[解决办法]
单数时无法结束是因为你在一次循环中读了两次数据,但只有循环条件中有对结束输入的判断。
------解决方案--------------------


int main(void){
    int cur;//为了判断EOF,cur应该是整型
    char cur_low;
    char prev =0;
    char count=0;
    cur = getchar();//多写一个ch=getchar()并不复杂,没必要把它放在循环条件中
    while ((cur != EOF) && (cur != STOP)){//对输入应该增加EOF的判断
        cur_low = tolower(cur);
        if ((prev == MARK) && (cur_low == MARK_NEXT)){
       //第一次时prev是0,此后prev是上一次的cur_low,不要再去读取。
            count++;
        }
        prev = cur_low;
        cur = getchar();//多写一个ch=getchar()并不复杂,没必要把它放在循环条件中
    }
    if(count==1
[解决办法]
count==0)
        printf("'ei' has appearanced %d time.", count);
    else
    {
        printf("'ei' has appearanced %d times.",count);
    }
    return 0;
}

[解决办法]
问题的原因是你在while循环中又调用了getchar导致的.这个违背了你while循环的本意.

另外解决方法欠考虑,你应该记录上一个的值,然后判断当前取到的字符是否是i,
如果是i的话,判断上一个值是不是e.而不是判断当前是e,再判断下一个是否是i.

热点排行