鱼C论坛

 找回密码
 立即注册
查看: 1789|回复: 11

[已解决]请问这个例子如何用for循环写出啦

[复制链接]
发表于 2018-12-24 16:24:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
写一个程序,统计用户输入的字符串中,各个元音字母出现的次数(包含大小写的 a、e、i、o、u)。
程序实现如图:
1.png
以下是我写的,但是所有值都是0,不知道哪里有问题,希望能给出一点建议
#include <stdio.h>

int main()
{
        char ch;
        int a=0,e=0,i=0,o=0,u=0;
        printf("请输入一个英语句子:");
        
        for (ch = getchar();getchar() != '\n';){
                if (ch == 'a' && ch == 'A')
                {
                        continue;
                        a++;
                }
                if (ch == 'e' && ch == 'E')
                {
                        continue;
                        e++;
                }
                if (ch == 'i' && ch == 'I')
                {
                        continue;
                        i++;
                }
                if (ch == 'o' && ch == 'O')
                {
                        continue;
                        o++;
                }
                if (ch == 'u'&& ch == 'U')
                {
                        continue;
                        u++;
                }
        }
        printf("您输入的句子中,包含元音字母%d个!\n",a+e+i+o+u);
        printf("其中:a(%d),e(%d),i(%d),o(%d),u(%d)\n",a,e,i,o,u);
        return 0;
}
最佳答案
2018-12-25 10:05:07
for循环有一点问题,一次循环getchar了两次,改成for(;(ch=getchar())!='\n;)或者是改成while((ch=getchar())!='\n)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-24 16:30:41 | 显示全部楼层
continue后面的部分是不执行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-24 16:42:46 | 显示全部楼层
先计数再continue........
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-24 16:42:47 | 显示全部楼层
continue这句语句执行后就退出当前循环进入下一个循环,你后面那句++就不会执行,所以就全都是0了,把a++,e++....放到continue前面就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-24 17:02:48 | 显示全部楼层
东辰木 发表于 2018-12-24 16:42
continue这句语句执行后就退出当前循环进入下一个循环,你后面那句++就不会执行,所以就全都是0了,把a++,e ...

放前面了,但还是全部为0,是什么情况?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-24 17:03:40 | 显示全部楼层
Mountain_gs 发表于 2018-12-24 16:30
continue后面的部分是不执行的

我把continue放在++后面了,但还是为0是什么情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-24 17:04:38 | 显示全部楼层
我叫MD 发表于 2018-12-24 17:02
放前面了,但还是全部为0,是什么情况?

是或运算||不是与运算&&,怎么可能同时大写和小写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-24 17:06:20 | 显示全部楼层
Charles未晞 发表于 2018-12-24 16:42
先计数再continue........

我把continue放在++后面了,但还是为0是什么情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-24 17:20:01 | 显示全部楼层
我叫MD 发表于 2018-12-24 17:06
我把continue放在++后面了,但还是为0是什么情况

判断里,是或运算||不是与运算&&,怎么可能同时大写和小写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-24 17:26:18 | 显示全部楼层
Charles未晞 发表于 2018-12-24 17:04
是或运算||不是与运算&&,怎么可能同时大写和小写

还是没有想要的运行结果 运行后 i(15),其余为0;实在想不通为什么,难道continue执行后,又从第一个字母开始重新运行了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-24 17:36:29 | 显示全部楼层
我叫MD 发表于 2018-12-24 17:26
还是没有想要的运行结果 运行后 i(15),其余为0;实在想不通为什么,难道continue执行后,又从第一个字 ...

貌似getchar()只获取第一个字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-25 10:05:07 | 显示全部楼层    本楼为最佳答案   
for循环有一点问题,一次循环getchar了两次,改成for(;(ch=getchar())!='\n;)或者是改成while((ch=getchar())!='\n)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-3 02:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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