因为字符串中有空格所以不能使用scanf函数来接收键盘输入的字符串,因为scanf遇到空格和回车结束输入,所以需要使用gets来接收键盘输出的字符串,接着依次判断并累加,最后输出即可。
参考代码:
#include
int main() {
int a=0,b=0,c=0,d=0,f=0,i;
char ch[100];
gets(ch);
for(i=0;ch[i]!='\0';i++)
{
if(ch[i]>='A'&&ch[i]<='Z')
a=a+1;
else if(ch[i]>='a'&&ch[i]<='z')
b=b+1;
else if(ch[i]==32)
c=c+1;
else if(ch[i]>='0'&&ch[i]<='9')
d=d+1;
else
f=f+1;
}
printf("a=%d,b=%d,c=%d,d=%d,f=%d\n",a,b,c,d,f);
return 0;
}
/*
asdfASDF ADSFDASGasdfads3214325a df
a=12,b=14,c=2,d=7,f=0
*/
#include
void main()
{
int a=0,b=0,c=0,d=0,f=0;
char ch; //这个是一个字符
scanf("%c",&ch); //即使你把ch声明成了一个字符串数组 scanf 遇到空格 就截断了
while(ch!='CR') //虽然你while了 即便ch 是字符串数组 但是没有后移 CR改为换行
{
if(ch>='A'&&ch<='Z')
a=a+1;
else if(ch>='a'&&ch<='z')
b=b+1;
else if(ch==32)
c=c+1;
else if(ch>='0'&&ch<='9')
d=d+1;
else
f=f+1;
scanf("%c",&ch);
}
printf("a=%d,b=%d,c=%d,d=%d,f=%d\n",a,b,c,d,f);
}
题目要求的是输入一串字符串,而你并没有一个一个去判断是什么。下面是代码,希望可以帮助到你。
#include
#include
using namespace std;
void main()
{
char string[30];
int character=0,number=0,space=0,other=0;
int i=0;
cin.get(string[0]);
while (string[i++]!='\n')
{
cin.get(string[i]);
//i++;
}
i=0;
while(string[i]!='\n')
{ if (string[i]>='0'&&string[i]<='9') number++;
else if ((string[i]>='A'&&string[i]<='Z')||(string[i]>='a'&&string[i]<='z')) character++;
else if(string[i]==' ') space++;
else other++;
i++;
}
cout<<"字母个数"<
while(ch!='CR')
//改为:
while(ch!='\n')
'CR'应该是字符串吧,问题是你声明存放是各变量,只能存一个数,必须声明数组存放字符串