首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请高手帮忙看一下这个程序解决方案

2012-02-17 
请高手帮忙看一下这个程序#includestdio.hmain(){char aint i0,j0while(1){scanf(%c,&a)if(a48

请高手帮忙看一下这个程序
#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;
}

热点排行