读书人

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

发布时间: 2013-07-16 22:38:05 作者: rapoo

一道关于计算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.

读书人网 >C语言

热点推荐