计算字符数组中的1的数量

时间:2015-06-10 03:58:17

标签: c arrays comparison character

我试图用递归类型程序计算表示二进制数的字符数组中的1的数量。但是,似乎我的程序只是计算数组中的字符数。我不知道我是否只是在比较错误与否,但我似乎无法找到问题

#include <stdio.h>
# include <stdlib.h>
#include <string.h>
#define SIZE 20

int determine (char array[SIZE], int count, int track );

int main()
{ 
int answer = 0; 
char input[SIZE]={"1001001"};
int count = 0;
int track = 0;

answer = determine(input, count, track);

 printf("The number of 1's is %d ", answer);

system("PAUSE");
return 0;
 }

 int determine(char array[], int count, int track)
{   

 if (array[track] != '\0')
 {
    if ( array[track] == '1');
    {
         count++;
    }
    return determine(array, count, track = track+1);    
 }
 else 
 {
      return count;
 }
}

3 个答案:

答案 0 :(得分:11)

方法determine()

if ( array[track] == '1');

删除分号;。分号使if条件执行empty块。因此,count++始终会执行if条件是否成功(true)或不成功(false)。

我使用;运行您的代码并获取输出:

  

1的数量是7

没有;

  

1的数量是3

答案 1 :(得分:3)

Rectangle2D.Double rect = new Rectangle2D.Double(double x, double y, double w, double h);
System.out.println(rect.intersectsLine(new Line2D.Double(double xA, double yA, double xB, double yB)));

应该是

if ( array[track] == '1');

删除if ( array[track] == '1')

如果你有;,那么无论条件评估结果如何(TRUE或FALSE);都会被执行

答案 2 :(得分:-1)

您是否尝试过简单的countif功能?

= sum if(range =“1”)