请高手帮忙看一下这个程序
#include<stdio.h>
main()
{
char a;
int i=0,j=0;
while(1)
{
scanf("%c",&a);
if(a>=48&&a<=57)
i++;
if(a<48||a>57&&a!='*')
j++;
if(a=='*')
break;
}
printf("%d\n",i);
printf("%d\n",j);
}
求的是输入一串字符中字母的个数和数字的个数,最后以星号跳出。(星号计算在内)
为什么这里的j赋的值是0而不是1?
[解决办法]
- C/C++ code
#include<stdio.h>void main(){ char a; int i=0,j=0; while(1) { scanf("%c",&a); if(a>=48&&a<=57) { i++; } else if(a<48||a>57) { j++; } if(a=='*') { break; } } printf("%d\n",i); printf("%d\n",j);}
[解决办法]
呵呵,一起交流下,我觉得按照lz要求:输入一串字符中字母的个数和数字的个数,最后以星号跳出。(星号计算在内)
需要将字母和数字统计,所以对于除了大写/小写字母、数字以外的字符应该不算作统计的,修改了一下,这样是否可以?请各位高手拍拍砖:
#include<stdio.h>
#include <conio.h>
void main()
{
char a;
int i=0,j=0;
while(1)
{
scanf("%c",&a);
/*数字个数*/
if(a>='0'&&a<='9')
{
i++;
}
/*字母个数*/
else if(((a<='z') && (a>='a')) || ((a<='Z')&&(a>='A')))
{
j++;
}
/*其他字符不统计*/
/*退出符*/
if(a=='*')
{
break;
}
}
printf("%d\n",i);
printf("%d\n",j);
getch();
return;
}