有关数组switch语句c++的问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 22:55:04
用switch,编写,统计输入的一串字母中元音字母(a,e,i,o,u)的总个数和每个元音字母出现的次数,当输入#时,输入结束
我的程序是这样的,不知道哪里错了。谢谢

#include <iostream.h>
int main()
{
int a,e,i,o,u,sum;
a=e=i=o=u=sum=o;
char a[100];
for (int i=0;i<100;i++)
{
if(a[i]=='#')
break;
}
for(i=0;a[i]!='#';i++)
{
switch(a[i])
{
case 'a': a++;break;
case 'e': e++;break;
case 'i': i++;break;
case 'o': o++;break;
case 'u': u++;break;
default :;break;
}
}
sum=a+e+i+o+u;
cout<<a<<" "<<e<<" "<<i<<" "<<o<<" "<<u<<" "<<sum<<endl;
return 0;
}
请大家修改之后运行一下再跟帖,我忙了一下无这个程序了,很是郁闷...如有正确改正者,加分五十!!!!!!

#include <iostream.h>
int main()
{
int a,e,i,o,u,sum;
char c[100];
a=e=i=o=u=sum=0;
for (i=0;i<100;i++)
{
if(c[i]=='#')
break;
}
for(i=0;c[i]!='#';i++)
{
switch(c[i])
{
case 'a': a++;break;
case 'e': e++;break;
case 'i': i++;break;
case 'o': o++;break;
case 'u': u++;break;
default :;break;
}
}
sum=a+e+i+o+u;
cout<<a<<" "<<e<<" "<<i<<" "<<o<<" "<<u<<" "<<sum<<endl;
return 0;
}
你把0写为了o

没初始化,这导致局部变量无预期值~
另外,for(i=0;a[i]!='#';i++) ,这个语句有潜在的数组越界的危险,假如你的数组里没有一个'#',for循环就会一直执行下去,一直导致运行错误
我想你应该知道怎么改了吧

#include <iostream>
using namespace std;
int main()
{
int a,e,i,o,u,sum;
char