输入一组字符串,统计该字符串中数字、字母、空格、其他的数量,求C++大神帮助,看我错哪儿了!!

#include<iostream>
using namespace std;
int main()
{
char a[80];
int i=0,s=0,t=0,z=0,v=0;
cout<<"输入字符串:"<<endl;
for(i=0;i<=80;i++)
cin>>a[i];
gets(a);
for(i=0;i<=80;i++)
if(a[i]>='0'&&a[i]<='9')
s++;
else if(a[i]>='A'&&a[i]<='Z'||a[i]>='a'&&a[i]<='z')
t++;
else if(a[i]==' ')
z++;
else
v++;
cout<<"数字:"<<s<<' '<<"字母:"<<t<<' '<<"空格:"<<z<<' '<<"其他:"<<v<<endl;
return 0;
}

#include<iostream>

using namespace std;

int main()

{

 char a[80];

 int i=0,s=0,t=0,z=0,v=0;

 cout<<"输入字符串:"<<endl; 

 //for(i=0;i<=80;i++)

  //cin>>a[i];

 gets(a);

   for(i=0;i<=80;i++)

   {

  if(a[i]>='0'&&a[i]<='9')

   s++;

  else if(a[i]>='A'&&a[i]<='Z'||a[i]>='a'&&a[i]<='z')

   t++;

  else if(a[i]==' ')

   z++;

  else

   v++;

   }

  cout<<"数字:"<<s<<' '<<"字母:"<<t<<' '<<"空格:"<<z<<' '<<"其他:"<<v<<endl;

  return 0;

}


注释掉我上面注释的那两句就好啦

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-05
#include<iostream>
using namespace std;
int main()
{
char a[80];
int i=0,s=0,t=0,z=0,v=0;
cout<<"输入字符串:"<<endl;
gets(a);
for(i=0;a[i]!='\0';i++)
{if(a[i]>='0'&&a[i]<='9')
s++;
else if(a[i]>='A'&&a[i]<='Z'||a[i]>='a'&&a[i]<='z')
t++;
else if(a[i]==' ')
z++;
else
v++;}
cout<<"数字:"<<s<<' '<<"字母:"<<t<<' '<<"空格:"<<z<<' '<<"其他:"<<v<<endl;
return 0;
}

注意for循环语句最好用 a[i]!='\0'判断,因为这样不会计入多余的数组空间;
for 循环后要加{ }
删去cin那个循环,因为与后面的gets(s);重复。
还有,数组有80个元素,但是因为从a[0]开始,因此只到a[79]本回答被提问者采纳
第2个回答  2013-05-05
#include<iostream>
using namespace std;
int main()
{
char a[80];
int i=0,s=0,t=0,z=0,v=0;
cout<<"输入字符串:"<<endl;
// for(i=0;i<=80;i++) cin>>a[i]; 这句没用,去掉
gets(a);
//for(i=0;i<80;i++) //0-79共80个字符,去掉等号
for( i=0;a[i]!='\0';i++ ) //从0位开始,直到串结束位置检查
if(a[i]>='0'&&a[i]<='9')
s++;
else if( (a[i]>='A'&&a[i]<='Z') || (a[i]>='a'&&a[i]<='z') )
t++;
else if(a[i]==' ')
z++;
else
v++;

cout<<"数字:"<<s<<' '<<"字母:"<<t<<' '<<"空格:"<<z<<' '<<"其他:"<<v<<endl;
return 0;
}
相似回答