我试图用递归类型程序计算表示二进制数的字符数组中的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;
}
}
答案 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”)