为啥输入0了还没结束

描述
N为正整数,计算从1到N的所有整数中包含数字1的个数。比如,N=10,从1,2...10,包含有2个数字1。

输入
输入数据有多组测试数据,每一组占一行,每行为一个数字N,其中1≤N≤99999。以0作为结束。

输出
输出1到N所有整数中1的个数,每个测试占一行。
#include
#include
#include
int main()
{
char a[1000],b[1]={'\0'};
int i=0,j;
int c=0;
while(gets(a)!='\0')
{
i=strlen(a);
if(strcmp(a,b)==0)
break;
for(j=0;j<=i;j++)
{
if(a[j]=='1')
c++;
}
printf("%d\n",c);
}
return 0;
}

使用while(gets(a)!=NULL),按回车结束。(getchar可以用输入等于0结束)。

img

源码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char a[1000],b[1]={'\0'};
int i=0,j;
int c=0;
while(gets(a)!=NULL)
{
i=strlen(a);
if(strcmp(a,b)==0)
break;
for(j=0;j<=i;j++)
{
if(a[j]=='1')
c++;
}
printf("%d\n",c);
}
return 0;
}

img


想输入0停下的话加个判定就可以了