鱼C论坛

 找回密码
 立即注册
查看: 2218|回复: 2

[已解决]小白又来求助了,路过的大神帮忙调教下

[复制链接]
发表于 2018-2-20 11:42:20 | 显示全部楼层 |阅读模式
30鱼币
这段代码是正确的,就是想知道该代码的执行流程是怎么样的,字符变量 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;
} 
最佳答案
2018-2-20 11:42:21
本帖最后由 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序列是否是紧挨着的

最佳答案

查看完整内容

过程是这样的,如果输入的是'aeiad',getchar()一次接收一个值,shuru2 ='a',此时shuru1=0,不符合判断条件, 往下执行,shuru1 = shuru2 = 'a',接着接收'e',shuru2 ='e',shuru1='a',不符合判断条件,接着向下执行,shuru1 =shuru2 = 'e',接着接收'i', shuru2= 'i',符合判断条件,次数+1,同理往下执行。 shuru1在这里边起一个中间变量的作用,把输入的值也就是shuru2的值暂时放入shuru1里边,因为一执行完判断立刻就执 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-20 11:42:21 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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序列是否是紧挨着的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-20 15:18:44 | 显示全部楼层
inverseli 发表于 2018-2-20 14:02
过程是这样的,如果输入的是'aeiad',getchar()一次接收一个值,shuru2 ='a',此时shuru1=0,不符合判断 ...

噢,原来是这样,俺还以为时候一次性读取一个字符串呢,谢谢你哈。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-29 09:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表