小白又来求助了,路过的大神帮忙调教下
这段代码是正确的,就是想知道该代码的执行流程是怎么样的,字符变量 shuru1 的作用是啥#include <stdio.h>//统计 序列 ei 出现的次数
int main(void)
{
char shuru1 = 0, shuru2;
int cishu = 0;
printf("请输入一个带有 ei 序列的英文句子:\n");
while((shuru2 = getchar()) != '#')
{
if(shuru1 == 'e' && shuru2 == 'i')
{
cishu++;
}
shuru1 = shuru2;
}
printf("输入的英文句子中 序列 ei 共出现了 %d 次 \n", cishu);
getch();
return 0;
} 本帖最后由 inverseli 于 2018-2-20 14:05 编辑
#include <stdio.h>
//统计 序列 ei 出现的次数
int main(void)
{
char shuru1 = 0, shuru2;
int cishu = 0;
printf("请输入一个带有 ei 序列的英文句子:\n");
while((shuru2 = getchar()) != '#')#当输入#号时,输入结束
{
if(shuru1 == 'e' && shuru2 == 'i')#进入判断,
{
cishu++;
}
shuru1 = shuru2;
}
printf("输入的英文句子中 序列 ei 共出现了 %d 次 \n", cishu);
getchar();
return 0;
}
过程是这样的,如果输入的是'aeiad',getchar()一次接收一个值,shuru2 ='a',此时shuru1=0,不符合判断条件,
往下执行,shuru1 = shuru2 = 'a',接着接收'e',shuru2 ='e',shuru1='a',不符合判断条件,接着向下执行,shuru1 =shuru2 = 'e',接着接收'i',
shuru2= 'i',符合判断条件,次数+1,同理往下执行。
shuru1在这里边起一个中间变量的作用,把输入的值也就是shuru2的值暂时放入shuru1里边,因为一执行完判断立刻就执行shuru1 = shuru2,
这样可以判断ei序列是否是紧挨着的 inverseli 发表于 2018-2-20 14:02
过程是这样的,如果输入的是'aeiad',getchar()一次接收一个值,shuru2 ='a',此时shuru1=0,不符合判断 ...
噢,原来是这样,俺还以为时候一次性读取一个字符串呢{:10_266:},谢谢你哈。。。。
页:
[1]