|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- int main()
- {
- int num1,num2,num3,num4,num5;
- char ch;
- printf("请输入一个英文句子:");
- while(ch = getchar() != '\n')
- {
- switch(ch)
- {
- case 'a':num1 = num1 + 1;break;
- case 'A':num1 = num1 + 1;break;
- case 'e':num2 = num2 + 1;break;
- case 'E':num2 = num2 + 1;break;
- case 'i':num3 = num3 + 1;break;
- case 'I':num3 = num3 + 1;break;
- case 'o':num4 = num4 + 1;break;
- case 'O':num4 = num4 + 1;break;
- case 'u':num5 = num5 + 1;break;
- case 'U':num5 = num5 + 1;break;
- }
- }
- printf("您输入的句子中共有元音字母%d个\n",num1+num2+num3+num4+num5);
- printf("你输入的句子中:a(%d),e(%d),i(%d),o(%d),u(%d)\n",num1,num2,num3,num4,num5);
- return 0;
- }
复制代码
运行如下,为什么只检索到了一个e???
- 请输入一个英文句子:I love FishC.com
- 您输入的句子中共有元音字母1个
- 你输入的句子中:a(0),e(1),i(0),o(0),u(0)
复制代码
问题出在这一行代码上:
- while(ch = getchar() != '\n')
复制代码
这是因为 != 运算符的优先级高于赋值运算符 = ,所以 ch 的值被赋为 getchar() != '\n' 的结果,而不是 getchar() 的返回值。
解决这个问题的方法是使用括号明确指定赋值运算符的优先级,将代码修改为:
- while((ch = getchar()) != '\n')
复制代码
这样就能正确地将 getchar() 的返回值赋给 ch ,并进行后续的判断和处理。
|
|